Product SiteDocumentation Site

1.4.2. Прямая маршрутизация

Построение LVS, использующего прямую маршрутизацию, обеспечивает большую производительность в сравнении с другими сетевыми конфигурациями. Прямая маршрутизация позволяет реальным серверам обрабатывать и направлять пакеты непосредственно пользователю, отправившему запрос. Прямая маршрутизация уменьшает возможность возникновения узкого места, как в предыдущем случае, поскольку LVS-маршрутизатор используется только для обработки входящих пакетов.
LVS Implemented with Direct Routing
Реализация LVS с использованием прямой маршрутизации
Рисунок 1.4. Реализация LVS с использованием прямой маршрутизации

В типовой реализации LSV с использованием прямой маршрутизации LVS-маршрутизатор получает входящий запрос через виртуальный IP (VIP) и передает этот запрос реальному серверу, используя выбранный алгоритм маршрутизации. Реальный сервер обрабатывает запрос и посылает ответ непосредственно клиенту, минуя LVS-маршрутизаторы. Такой способ маршрутизации позволяет получить масштабируемое решение, в котором добавление реальных серверов не создает дополнительной нагрузки на LVS-маршрутизатор.

1.4.2.1. Прямая маршрутизация и ограничения ARP

Помимо преимуществ, которые предоставляет использование прямой маршрутизации в LVS, существует также и ряд ограничений. Большинство проблем при использовании прямой маршрутизации в LVS связано с Address Resolution Protocol (ARP).
В обычной ситуации клиент посылает запрос на определенный IP-адрес. Маршрутизаторы обычно отправляют запросы получателям, сопоставляя IP-адрес с MAC-адресом машины при помощи ARP. ARP-запросы являются широковещательными и рассылаются на все подключенные к сети машины. Далее машина с правильной комбинацией адресов IP/MAC получает пакет. Сочетания IP/MAC хранятся в кеше ARP, который периодически очищается (обычно каждые 15 минут).
Проблема с ARP-запросами в случае построения LVS по схеме с прямой маршрутизацией возникает из=за того, что запрос клиента к IP-адресу должен быть ассоциирован с MAC-адресом для обработки запроса, в свою очередь и виртуальный IP-адрес LVS должен быть ассоциирован с MAC-адресом. Так как LVS-маршрутизатор, и реальные серверы имеют один и тот же VIP, то ARP запрос придет на все машины, где настроен этот VIP. Это может вызвать определенные проблемы, например, VIP может быть ассоциирован с MAC-адресом одного из реальных серверов, тем самым обходится LVS-маршрутизатор и вся инфраструктура LVS перестает работать.
Для разрешения этой проблемы удостоверьтесь, что входящие запросы попадают на LVS-маршрутизатор, а не на один из реальных серверов. Для этого можно использовать либо arptables_jf или iptables по следующим причинам:
  • arptables_jf предотвращает ARP от сопоставления VIP-адресов с реальными.
  • Использование iptables позволяет полностью уйти от проблемы с ARP. При этом VIP-адреса не присваиваются реальным серверам.