Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

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

Рисунок 1.23. LVS Implemented with Direct Routing

При типичной конфигурации маршрутизатор LVS получает запросы с сервера через виртуальный IP-адрес и с помощью алгоритма планирования направляет запрос соответствующим серверам. Каждый сервер обрабатывает запросы и направляет их клиентам напрямую, в обход маршрутизаторов LVS. Прямая маршрутизация способствует масштабируемости, так как добавление серверов не приведет к дополнительной нагрузке на маршрутизатор LVS при передаче исходящих пакетов от сервера к клиенту.
Основные ограничения на прямое масштабирование и LVS накладывает протокол ARP (Address Resolution Protocol).
In typical situations, a client on the Internet sends a request to an IP address. Network routers typically send requests to their destination by relating IP addresses to a machine's MAC address with ARP. ARP requests are broadcast to all connected machines on a network, and the machine with the correct IP/MAC address combination receives the packet. The IP/MAC associations are stored in an ARP cache, which is cleared periodically (usually every 15 minutes) and refilled with IP/MAC associations.
Проблемой при конфигурации прямой маршрутизации LVS с учетом обработки запросов ARP является то, что виртуальный IP-адрес маршрутизатора LVS должен соответствовать MAC-адресу, так как запрос, предназначенный адресу IP, должен быть сопоставлен адресу MAC. Но поскольку и маршрутизатор LVS, и действительные серверы имеют тот же виртуальный IP-адрес, запрос ARP передается ВСЕМ узлам с этим адресом. Это может привести к проблемам, например, если виртуальный адрес напрямую назначен серверу, в случае чего обработка запросов будет осуществляться напрямую, в обход маршрутизатора LVS, тем самым сводя весь смысл конфигурации LVS к нулю. Использование маршрутизатора с мощным процессором не решит проблему. Если загрузка маршрутизатора LVS существенна, он будет отвечать на запросы все же медленнее по сравнению с незанятым сервером, которому соответствует виртуальный IP-адрес в кэше ARP клиента, отправляющего запрос.
Чтобы решить эту проблему, необходимо, чтобы входящие запросы предназначались только виртуальному IP-адресу маршрутизатора LVS, который будет их обрабатывать и направлять реальным серверам. Для этого понадобится утилита фильтрования пакетов arptables.