我在AWS中有一个ejabberd集群,我想要负载均衡。我最初尝试在节点前放置一个ELB,但这会使会话变得非粘性。然后,我在ELB上启用了代理协议,并在ELB和ejabberd群集之间引入了HAProxy节点。我的假设/理解是HAProxy实例将使用TCP代理并确保会话在ejabberd服务器上是粘性的。通过ELB和HAProxy进行ejabberd TCP会话的会话粘性
但是,这似乎仍然没有发生!这甚至可能在第一位?在HAProxy.cfg文件中引入cookie配置会导致只启用HTTP的错误,因此如何让TCP会话在服务器上保持粘滞状态...
请帮忙,因为看起来在想法上丢失了这里!
记得最近的问题从另一个用户谁似乎认为在ELB上启用代理协议会以某种方式使会话对ejabberd变得粘稠,这当然是没有意义的。你的设置,在ELB之后用HAProxy,至少是有道理的,但是需要用['stick on src']来配置(http://blog.haproxy.com/2013/04/22/client-ip- persistence-or-source-ip-hash-load-balancing /)...但我仍然不清楚......为什么粘性至关重要?如果连接到不同的服务器,为什么这很重要?如果你完成了这个,它会解决你的实际问题吗? –
嗨@ Michael-sqlbot - 谢谢。是的,我看到了这个问题 - 我也没有明白这一点。就我而言,如果我不让会话变得粘滞,用户的连接流在不同的服务器之间不断旋转,并且没有长时间运行的流。所以基本上,在同一个会话中,用户会多次注销并登录。我想我可能需要更深入地研究ejabberd的行为 - Mickael在下面提到了ejabberd不存在粘性的必要性,所以我会进一步检查......谢谢! – Samantha
默认情况下,ELB将在60秒后关闭空闲连接。您是否已将超时重新配置为更高的值? –