我从堆栈溢出中交叉发布这个,因为有人建议我可能会在这里得到更好的答案......
我想知道是否有人使用 HAProxy 进行分片。具体来说,我希望能够使用我定义的带有标识符的 cookie,并将任何呈现该 cookie/标识符组合的客户端定向到同一服务器。这似乎是可能的,我的初步测试似乎有效,但我不确定。
我的监听配置如下:
listen appli1-rewrite 0.0.0.0:80
cookie mysession= prefix
balance roundrobin
server app1_1 192.168.0.1:80 cookie server01
server app1_2 192.168.0.2:80 cookie server02
option httpclose
但是,当我使用 Live Http Headers 查看请求标头时,我看不到 mysession cookie 指示它将去哪个服务器,这是我基于前缀操作所期望的。我对 HAProxy 很陌生,所以任何帮助/指导都会很棒!
首先,删除 cookie 名称后的等号,否则永远不会匹配。其次,请确保您的服务器正确设置“mysession”cookie,因为cookie前缀模式依赖于服务器设置cookie。如果没有,请改用插入模式。第三,请在您的配置中添加“选项 httpclose”,因为如果有任何类型的 keepalive,haproxy 将看不到 cookie(或无法破坏它)。
希望这会有所帮助,
威利
你的配置没问题。您可以在日志中检查客户端提供的 cookie 是否已被识别和使用。它将字母“V”放在 4 字符状态标志的第一个位置(例如:VN--)。没有有效 cookie 的第一个请求将改为使用“N”。请查看文档以获取更多信息,您将在第 8.5 节中获得所有信息。您还可以启用统计页面并在浏览时检查它们。您应该会看到,“LbTot”列对于每个新客户端仅增加一次,并且对于同一客户端不再增加。
您可以在侦听部分尝试捕获 cookie 功能(全部取决于所服务的应用程序),请参阅:http ://haproxy.1wt.eu/download/1.3/doc/configuration.txt :
顺便说一句,您的配置似乎还可以。
请注意上面示例中“插入”、“后置”和“间接”的使用——这会导致 HAproxy 根据需要将 cookie 插入到遍历它的流中。
我尝试了 cookie 捕获,它与实时 http 标头显示的内容没有任何区别...当我更改配置以使 haproxy 插入自己的 cookie 时,我可以在 http 标头中看到它...我开始了相信我最初的测试可能有问题。