Product SiteDocumentation Site

Мультипортовые сервисы и LVS

LVS-маршрутизаторы при использовании любой топологии требуют дополнительной настройки при создании многопортовых LVS-сервисов. Мультипортовые сервисы создаются при помощи меток сетевого экрана для объединения различных, но схожих протоколов, таких, как HTTP (порт 80) and HTTPS (порт 443), или же когда LVS используется с мультипортовыми протоколами, такими, ка FTP. В любом случае, маршрутизатор LVS использует метки сетевого экрана для того, чтобы сходным образом обрабатывать пакеты, адресованные на разные порты, но имеющие одинаковые метки сетевого экрана. При совместном использовании с сохранением состояния, метки сетевого экрана используются для того, чтобы запросы с клиентской машины, а также повторные подключения, приходящие от клиентской машины в течение заданного периода времени, переадресовывались одному и тому же серверу. Информация о включении сохранения подкючений для виртуального сервера приведена в 4.6.1, Подраздел VIRTUAL SERVER.
К сожалению, механизм, используемый для балансировки нагрузки — IPVS — способен распознавать метки сетевого экрана, присвоенные пакету, но сам не может назначать эти метки. Работу по присвоению меток сетевого экрана должна выполняться фильтром сетевых пакетов iptables, настройка которого выполняется без использования Piranha Configuration Tool.

3.4.1. Присвоение меток сетевого экрана

Для присвоения меток сетевого экрана пакетам, адресованным на определенный порт, используется iptables.
В этом разделе в качестве примера рассматривается объединение протоколов HTTP and HTTPS. Информация о настройке FTP-сервиса приведена в разделе 3.5, Настройка FTP.
Существует простое правило при использовании меток сетевого экрана - для каждого протокола, использующего метки, в 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.
/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
Информация о назначении VIP-адреса публичным сетевым интерфейсам приведена в 4.6.1, Подраздел VIRTUAL SERVER. Стоит также отметить, что команда загрузки модуля для iptables должна выполняться от имени пользователя root.
В приведенных выше командах iptables n.n.n.n необходимо заменить на плавающий IP виртуальных серверов HTTP и HTTPS. Результатом выполнения приведенных команд будет то, что сетевые пакеты, отправленые на порты 80 и 443 VIP, получат метку 80, после чего будут соответствующим образом обрабатываться IPVS.

Внимание

Все изменения, вносимые выполняемыми командами, вступают в силу немедленно, но не созраняются после перезагрузки системы. Информации о сохранении настроек фильтра сетевых пакетов после перезагрузки приведена в разделе 3.6, Сохранение настроек фильтра сетевых пакетов