Previous 

Описание подсистемы масштабирования

Next

Важнейшей особенностью ФПСУ-TLS является механизм масштабирования, который позволяет объединить в один виртуальный комплекс (кластер) несколько ФПСУ-TLS (узлов). Этот механизм позволяет расширять и наращивать производительность системы за счёт увеличения количества узлов системы и повышает надежность системы. При выходе из строя одного из узлов система автоматически перераспределит нагрузку на работающие узлы.

Масштабирование на ФПСУ-TLS реализовано на базе продуктов:

1) IPVS (http://www.linuxvirtualserver.org/software/ipvs.html), которая является частью проекта http://www.linuxvirtualserver.org. Это встроенный в ядро Linux load-balancer для создания кластеров, балансирующих нагрузку под Linux. Именно этот модуль реализует протокол VRRP.

2) keepalived - демон, управляющий конфигурированием IPVS.

Кластеру ФПСУ-TLS назначается один общий виртуальный IP-адрес, по которому подключаются клиенты и идентификатор (число от 1 до 254). Идентификатор для каждого кластера должен быть уникальным в рамках локальной сети.

Все узлы, входящие в кластер, могут иметь состояние основной или неосновной. Состояние основной имеет только один узел, назначенный при конфигурировании. Если основной узел выключается (или не был включен), через 1 секунду инициализируется процесс голосования, где выбирается новый основной узел.

Основной узел выполняет следующие действия:

раз в 3 секунды (значение по умолчанию, может быть изменено администратором ФПСУ-TLS) посылает специальный запрос на узлы-партнеры, указанные в конфигурации. Если узел-партнер ответил, он добавляет его в пул работающих узлов (таблица балансировки IPVS);

отвечает на ARP-запросы и принимает пакеты на IP-адрес ассоциированный с виртуальным IP-адресом;

пакеты, принятые по виртуальному адресу, перенаправляет на узлы-партнеры по алгоритму масштабирования. Алгоритм по умолчанию - Source Hash Scheduling (может быть изменен администратором ФПСУ-TLS, см. пункт Настройка подсистемы масштабирования). Согласно этому алгоритму, все поступающие на внешний виртуальный адрес соединения распределяются в пуле работающих узлов в соответствии с IP адресом отправителя из статической hash-таблицы, где индекс таблицы i вычисляется по формуле i=hash (IP-адрес отправителя).

Например, кластер состоит из 3 узлов. Тогда все множество интернет адресов будет разбито на 3 подсети (A, B, C). Клиент 1 из подсети A (синяя линия), который устанавливает защищенное соединение с ФПСУ-TLS по виртуальному адресу 192.168.1.80, будет перенаправлен на ФПСУ-TLS №2 и тот установит соединение с интерфейса 192.168.2.82 с защищаемым http-сервером.

Этот алгоритм позволяет добиться того, что все соединения от одного клиента будут поступать на один и тот же ФПСУ-TLS.

При изменении количества узлов, происходит перестройка hash-таблицы, соответственно изменится распределение клиентов в пуле работающих узлов. Но при этом сохраняются ранее созданные распределения: если клиентом было установлено соединение с определенным узлом до перестройки hash-таблицы, все последующие соединения будут выполняться с этим узлом.

clip0261_balancer_04