Мультипортовые сервисы и 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.