通过 ELB 和 HAProxy 的 ejabberd TCP 会话的会话粘性
Session stickiness for ejabberd TCP sessions via ELB and HAProxy
我在 AWS 中有一个要负载平衡的 ejabberd 集群。我最初尝试将 ELB 放在节点前面,但这会使会话变得非粘性。然后,我在 ELB 上启用了代理协议,并在 ELB 和 ejabberd 集群之间引入了一个 HAProxy 节点。我在这里的假设/理解是 HAProxy 实例将使用 TCP 代理并确保会话在 ejabberd 服务器上是粘性的。
然而,这似乎还没有发生!这甚至有可能摆在首位吗?在 HAProxy.cfg 文件中引入 cookie 配置给出了一个错误,即 cookie 仅针对 HTTP 启用,因此我如何才能让 TCP 会话在服务器上保持粘性...
请提供帮助,因为这里似乎没有思路!
ejabberd 不需要粘性负载平衡。你不需要实现它。前面用ELB或者HAProxy的ejabberd集群就可以了,没有粘性
感谢@Michael-sqlbot 和@Mickael - 似乎与 ELB 中的空闲超时有关。这被设置为 60 秒,所以如果我没有将任何数据从客户端推送到 ejabberd 服务器,TCP 连接就会被刷新。在玩这个加上健康检查间隔时,我可以看到 ELB 给我一个长 运行 连接...谢谢。
我仍然需要弄清楚如何在 ejabberd 中捕获客户端 IP(相信在 ELB 上启用代理协议会有所帮助)但这是一个单独的调查...
我在 AWS 中有一个要负载平衡的 ejabberd 集群。我最初尝试将 ELB 放在节点前面,但这会使会话变得非粘性。然后,我在 ELB 上启用了代理协议,并在 ELB 和 ejabberd 集群之间引入了一个 HAProxy 节点。我在这里的假设/理解是 HAProxy 实例将使用 TCP 代理并确保会话在 ejabberd 服务器上是粘性的。
然而,这似乎还没有发生!这甚至有可能摆在首位吗?在 HAProxy.cfg 文件中引入 cookie 配置给出了一个错误,即 cookie 仅针对 HTTP 启用,因此我如何才能让 TCP 会话在服务器上保持粘性...
请提供帮助,因为这里似乎没有思路!
ejabberd 不需要粘性负载平衡。你不需要实现它。前面用ELB或者HAProxy的ejabberd集群就可以了,没有粘性
感谢@Michael-sqlbot 和@Mickael - 似乎与 ELB 中的空闲超时有关。这被设置为 60 秒,所以如果我没有将任何数据从客户端推送到 ejabberd 服务器,TCP 连接就会被刷新。在玩这个加上健康检查间隔时,我可以看到 ELB 给我一个长 运行 连接...谢谢。
我仍然需要弄清楚如何在 ejabberd 中捕获客户端 IP(相信在 ELB 上启用代理协议会有所帮助)但这是一个单独的调查...