![将 xmpp 流量负载平衡到后端的多个节点](https://linux22.com/image/543778/%E5%B0%86%20xmpp%20%E6%B5%81%E9%87%8F%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1%E5%88%B0%E5%90%8E%E7%AB%AF%E7%9A%84%E5%A4%9A%E4%B8%AA%E8%8A%82%E7%82%B9.png)
我有面向用户的端点,例如 xmpp.host.com。但是,在内部,我想在 xmpp1.host.com、xmpp2.host.com 之间分配负载……如果不将此逻辑移到 xmpp 服务器本身内部,最好的方法是什么
顺便说一句,我现在正在使用 ejabberd。
答案1
我建议使用基于 DNS 的负载平衡。通过定义多个SRV 记录,您不仅可以实现负载平衡,还可以按照您的意愿进行分配(例如,您可能希望将 60% 的负载放在容量较大的服务器上,将剩余的负载放在容量较小的服务器上),还可以定义故障转移服务器。
像 ejabberd 这样的 XMPP 服务器的 SRV 查询可能看起来像:-xmpp_client._tcp.yourdomain
答案2
最好的方法是让 xmpp.host.com 成为负载均衡器上的 VIP,并设置某种粘性负载平衡或基于客户端 IP 的哈希,以便来自客户端的请求返回到他们之前登录的同一服务器,这样您不必在 XMPP 服务器之间传输状态信息。