Я пытаюсь сбалансировать соединения для сервера XMPP openfire - поэтому у меня есть менеджер соединений, размещенный на втором сервере, и я пытаюсь использовать таблицы IP в качестве балансировщика нагрузки.Оба они работают в Linux CentOS 6.3 (да, я знаю, что он старый - работает над этим).
Я настроил диспетчер соединений на порту 5300 на моем втором сервере (давайте назовем его сервером A) иXMPP-сервер (сервер B) успешно работает уже несколько лет и продолжает это делать.
Проблема в том, что балансировка нагрузки фактически выполняет любое балансирование.
Этоправила предварительной маршрутизации, которые я применил на сервере A (отредактированные IP-адреса), чтобы попытаться направить трафик между диспетчером подключений (порт 5300) на сервере A и службой XMPP (порт 5222) на сервере B:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 <server A IP> tcp dpt:5222
statistic mode nth every 2 to:<server B IP>:5222
DNAT tcp -- 0.0.0.0/0 <server A IP> tcp dpt:5222
to:<server B IP>:5300
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Я подключаюсь к серверу A через порт 5222 через Spark, и он успешно входит в службу XMPP.
Я ожидаю, что каждое четное соединение с сервером A через порт 5222 будет перенаправлено на сервер openfire на: 5222и каждое нечетное соединение, которое должно быть передано диспетчеру соединений по адресу: 5300.
Однако при просмотре соединений в openfire кажется, что соединениевсегда делается через диспетчер соединений.
Есть мысли о том, почему это может происходить, или как это исправить?Мне известны различные программные решения для балансировки нагрузки, но я бы предпочел справиться с этим изначально, чтобы минимизировать затраты.