我已经在 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
,如 docmented here所示。
我应该使用哪个,或两者都使用?为什么?
谢谢你。
这取决于什么最适合您的应用程序。如果您的 Web 应用程序使用 cookie 进行会话跟踪,那么 appsession 是一种很好的方法。但是,如果您的站点使用 SSL/TLS 并且加密在后端进行,那么 haproxy 无法读取 cookie,您必须使用 IP。因为你用磅卸载 SSL(假设它在 haproxy 前面)那么这对你来说应该不是问题。
或者,如果您的会话状态完全存储在 cookie 中或后端服务器(即您的数据库)之间共享的存储中,那么您根本不需要粘性。
您在示例中没有看到 appsession 使用得那么多的原因可能是它比 IP 粘性稍微多一些工作,并不总是值得付出努力,特别是因为现在几乎所有东西都将会话状态存储在共享存储中。