Настройка Virtual IP

Исходная задача

В кластере используется два или более серверов. Некоторые из серверов разделяют один виртуальный адрес (или несколько виртуальных адресов, например в разных подсетях). При этом в каждый момент времени набор таких виртуальных адресов активен лишь на одном из этих серверов.

Требуется настроить систему таким образом, чтобы клиентские устройства могли подключаться к виртуальному адресу. Клиентские устройства - приложения в браузерах, софтфоны, IP-телефоны.

Принцип работы

Задействуются следующие микросервисы: * sg для подключения внутренних устройств: SIP-телефонов и софтфонов * ws для подключения пользовательских приложений, подключения серверов интегрированных систем, приема веб-хуков от внешних систем.

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

Управление добавлением и удалением виртуальных адресов может осуществляться как внешними средствами (например keepalived), так и средствами платформы.

Группой серверов в рамках данной темы назовем каждую совокупность серверов, нацеленных на использование строго одного и того же множества виртуальных адресов. Группой микросервисов в рамках данной темы назовем каждую совокупность экземпляров ролей одного типа, имеющих настройку использования виртуальных адресов, а также с необходимостью размещенных на всех серверах группы. Виртуальным микросервисом в рамках данной темы назовем такой экземпляр микросервиса 'sg' или 'ws', который настроен на работу с виртуальными адресами.

Настройка

1. Настройка микросервисов (необходимо)

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

1.1. Подготовить схему.

1.1.1. Определить список виртуальных адресов.

1.1.2. Разбить серверы на группы. Группы не должны пересекаться.

1.1.3. Определить список виртуальных адресов для каждой из групп серверов. Виртуальные адреса должны замыкаться внутри группы.

1.1.4. Определить на каких виртуальных адресах будут располагаться микросервисы ws и sg.

1.1.5. Распределить экземпляры микросервисов ws и sg по группам так, чтобы согласно 1.1.4 внутри соответствующих групп на каждом из серверов находились экземпляры группы микросервисов. Виртуальные адреса одной группы серверов могут быть распределены по одной или нескольким группам микросервисов внутри этой группы серверов.

1.2. Изменить конфигурацию.

1.2.1. Вписать виртуальные адреса к серверам. Для этого в разделе servers..ifaces для каждого из серверов, входящих в группу, добавить по элементу для каждого из виртуальных адресов группы, аналогично статическим адресам с добавлением опции 'virtual: true'.

1.2.2. Добавить и распределить по серверам в соответствии со схемой экземпляры виртуальных микросервисов.

1.2.3. Для виртуальных микросервисов внутри каждой группы добавить опцию roles..virtual_ifaces, где перечислить алиасы виртуальных адресов сервера, с которыми предстоит работать этому экземпляру микросервиса. Важно понимать, что отсутствие хотя бы одного из указанных в этом списке адресов будет означать вывод микросервиса в режим ожидания. Подробнее в описании параметров sg.virtual_ifaces и ws.virtual_ifaces. Предполагается, что используемые порты на каждом из экземпляров в группе должны совпадать.

1.2.4. Опционально. Для виртуальных микросервисов 'sg' при необходимости указать алиасы виртуальных интерфейсов в параметре roles..sip_ifaces. Если этого параметра нет, то экземпляр будет слушать все имеющиеся интерфейсы, включая и виртуальные, и статические. Если параметр задан, то экземпляр будет слушать только указанные интерфейсы (особенность в этом случае касается основного интерфейса сервера, на котором подняты ноды). Подробнее в описании параметра sg.sip_ifaces.

1.2.5. Опционально. Для виртуальных микросервисов 'ws' при необходимости указать алиасы виртуальных интерфейсов в параметрах roles..http_ifaces и roles.https_ifaces. Если этого параметра нет, то экземпляр будет слушать все имеющиеся интерфейсы, включая и виртуальные, и статические. Если параметр задан, то экземпляр будет слушать только указанные интерфейсы на каждом из портов. Подробнее в описании параметров ws.http_ifaces и ws.https_ifaces.

1.3. Сохранить и активировать конфигурацию.

В лог журналах нод с виртуальными микросервисами (например 'ws1@10.0.0.101', 'sg21@10.0.0.102') размещается информация о статусе приложения.

2. Настройка автоматизации (опционально)

После этого шага активируется сервис назначения виртуальных IP-адресов - один адрес одному и только одному серверу. Альтернативой этому шагу может стать настройка сервиса keepalived или аналогичного.

  1. На диске создать файлы со скриптами включения и выключения виртуальных адресов. Подробнее.

  2. Изменить конфигурацию.

    • Задать приоритет серверам внутри групп. Для этого назначить в разделе servers..virtualip_order серверам, входящим в каждую из групп, приоритеты. Чем меньше значение, тем выше приоритет.

    • Включить автоматизацию назначения виртуальных адресов в разделе general.virtualip_automation.

  3. Сохранить и активировать конфигурацию.

Лог журнал этого сервиса находится в серверной ноде в файле '/env/env_*.log' (префикс 'VirtualIP').

Альтернативные способы подключения

Задача организации подключения клиентских устройств к системе через несколько возможных фасадных адресов может также решаться с использованием:

  • Коннектора (html страница)

  • Настройки нескольких outbound proxy в SIP-устройствах.

  • Использования DNS-имен с двумя или более IP-адресами.

  • Выбор и подключение к одному из нескольких адресов вручную с использованием софтфона, настраивающегося автоматически.

  • Использование внешних proxy и/или балансировщиков.