11.3. Службы, использующие несколько портов и LVS кластеры

При создании многопортовых LVS служб в любой схеме LVS маршрутизаторы требуют дополнительной настройки. Многопортовые службы могут быть созданы искусственно, с помощью меток межсетевых экранов, связывающих вместе различные, но связанные протоколы, такие как HTTP (порт 80) и HTTPS (порт 443) или разные порты многопортовых протоколов, таких как FTP. В любом случае LVS маршрутизатор, используя метки межсетевых экранов, определяет, что пакеты, направленные на разные порты, но несущие одну метку, должны обрабатываться одинаково. Также, в сочетании с сохранением соединения, метки межсетевого экрана гарантируют, что в течение определенного времени сохранения клиент будет соединяться с одним и тем же узлом. Дополнительную информацию о настройке на виртуальном сервере сохранения соединений вы найдёте в разделе 12.6.1 Подраздел VIRTUAL SERVER.

К сожалению, механизм IPVS, используемый для балансировки нагрузки на реальных серверах, может распознавать в пакетах метки межсетевого экрана, но сам назначать такие метки не может. Задача по назначению меток межсетевого экрана должна решаться сетевым пакетным фильтром, например iptables, за рамками Piranha Configuration Tool.

11.3.1. Назначение меток межсетевого экрана

Чтобы назначать метки межсетевого экрана пакетам, направленным в определённый порт, администратор должен использовать iptables.

В этом разделе показано, как связать HTTP и HTTPS, однако FTP – это другой многопортовый протокол и настраивается он по-другому. Если в LVS-кластере работают службы FTP, подробное описание настройки кластера вы найдёте в разделе 11.4 Использование FTP в LVS кластере.

Необходимо запомнить главное правило использования меток межсетевых экранов: для каждого протокола, настроенного на использование меток в Piranha Configuration Tool, в iptables должно быть задано соответствующее правило, назначающее метки сетевым пакетам.

Прежде чем создавать правила фильтра сетевых пакетов, убедитесь в том, что не определены другие правила. Для этого, выполните в приглашении оболочки под именем root:

/sbin/service iptables status

Если iptables не работает, на экране снова появится приглашение.

Если iptables работает, вы увидите набор правил. Если правила уже заданы, выполните следующую команду:

/sbin/service iptables stop

Если для вас важны существующие правила, просмотрите содержимое файла /etc/sysconfig/iptables и скопируете все ценные правила в безопасное место.

Ниже приведены правила, назначающие одну метку межсетевого экрана, 80, входящим пакетам, направленным на плавающий IP адрес, n.n.n.n, порты 80 и 443. Указания по назначению VIP внешнему сетевому интерфейсу, обратитесь к разделу 12.6.1 Подраздел VIRTUAL SERVER. Обратите внимание, если вы используете правила впервые, вы должны зарегистрироваться под именем root и загрузить iptables.

/sbin/modprobe ip_tables
/sbin/iptables -t mangle -A PREROUTING -p tcp \
	    -d n.n.n.n/32 --dport 80 -j MARK --set-mark 80
/sbin/iptables -t mangle-A PREROUTING -p tcp \
               -d n.n.n.n/32 --dport 443 -j MARK --set-mark 80

В приведённых выше командах iptables, замените n.n.n.n плавающим IP-адресом вашего HTTP и HTTPS виртуального сервера. Эти команды указывают фильтру назначить всем входящим пакетам, адресованным соответствующим портам VIP адреса, метку межсетевого экрана 80, которая, в свою очередь, распознается IPVS и помогает правильно маршрутизировать пакеты.

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

Команды, приведённые выше, вступают в силу сразу, но не будут действовать после перезагрузки системы. Как сохранить настройки сетевого пакетного фильтра после перезагрузки вы узнаете в разделе 11.5 Сохранение настроек сетевого фильтра