Назад | Перейти на главную страницу

LVS / IP_VS LoadBalancing Gateway

Я пытаюсь настроить свою конфигурацию с двумя шлюзами с балансировкой нагрузки с помощью модуля ядра IP_VS.

Мне нужно переадресовывать трафик на 2 узла. Я делаю:

  1. Настройте службу ip_vs fwmark и добавьте 2 узла.

  2. На каждом узле настройте правила сетевого брандмауэра, чтобы установить FWMARK для трафика с DestAddr != node_ip;

Но lvs_service не обнаруживает отмеченный трафик и не балансирует нагрузку.

Кто-нибудь может помочь с правильной настройкой? Вот желаемая диаграмма конфигурации / топологии:

То, что вы делаете, - это не то, для чего предназначен IP_VS. Я думаю, вам лучше вообще забыть про IP_VS и использовать другой подход.

Вы упоминаете VRRP на своей диаграмме. Это более разумный подход к вашей проблеме. Однако обратите внимание, что VRRP сам по себе предназначен для резервирования, а не для балансировки нагрузки. Простое использование VRRP без каких-либо других средств балансировки нагрузки приведет к тому, что все ваши клиенты будут использовать один маршрутизатор, пока этот маршрутизатор не выйдет из строя и все клиенты не перейдут на другой маршрутизатор.

Вы можете балансировать нагрузку клиентов на маршрутизаторах вообще без использования VRRP. Вы можете просто раздать клиентам два разных IP-адреса шлюза.

Этот очень простой подход к балансировке нагрузки не позволяет легко перебалансировать трафик и не обеспечивает отказоустойчивость. Через DHCP вы можете указать клиентскому компьютеру, какой из двух маршрутизаторов использовать, но он будет продолжать использовать этот маршрутизатор, даже если этот маршрутизатор окажется перегруженным. Вы можете переключать трафик между маршрутизаторами только тогда, когда клиенты отключаются и повторно подключаются к сети.

Вместо того, чтобы раздавать два IP-адреса, назначенных физическим интерфейсам, в качестве адресов шлюза, вы можете раздать клиентам пул виртуальных IP-адресов. Чем больше адресов шлюза вы используете, тем более детально вы можете перераспределять трафик между маршрутизаторами.

Например, вы можете выделить 10 разных адресов шлюза и сделать каждый маршрутизатор основным для 5 адресов шлюза. С помощью DHCP вы балансируете клиентов по 10 адресам шлюза, а VRRP может разрешить переключение каждого адреса независимо между двумя маршрутизаторами.

Есть еще одно предостережение, если задействован какой-либо NAT. Если оба шлюза выполняют NAT, то отказ от IP-адреса шлюза между шлюзами приведет к тому, что все клиенты, использующие этот IP-адрес шлюза, разорвут свои установленные соединения. Решение этой проблемы - самая сложная часть установки. Хорошая новость заключается в том, что если вы редко переключаете IP-адрес шлюза между шлюзами, это не будет большой проблемой для пользователей.

Вы можете добиться большего, если каждый маршрутизатор будет понимать, что пакет, полученный из локальной сети, принадлежит соединению, подключенному через NAT другим маршрутизатором, и пересылать этот пакет по каналу между двумя маршрутизаторами. Это должен быть только незначительный объем трафика, который пересылается по этой ссылке, и большая часть трафика, отправленного на IP-адрес шлюза, который вы только что переключили на другой маршрутизатор, действительно будет проходить через WAN-соединение на том же маршрутизаторе, который клиент отправил его.