Глава 3. Настройка комплекта распределения нагрузки

Глава 3. Настройка комплекта распределения нагрузки

Комплект включает две группы компонентов: маршрутизаторы LVS и реальные серверы. Каждая группа должна состоять как минимум из двух систем с целью исключения уязвимого звена.
Группа маршрутизаторов LVS должна состоять из двух идентичных систем Red Hat Enterprise Linux: одна будет выполнять роль активного маршрутизатора LVS, в то время как другая будет находиться в состоянии готовности.
Прежде чем приступить к выбору и настройке оборудования для группы реальных серверов, необходимо выбрать одну из трех рассмотренных здесь топологий распределения нагрузки.

3.1. Маршрутизация NAT

Топология NAT предоставляет широкие возможности для оптимизации использования существующего оборудования, но при больших нагрузках теряет эффективность, так как входящие и исходящие пакеты должны обрабатываться маршрутизатором.
Структура сети
Топологию с маршрутизацией NAT проще всего организовать на уровне локальной сети, так как в этом случае необходима только одна точка доступа к внешней сети. Серверы расположены в собственной закрытой сети и передают пакеты через маршрутизатор LVS.
Оборудование
Топология NAT обеспечивает максимальную гибкость при выборе оборудования, так как нет необходимости в использовании систем Linux в качестве реальных серверов. При этом каждому серверу нужна всего одна сетевая карта, так как он будет отвечать только на запросы маршрутизатора LVS. Маршрутизаторам, в свою очередь, нужны две сетевые карты — для обмена пакетами между двумя сетями. Поскольку маршрутизатор LVS является уязвимым местом в такой топологии, для увеличения пропускной способности можно его оборудовать адаптерами гигабитного Ethernet. При этом все коммутаторы, соединяющие маршрутизаторы с реальными серверами, должны иметь как минимум два порта гигабитного Ethernet для оптимальной работы при высоких нагрузках.
Программное обеспечение
Так как в схеме с NAT для некоторых конфигураций потребуется настроить iptables, придется определить настройки не только в Piranha, но и за ее пределами. Так, например, службы FTP и использование меток межсетевых экранов для правильной маршрутизации требуют дополнительно вручную настроить маршрутизаторы LVS.

3.1.1. Настройка сетевых интерфейсов

Сначала необходимо настроить сетевые интерфейсы на маршрутизаторах LVS для внешней и внутренней сети. В этом примере внешние интерфейсы маршрутизатора LVS (eth0) находятся в сети 192.168.26/24 (хоть это и не маршрутизируемый IP, попробуем представить, что маршрутизатор находится за межсетевым экраном), а связанные с реальными серверами частные интерфейсы (eth1) находятся в сети 10.11.12/24.
На активном — или основном — маршрутизаторе LVS сценарий настройки внешнего интерфейса /etc/sysconfig/network-scripts/ifcfg-eth0 будет выглядеть примерно так:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.26.9
NETMASK=255.255.255.0
GATEWAY=192.168.26.254
/etc/sysconfig/network-scripts/ifcfg-eth1 для внутреннего интерфейса NAT на маршрутизаторе LVS будет выглядеть так:
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.11.12.9
NETMASK=255.255.255.0
В этом примере виртуальный адрес внешнего интерфейса маршрутизатора — 192.168.26.10, а виртуальный адрес NAT-интерфейса — 10.11.12.10. Важно, чтобы реальные серверы направляли ответы на запросы на виртуальный адрес интерфейса NAT.

Важно

В приведенном примере используются настройки интерфейса Ethernet для реальных, а не плавающих IP-адресов маршрутизатора LVS. Настроить внешние и внутренние плавающие адреса можно с помощью Piranha (см. Раздел 4.4, «GLOBAL SETTINGS» и Раздел 4.6.1, «Подсекция VIRTUAL SERVER»).
После настройки сетевых интерфейсов основного маршрутизатора LVS настройте реальные сетевые интерфейсы резервного маршрутизатора. При этом убедитесь в отсутствии конфликтов с другими IP-адресами сети.

Важно

Убедитесь, что каждый интерфейс на резервном узле обслуживает ту же сеть, что и интерфейс основного узла. Например, если eth0 на основном узле подключен к внешней сети, то eth0 на резервном узле также должен быть подключен к внешней сети.

3.1.2. Маршрутизация на реальных серверах

При настройке сетевых интерфейсов реальных серверов в структуре с NAT важно настроить шлюз для плавающего адреса маршрутизатора LVS. В приведенном примере плавающий адрес — 10.11.12.10.

Примечание

После активации сетевых интерфейсов на реальных серверах они не смогут отправлять запросы ping и обращаться к внешней сети. Это нормальное явление. Тем не менее можно отправить ping на IP-адрес внутреннего интерфейса маршрутизатора LVS (в данном примере — 10.11.12.8).
Файл /etc/sysconfig/network-scripts/ifcfg-eth0 на реальном сервере будет выглядеть примерно так:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.11.12.1
NETMASK=255.255.255.0
GATEWAY=10.11.12.10

Предупреждение

Если на реальном сервере в настройках нескольких интерфейсов присутствует строка GATEWAY=, к шлюзу сможет обращаться только первый запущенный интерфейс. Так, если настроен и eth0, и eth1, а комплект распределения нагрузки использует eth1, реальные серверы не смогут правильно распределять пакеты.
Рекомендуется отключить лишние интерфейсы, добавив выражение ONBOOT=no в их сетевые сценарии в каталоге /etc/sysconfig/network-scripts/, или убедиться, что шлюз настроен верно для первого запускаемого интерфейса.

3.1.3. Активация маршрутизации NAT на маршрутизаторах LVS

В простой структуре распределения нагрузки с маршрутизацией NAT, где каждая служба в кластере использует только один порт (например, 80 для HTTP), администратору надо только включить перенаправление пакетов на маршрутизаторах LVS, чтобы запросы корректно передавались между внешней сетью и реальными серверами. Раздел 2.5, «Активация маршрутизации пакетов» содержит инструкции по активации перенаправления пакетов. Если службы в кластере используют больше одного порта для соединения с одним сервером, может потребоваться дополнительная настройка (см. Раздел 3.4, «Службы, использующие несколько портов»).
После активации перенаправления на маршрутизаторах и настройки реальных серверов и служб можно приступить к настройке распределения нагрузки (см. Глава 4, Настройка распределения нагрузки с помощью Piranha).

Предупреждение

Не настраивайте плавающие IP-адреса для eth0:1 и eth1:1 вручную в сетевых сценариях или с помощью программы настройки сети. Для этих целей рекомендуется использовать Piranha (см. Раздел 4.4, «GLOBAL SETTINGS» и Раздел 4.6.1, «Подсекция VIRTUAL SERVER»).
Завершив, запустите pulse (см. Раздел 4.8, «Запуск комплекта распределения нагрузки»), после чего активный маршрутизатор начнет перенаправление запросов набору реальных серверов.