У меня есть пользовательские конечные точки, такие как xmpp.host.com. Однако внутри я хотел бы распределить нагрузку между xmpp1.host.com, xmpp2.host.com, ... Каков наилучший способ сделать это, не перемещая эту логику внутри самого сервера xmpp
Кстати, сейчас я использую ejabberd.
Я предлагаю использовать балансировку нагрузки на основе DNS. Определив несколько Записи SRV, вы не только добиваетесь балансировки нагрузки, но и можете распределять ее по своему усмотрению (например, вам может потребоваться 60% нагрузки на сервер с большей емкостью, а оставшаяся часть - на меньшую), но вы также можете определить серверы аварийного переключения .
Запрос SRV для XMPP-сервера, такого как ejabberd, может выглядеть так: -xmpp_client._tcp.yourdomain
Лучший способ - сделать xmpp.host.com VIP на балансировщике нагрузки и настроить какую-то липкую балансировку нагрузки или хэш на основе клиентского IP, чтобы запросы от клиентов возвращались на тот же сервер, на котором они были ранее авторизованы. , таким образом вам не нужно передавать информацию о состоянии между серверами XMPP.