Как использовать IPTables для перенаправления трафика в локальный менеджер соединений или в основную службу xmpp (Openfire) - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь сбалансировать соединения для сервера 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 кажется, что соединениевсегда делается через диспетчер соединений.

Есть мысли о том, почему это может происходить, или как это исправить?Мне известны различные программные решения для балансировки нагрузки, но я бы предпочел справиться с этим изначально, чтобы минимизировать затраты.

1 Ответ

0 голосов
/ 12 февраля 2019

Как выясняется, сервер xmpp никогда не получал пакеты, пересылаемые через конфигурацию IPTables, судя по всему, - но на сервере XMPP все правила по умолчанию установлены на «принять» и никаких других правил не указано, и он принимаетсоединения из диспетчера соединений.Spark затем повторно пытается установить соединение;и поэтому, конечно, подключается к диспетчеру соединений, поскольку это «нечетное» соединение.

Я [опубликую новый вопрос / определю существующий] относительно используемых правил IPTables и почему пакеты не используютсяпереадресован и / или получен - более простой вопрос, чем приведенный выше.

...