为 Stick 会话配置 HAProxy

为 Stick 会话配置 HAProxy

我在 Debian 6 Squeeze 上安装了 Pound(用于 SSL 卸载)和 HAproxy。我正在尝试理解 HAProxy 文档以设置粘性会话,因为此负载平衡器将位于 Web 应用程序的前面。

我也在 Server Fault 中查看了其他人为粘性会话配置 HAProxy 的方法;我在互联网上看到的最明显的方式是类似这样的声明backend

balance roundrobin
stick store-request src 
stick-table type ip size 200k expire 2m
server web1 10.0.0.2:8080 check
server web2 10.0.0.3:8080 check

我见过的另一种不太常见的方法是使用选项appsession,如文档所述这里

我应该使用哪一个,还是两个都用?为什么?

谢谢。

答案1

这取决于什么最适合您的应用程序。如果您的 Web 应用程序使用 cookie 进行会话跟踪,那么 appsession 是一种很好的方法。但是,如果您的网站使用 SSL/TLS 并且加密在后端,那么 haproxy 无法读取 cookie,您必须使用 IP。由于您使用 pound 卸载 SSL(假设它在 haproxy 前面),所以这对您来说应该不是问题。

或者,如果您的会话状态完全存储在 cookie 中或后端服务器之间共享的存储(即您的数据库)中,那么您根本不需要粘性。

您在示例中没有看到 appsession 被大量使用的原因可能是它比 IP 粘性的工作量稍微大一些,而且并不总是值得付出努力,特别是因为现在几乎所有东西都将会话状态存储在共享存储中。

相关内容