通过ELB和HAProxy进行ejabberd TCP会话的会话粘性

时间:2016-08-01 23:25:42

标签: tcp ejabberd haproxy amazon-elb

我在AWS中有一个我想要负载均衡的ejabberd集群。我最初尝试将ELB放在节点前面,但这会使会话变得非粘性。然后我在ELB上启用了代理协议,并在ELB和ejabberd集群之间引入了一个HAProxy节点。我在这里的假设/理解是HAProxy实例将使用TCP代理并确保会话在ejabberd服务器上是粘性的。

然而,这似乎仍然没有发生!这首先是可能的吗?在HAProxy.cfg文件中引入cookie配置会出现仅为HTTP启用cookie的错误,因此如何让TCP会话在服务器上保持粘性...

请尽量帮助,因为这里的想法似乎已经丢失了!

2 个答案:

答案 0 :(得分:0)

ejabberd不需要粘性负载平衡。您不需要实现此功能。只需在前面使用带有ELB或HAProxy的ejabberd集群,没有粘性。

答案 1 :(得分:0)

谢谢@ Michael-sqlbot和@Mickael - 似乎它与ELB中的空闲超时有关。这设置为60秒,因此如果我没有将任何数据从客户端推送到ejabberd服务器,TCP连接就会刷新。在玩这个以及健康检查间隔时,我可以看到ELB给我一个长期连接......谢谢。

我仍然需要弄清楚如何在ejabberd中获取客户端IP(相信ELB上的启用代理协议会有所帮助),但这是一项单独的调查......