Глава 11. Построение LVS кластера на базе Red Hat Enterprise Linux

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

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

Прежде чем выбирать и настраивать оборудование группы реальных серверов, вы должны решить, какой из трёх видов LVS кластеров использовать.

11.1. LVS кластер, использующий NAT

Схема с использованием NAT позволяет вам легко использовать существующее оборудование, но является неэффективной при большой нагрузке, так как LVS маршрутизатором обрабатываются и входящие, и исходящие пакеты.

Структура сети

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

Оборудование

Схема с NAT даёт вам максимальную гибкость с точки зрения выбора оборудования для кластера, так как реальные сервера не обязательно должны быть Linux-системами. В NAT-кластере каждому серверу необходима только одна сетевая плата для связи с LVS маршрутизатором. Каждому LVS-маршрутизатору для перенаправления пакетов между двумя сетями потребуются две сетевые платы. Так как в этой схеме образуется узкое место в виде LVS маршрутизатора, для увеличения пропускной способности маршрутизатора рекомендуется использовать гигабитные Ethernet-адаптеры. Если на LVS маршрутизаторах используется гигабитный Ethernet, все коммутаторы, соединяющие реальные сервера с LVS маршрутизаторами, должны иметь как минимум два гигабитных Ethernet порта, чтобы эффективно справляться с нагрузкой.

Программное обеспечение.

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

11.1.1. Настройка сетевых интерфейсов LVS кластера, использующего NAT

Прежде чем создавать NAT LVS кластер, администратор должен настроить на LVS маршрутизаторах сетевые интерфейсы внешней и внутренней сети. В этом примере внешние интерфейсы LVS маршрутизатора (eth0) находятся в сети 192.168.26/24 (да, да, я знаю, это не маршрутизируемая в Интернет сеть, но давайте представим, что перед LVS маршрутизатором находится межсетевой экран), а внутренние интерфейсы, связанные с реальными серверами, (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

В этом примере VIP для внешнего интерфейса LVS маршрутизатора будет равен 192.168.26.10, а VIP для внутреннего интерфейса равен 10.11.12.10. Таким образом, реальные сервера направляют пакеты на VIP внутреннего интерфейса NAT.

ВажноВажно
 

В этом разделе приведён пример настройки Ethernet-интерфейса для реальных, а не плавающих IP адресов LVS маршрутизатора. Для настройки внешних и внутренних плавающих IP адресов администратор должен использовать Piranha Configuration Tool, это описано в разделе 12.4 Глобальные настройки и разделе 12.6.1 Подраздел VIRTUAL SERVER.

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

ВажноВажно
 

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

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

Настраивая сетевые интерфейсы реальных серверов в NAT кластере, очень важно установить адрес шлюза правильно – это должен быть плавающий IP-адрес внутреннего интерфейса 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, а в LVS кластере используется eth1, реальный сервер не сможет правильно маршрутизировать пакеты.

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

11.1.3. Включение NAT маршрутизации на LVS маршрутизаторах

В простом NAT LVS кластере, где каждая служба в кластере использует только один порт, как, например, HTTP - порт 80, от администратора требуется только включить пересылку пакетов на LVS маршрутизаторах, этого будет достаточно для того, чтобы запросы корректно маршрутизировались между внешней сетью и реальными серверами. Указания по включению пересылки пакетов приведены в разделе 10.5 Включение маршрутизации пакетов. Однако дополнительная настройка необходима, если службы кластера используют в течении сессии пользователя для соединения с реальным сервером больше одного порта. Информацию о настройке многопортовых служб с использованием меток межсетевого экрана, обратитесь к разделу 11.3 Службы, использующие несколько портов и LVS кластеры.

Разрешив маршрутизацию на LVS маршрутизаторах, настроив реальные сервера, и запустив службы кластера, настройте кластер с помощью Piranha Configuration Tool, как показано в разделе 12 Настройка LVS маршрутизаторов с помощью Piranha Configuration Tool.

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

Не настраивайте плавающие IP адреса eth0:1 и eth1:1 вручную, отредактировав сетевые сценарии или с помощью средств настройки сети. Вместо этого, для настройки всех виртуальных интерфейсов, связанных с кластером, используйте Piranha Configuration Tool, как описано в разделе 12.4 Глобальные настройки и разделе 12.6.1 Подраздел VIRTUAL SERVER.

Закончив, запустите службу pulse, как описано в разделе 12.8 Запуск кластера. Как только служба pulse запустится, активный LVS маршрутизатор начнёт маршрутизацию запросов набору реальных серверов.