我在 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 粘性的工作量稍微大一些,而且并不总是值得付出努力,特别是因为现在几乎所有东西都将会话状态存储在共享存储中。