Версия 6.2 |
||||||||||||||||||||||||||||||||
|
|
PBX Задачи в CommuniGate Pro взаимодействуют при помощи отправки событий в описатели задач. Описатель задачи - это объект-ссылка, описывающий PBX Задачу, Сессию или Сигналы Реального Времени. В Кластерной среде CommuniGate Pro Описатель задачи содержит также адрес сервера - члена Кластера, на котором обрабатывается PBX Задача, Сессия или Сигнал.
Когда событие должно быть передано другому члену кластера, оно доставляется при помощи внтутрикластерного протокола CLI/API. Получатель события может ответить, используя описатель задачиотправителя; в этом случае снова будет задействован внутрикластерный протокол CLI/API для доставки события-ответа.
PBX Задачи обычно задействуют Медиа Каналы. Чтобы обеспечить возможность обмена медиа с внешними участникам, Задачи PBX должны запускаться только на тех членах Кластера, которые имеют непосредственный доступ к Интернет.
Когда сессия XIMSS инициирует звонок, она создаёт объект Плечо Звонка. Эти Плечи Звонков управляют медиа каналами XIMSS пользователя, и они должны быть в состоянии обмениваться медиа данными с внешними участникам, поэтому они должны запускаться только на тех членах Кластера, которые имеют непосредственный доступ к Интернет.
Когда компонент Сигнал направляет входящий звонок в сессию XIMSS, он создаёт объект Плечо Звонка на том же члене Кластера, который обрабатывает Сигнал с запросом на входящий звонок. Объект Плечо Звонка затем "присоединяется" к сессии XIMSS (запущенной на каком-либо Бэкенд-Сервере, который может быть другим членом Кластера).
Если сессия XIMSS и её Плечо Звонка запущено на другом члене Кластера, то они взаимодействуют через специальные события, доставляемые при помощи внутрикластерного протокола CLI/API.
Даже когда Приложения Реального Времени и Плечи Звонков настроены для обработки только на Фронтенд-Серверах, Сигналы Реального Времени могут генерироваться ми на других членах кластера: Сессии XIMSS и XMPP, Автоматические Правила и другие компоненты могут отправлять Мгновенные сообщения, Наборы Событий могут создавать Сигналы уведомлений и так далее.
Когда Сигнал Реального Времени обрабатывается на Фронтенд-Сервере, он использует внутрикластерный протокол CLI/API для получения данных Пользователя (например, регистрации SIP) или для выполнения запрошенных действий (по доставки запроса SUBSCRIBE или XMPP IQ, или для начала звонка).
Для настройки Создания Плечей Звонков откройте через Веб Интерфейс Администратора в области Установки страницу Общее и нажмите на ссылку Кластеры:
Возможности SIP Farm® CommuniGate Pro позволяют нескольким членам Кластера обрабатывать пакеты с SIP запросами, распределяемыми для них случайным образом Балансировщиком Нагрузки.
Настройте Балансировщик Нагрузки на распределение входящих SIP UDP пакетов (по умолчанию, порт номер 5060) на порты SIP выбранных членов Кластера, входящих в SIP-Ферму.
Если в Кластере есть Фронтенд-Серверы, то все или некоторые из них могут использоваться как члены SIP-Фермы.
Настройте членов SIP-Фермы: через Веб Интерфейс Администратора откройте в области Установки страницу Общее и нажмите на ссылку Кластеры:
Кластер CommuniGate Pro учитывает информацию обо всех своих Серверах, у которых опция SIP-Ферма установлена в значение Участник. Входящие UDP пакеты и TCP соединения распределяются по этим Серверам при помощи обычных Балансировщиков Нагрузки.
Получающий Сервер определяет, должен ли полученный пакет обрабатываться на конкретном Сервере Фермы: он проверяет, не содержит ли пакет ответ или подтверждением (ACK) существующей транзакции и не направляется ли он на Узел, созданный на конкретном Сервере. В этом случае пакет ретранслируется правильному члену Кластера:
Пакеты, не направленные конкретным членам Кластера при помощи алгоритмов SIP-Фермы CommuniGate Pro, распределяются по всем доступным в настоящее время Членам Фермы.
Для обработки Сигнала членам Кластера может потребоваться получение определённой информации Пользователя (регистрация, настройки и т.п.). Если член Кластера не может открыть Пользователя (из-за того, что этот член Кластера является Фронтенд-Сервером или по причине того, что Пользователь открыт другим Бэкенд-Сервером), то он использует Внутри-Кластерный Интерфейс Командной Строки CLI/API для получения информации от соответствующего Бэкенд-Сервера.
Для реализации SIP-Фермы могут использоваться различные конфигурации сети и Балансировщиков Нагрузки:
Фронтенд-Серверы имеют IP адреса F1,F2, F3, ...
Настройте Балансировщик Нагрузки на обработку входящих UDP пакетов, получаемых на этот VIP адрес и порт номер 5060:Специфические для SIP техники, реализованные в некоторых Балансировщиках Нагрузки, позволяют им отправлять "связанные" между собой запросы на один сервер. Обычно такие техники основываются на поле запроса Call-ID и очень часто работают некорректно. Технология SIP-Фермы, используемая в CommuniGate Pro, гарантирует правильную обработку запросов, если запрос или пакет с ответом получены любым из членов SIP-Фермы. Следовательно, CommuniGate Pro не требует использования в Балансировщике Нагрузки специфических для SIP техник.
Многие Балансировщики Нагрузки, даже если они и не используют никакую специфичную SIP технику, создают "привязку к сессии" для входящих UDP запросов, точно также, как они обрабатывают входящие TCP соединения.SIP-Ферма CommuniGate Pro распределяет пакеты SIP запросов, ретранслируя их между Фронтенд-Серверами в соответствии с алгоритмами работы SIP-Фермы; такие алгоритмы перенаправляют пакеты с ответами SIP на Фронтенд-Сервер, отправивший соответствующий SIP запрос.
Эти возможности SIP-Фермы CommuniGate Pro делают бесполезным использование таблицы "привязки сессии" Балансировщика Нагрузки (при использовании SIP UDP)
Для того, чтобы избежать появления вышеописанных проблем, уточните у производителя вашего Балансировщика Нагрузки что Балансировщик Нагрузки действительно не использует "привязку к сессии" для UDP порта 5060.
В этой конфигурации Фронтенд-Серверы имеют прямой доступ к Интернет (у них есть IP адреса, напрямую "видимые" из Интернет).
Балансировщики Нагрузки с "привязкой к сессии" UDP будут иметь такие же проблемы, как описано выше.
DSR (Direct Server Response, Прямой Ответ Сервера) является наиболее предпочтительным методом Балансировки Нагрузки при крупных установках.
Для использования DSR метода создайте "псевдоним" для сетевого интерфейса "внутренней петли" (loopback network interface) каждого Фронтенд-Сервера. Стандартным адресом для внутренней петли является 127.0.0.1; создайте для неё псевдоним с VIP адресом и маской сети 255.255.255.255:Убедитесь, что ядро настроено так, что оно не рассылает ARP для этого lo интерфейса (так что VIP адреса не связаны ни с каким Фронтенд-Сервером в arp-таблицах). В зависимости от версии ядра Linux, следующие в файл /etc/sysctl.conf должны быть добавлены следующие команды:
Обратите внимание: Из-за того, что для перенаправления входящих пакетов используются MAC адреса, Балансировщик Нагрузки и все Фронтенд-Сервера должны входить в один сегмент сети; между Балансировщиком Нагрузки и Фронтенд-Серверами не должно быть Маршрутизатора.
Обратите внимание: при создании сетевого "псевдонима", откройте через Веб Интерфейс Администратора CommuniGate Pro в разделе Общее страницу Информация и нажмите на кнопку Обновить, чтобы сервер мог обнаружить добавленный IP адрес.
DSR метод прозрачен для всех сервисов, работающих через TCP (включая SIP через TCP/TLS) и для него не требуются никакие дополнительные настройки Сервера CommuniGate Pro: когда на локальный VIP адрес принимается TCP соединение, исходящие пакеты для такого соединения будут всегда иметь в качестве адреса источника тот же самый VIP адрес.
Для того, чтобы использовать DSR метод для SIP UDP, конфигурация Фронтенд-Серверов CommuniGate Pro должна быть изменена:Каждый Медиа поток, терминируемый CommuniGate Pro (поток, ретранслируемый при помощи медиа прокси или поток, обрабатываемый в канале медиа миксера) связывается с конкретным членом Кластера. Балансировщик Нагрузки должен гарантировать, что все входящие Медиа пакеты доставляются надлежащему члену Кластера.
Настойка Общесерверного Адреса WAN IP должна быть пустой у всех Членов Кластера.
Настройка Общекластерного Адреса WAN IP должна быть установлена в адрес G0.
Этот метод не должен использоваться при больших установках (за исключением случаев, когда сервер не терминирует медиа вообще или терминирует очень в небольших количествах): он позволяет вам разместить только 64000 портов для всех медиа потоков Кластера (каждый AVP поток забирает 2 порта, так что общее число аудио потоков ограничено 32000, а если используется видео (вместе с аудио), то такой Кластер не сможет обслуживать более чем 16000 одновременных аудио/видео сессий.
Метод "с Несколькими IP" полезен в случае крупных установок. Каждый Фронтенд-Сервер имеет свой собственный IP адрес и при создании на Фронтенд-Сервере Медиа Канала или Медиа Прокси, этот уникальный IP адрес используется для прямой коммуникации между Сервером и клиентским устройством (или удалённым сервером).
Сетевые Настройки каждого Члена Кластера могут использовать одинаковые диапазоны Медиа Портов, и, таким образом, число одновременных потоков не ограничивается 64000 портами.
В простейшем случае все Фронтенд-Серверы имеют "реальные" IP адреса, то есть они соединены непосредственно с Интернет.
Если Балансировщик Нагрузки использует DSR метод (смотрите выше), то он не должен заботится о пакетах, отправляемых не с VIP адресов Фронтенд-Серверов: эти пакеты должны либо проходить мимо Балансировщика Нагрузки, либо он не должен модифицировать их и должен доставлять "как есть".
Если Балансировщик Нагрузки использует "нормальный" метод, то он должен быть настроен на обработку только тех портов, по которым производится "балансировка нагрузки"; пакеты, поступающие от/на "других портов" (такие, как порты из диапазона Медиа Портов) должны передаваться Балансировщиком Нагрузки без каких бы то ни было модификаций.
Настройте Балансировщик Нагрузки на использование реальных адресов G1, G2, G3, ... - в дополнение к VIP IP адресу, используемому для доступа к сервисам CommuniGate Pro.
Настройте Балансировщик Нагрузки на "отображение" его внешнего IP адреса G1 на адрес Фронтенд-Сервера L1, так, чтобы все пакеты, приходящие на IP адрес G1, порт g (G1:g) направлялись на Фронтенд-Сервер с адресом L1 и тот же самый порт g (L1:g). Балансировщик Нагрузки может изменять пакеты для адреса назначения на L1 или оставлять их как есть (G1); когда Балансировщик Нагрузки получает пакет от адреса L1, порт l (L1:l) и этот порт не используется в операциях, по которым балансируется нагрузка (SMTP, POP, IMAP, SIP и т.д), то Балансировщик Нагрузки должен перенаправлять этот пакет наружу, заменяя адрес источника L1 на G1: L1:l->G1:l.
Настройте Балансировщик Нагрузки аналогичным образом на "отображение" его внешних IP адресов G2, G3, ... на другие IP адреса Фронтенд-Серверов L2, L3, ...
В разделе Установки в Веб Интерфейсе Администратора произведите соответствующие настройки Фронтенд-Серверов CommuniGate Pro. Откройте страницы Сеть, и укажите там "отображаемые" IP адреса как Общесерверные WAN IP Адреса: G1 для Фронтенд-Сервера, имеющего IP адрес L1, G2 для Фронтенд-Сервера, имеющего IP адрес L2 и т.д.