Product SiteDocumentation Site

Глава 3. Настройка LVS

3.1. Сеть LVS с использованием NAT
3.1.1. Настройка сетевых интерфейсов LVS при использовании NAT
3.1.2. Маршрутизация на реальных серверах
3.1.3. Настройка NAT-маршрутизации на LVS-маршрутизаторах
3.2. Сеть LVS с использованием прямой маршрутизации
3.2.1. Прямая маршрутизация и arptables_jf
3.2.2. Прямая маршрутизация и iptables
3.3. Завершение настройки
3.3.1. Советы по работе с сетью
3.4. Мультипортовые сервисы и LVS
3.4.1. Присвоение меток сетевого экрана
3.5. Настройка FTP
3.5.1. Как работает FTP
3.5.2. Как это влияет на маршрутизацию LVS
3.5.3. Создание правил фильтра сетевых пакетов
3.6. Сохранение настроек фильтра сетевых пакетов
LVS состоит из двух основных групп: LVS-маршрутизаторов и реальных серверов. Для устранения возможности сбоя каждая группа должна содержать не менее двух систем.
Группа LVS-маршрутизаторов должна состоять из двух идентичных или очень схожих систем, работающих под управлением Red Hat Enterprise Linux. Одна система выполняет функцию активного LVS-маршрутизатора, а вторая находится в состоянии ожидания, поэтому эти системы должны быть одинаковы по производительности.
Перед тем, как выбрать и настроить аппаратное обеспечение для группы реальных серверов, необходимо определить, какая из трех топологий LVS будет использоваться.

3.1. Сеть LVS с использованием NAT

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

3.1.1. Настройка сетевых интерфейсов LVS при использовании NAT

Для настройки LVS с использованием NAT необходимо настроить сетевые интерфейсы для публичной и локальной сетей на LVS-маршрутизаторах. В данном примере интерфейсы LVS-маршрутизаторов, подключенные к публичной сети (eth0), будут использовать IP-адреса из подсети 192.168.26/24, а интерфейсы, подключенные к локальной сети (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 для интерфейса, подключенного к локальной сети, может выглядеть так:
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.11.12.9
NETMASK=255.255.255.0
В данном примере VIP на публичном интерфейсе будет 192.168.26.10, а VIP для NAT на интерфейсе локальной сети будет 10.11.12.10. Важным моментом является то, что реальные серверы отправляют пакеты на VIP NAT-интерфейса.
После настройки сетевых интерфейсов основного узла LVS-маршрутизатора необходимо настроить сетевые интерфейсы резервного узла; при этом стоит обратить внимание на конфликты IP-адресов.

Важно

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

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

При настройке сетевых интерфейсов на реальных серверах необходимо помнить о том, что в качестве шлюза нужно указывать плавающий IP LVS-маршрутизатора. В этом примере плавающий IP - 10.11.12.10.

Замечание

После старта сетевых интерфейсов на реальных серверах, те не смогут подключаться к ресурсам внешней сети. Это нормально.
Пример скрипта /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 и для LVS используется eth1, то реальный сервер не сможет корректно отвечать на запросы.
Лучшим решением будет отключение лишних сетевых интерфейсов установкой значения ONBOOT=no в конфигурационных скриптах, расположенных в каталоге /etc/sysconfig/network-scripts/ или же корректно прописать адрес шлюза в конфигурационном файле сетевого интерфейса, стартующего первым.

3.1.3. Настройка NAT-маршрутизации на LVS-маршрутизаторах

В простой конфигурации LVS с использованием NAT, где каждый кластерный сервис использует только один порт, как, например, HTTP на 80 порту, администратуру нужно всего лишь включить packet forwarding на LVS-маршрутизаторах для маршрутизации пакетов между публичной сетью и реальными серверами. Подробнее о включении packet forwarding рассказывается в разделе 2.5, Включение Packet Forwarding. Тем не менее, когда для работы кластерных сервисов необходим доступ к различным портам одного и того же реального сервера в течение одной пользовательской сессии, потребуется дополнительная настройка. Подробнее о создании мультипортовых сервисов с помощью меток сетевого экрана рассказывается в разделе 3.4. Мультипортовые сервисы и LVS.
После того, как forwarding включен на LVS-маршрутизаторах и кластерные сервисы сконфигурированы и запущены на реальных серверах, нужно настроить LVS с помощью Piranha Configuration Tool, как это описано в главе 4, Настройка маршрутизаторов LVS с помощью Piranha Configuration Tool.

Внимание

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