Отказоустойчивость Dion реализована в архитектурах Standard HA и Enterprise HA.
В обеих архитектурах отказоустойчивость реализуется путем добавления избыточности и дублирования экземпляров каждого сервиса DION. При этом все элементы системы работают в режиме Active-Active, то есть находятся в работе и равномерно распределяют нагрузку между собой.
Выход из строя одного экземпляра любого из сервисов DION затрагивает только службы и пользователей, которые в данный момент активны именно на этом экземпляре. Для пользователей и конференций, работающих на других экземплярах, сбой и восстановление проходят прозрачно.
Ниже в таблице указаны Компоненты (Роли). Список этих ролей и соответствующих этим ролям серверов можно увидеть в файле hosts
на сервере Setup-VM.
Компонент (Роль) | Минимально необходимое количество рабочих экземпляров компонента | Действия администратора | Влияние на пользователей |
---|---|---|---|
minio | 3 из 4 | не требуется |
Штатно используется 4 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 экземпляров:
|
consul | 2 из 3 | не требуется |
Штатно используется 3 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 и более экземпляров:
|
kafka | 2 из 3 | не требуется |
Штатно используется 3 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 и более экземпляров:
|
redis | 2 из 3 | не требуется |
Штатно используется 3 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 и более экземпляров:
|
pgsql | 2 из 3 | не требуется |
Штатно используется 3 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 и более экземпляров:
|
lb_dion | 1 из 2 | не требуется |
Влияет на активных пользователей, которые были подключены к данному серверу. При отказе:
При полном отказе компонента:
|
lb_infra | 1 из 2 | не требуется |
При отказе:
При полном отказе компонента:
|
lb_grpc | 1 из 2 | не требуется |
При отказе:
При полном отказе компонента:
|
mediavm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
appsvm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
turnvm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
recordvm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
videovm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
sipserver | 1 из n | желательно убрать адреса из DNS или trunk-ов |
Вызовы, которые были направлены на неработающий узел, будут прерваны. При повторном вызове и верной маршрутизации вызова пользователь будет подключен через другой доступный SIP Server. При полном отказе компонента:
|
siptranslator | 1 из n | не требуются |
При вызовах, проходящих через неисправный узел, видеопоток к SIP-устройству будет отсутствовать. При повторном вызове пользователь будет подключен через другой доступный SIP Translator. При полном отказе компонента:
|
siptranscoder | 1 из n | не требуются |
При вызовах, проходящих через неисправный узел, видеопоток от SIP-устройства будет отсутствовать. При повторном вызове пользователь будет подключен через другой доступный SIP Transcoder. При полном отказе компонента:
|
chatvm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
Примечание: чаты в конференциях при отказе компонента chatvm сохраняются у пользователей в разделе “чаты из конференций” в течение трёх часов после отказа (таков интервал проверки некорректно завершенных конференций). |
dcm | 0 шт | не требуется |
Нет влияния на систему. Компонент необходим только для администрирования системы. |
log | 0 шт | не требуется |
Нет влияния. При отказе компонента не работает сборка логов. |
monitoring | 0 шт | не требуется |
Нет влияния. При отказе компонента не работает служба мониторинга. |
Внимание: После автоматического переподключения к конференции пользователю может потребоваться выключить и заново включить камеру и микрофон. |
Запросы к пользовательским сервисам производятся через балансировщики lb_dion
, lb_infra
и lb_grpc
(используется HAProxy).
Балансировщики самостоятельно проверяют серверы на доступность и выбирают серверы, на которые будут перенаправляться запросы. Для пользовательских сервисов серверы выбираются по механизму Round Robin. Для инфраструктурных сервисов обязательно выбирается сервер, являющийся в данный момент мастером.
Отказоустойчивость самих балансировщиков реализована с использованием виртуального IP (VIP).
Кластеры балансировщиков состоят из двух серверов (active-standby).
Active-сервер кластера автоматически получает VIP-адрес, который переносится на другой сервер в случае его отказа.
Страницы для просмотра текущего состояния балансировщиков доступны по следующим адресам:
http://vip_dion:7001
(где vip_dion
— это VIP-адрес балансировщика).http://vip_infra:7003
(где vip_infra
— это VIP-адрес балансировщика).http://vip_grpc:7002
(где vip_grpc
— это VIP-адрес балансировщика).
Ниже в таблице указаны Компоненты (Роли), список этих ролей и соответствующих этим ролям серверов можно увидеть в файле hosts
на сервере Setup-VM.
Компонент (Роль) | Минимально необходимое количество рабочих экземпляров компонента | Действия администратора | Влияние на пользователей |
---|---|---|---|
minio | 3 из 4 | не требуется |
Штатно используется 4 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 экземпляров:
|
consul | 2 из 3 | не требуется |
Штатно используется 3 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 и более экземпляров:
|
kafka | 2 из 3 | не требуется |
Штатно используется 3 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 и более экземпляров:
|
redis | 2 из 3 | не требуется |
Штатно используется 3 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 и более экземпляров:
|
pgsql | 2 из 3 | не требуется |
Штатно используется 3 рабочих экземпляра компонента. При отказе 1 экземпляра компонента:
При отказе 2 и более экземпляров:
|
lb_dion | 1 из 2 | не требуется |
Влияет на активных пользователей, которые были подключены к данному серверу. При отказе:
При полном отказе компонента:
|
lb_infra | 1 из 4 | не требуется |
При отказе:
При полном отказе компонента:
|
lb_grpc | 1 из 4 | не требуется |
При отказе:
При полном отказе компонента:
|
mediavm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
appsvm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
turnvm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
recordvm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
videovm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
sipserver | 1 из n | желательно убрать адреса из DNS или trunk-ов |
Вызовы, которые были направлены на неработающий узел, будут прерваны. При повторном вызове и верной маршрутизации вызова пользователь будет подключен через другой доступный SIP Server. При полном отказе компонента:
|
siptranslator | 1 из n | не требуются |
При вызовах, проходящих через неисправный узел, видеопоток к SIP-устройству будет отсутствовать. При повторном вызове пользователь будет подключен через другой доступный SIP Translator. При полном отказе компонента:
|
siptranscoder | 1 из n | не требуются |
При вызовах, проходящих через неисправный узел, видеопоток от SIP-устройства будет отсутствовать. При повторном вызове пользователь будет подключен через другой доступный SIP Transcoder. При полном отказе компонента:
|
chatvm | 1 из n | не требуется |
При отказе 1 экземпляра компонента:
При полном отказе компонента:
|
dcm | 0 шт | не требуется |
Нет влияния на систему. Компонент необходим только для администрирования системы. |
log | 0 шт | не требуется |
Нет влияния. При отказе компонента не работает сборка логов. |
monitoring | 0 шт | не требуется |
Нет влияния. При отказе компонента не работает служба мониторинга. |
Внимание: После автоматического переподключения в конференцию пользователю может потребоваться выключить и заново включить камеру и микрофон. |
Запросы к пользовательским сервисам производятся через балансировщики lb_dion
, lb_infra
и lb_grpc
(используется HAProxy).
Балансировщики самостоятельно проверяют серверы на доступность и выбирают серверы, на которые будут перенаправляться запросы. Для пользовательских сервисов серверы выбираются по механизму Round Robin. Для инфраструктурных сервисов обязательно выбирается сервер, являющийся в данный момент мастером.
Отказоустойчивость балансировщика lb_dion реализована на уровне GSLB-балансировки (настраивается заказчиком самостоятельно).
Отказоустойчивость балансировщиков lb_infra и lb_grpc реализована с использованием виртуального IP (VIP).
Кластеры балансировщиков состоят из двух серверов (active-standby).
Active-сервер кластера автоматически получает VIP-адрес, который переносится на другой сервер в случае его отказа.
Страницы для просмотра текущего состояния балансировщиков доступны по следующим адресам:
http://dc-1-lb_dion:7001
(где dc-1-lb_dion
— это адрес балансировщика в первом ЦОД).http://dc-2-lb_dion:7001
(где dc-2-lb_dion
— это адрес балансировщика во втором ЦОД).http://vip_infra:7003
(где vip_infra
— это VIP-адрес балансировщика).http://vip_grpc:7002
(где vip_grpc
— это VIP-адрес балансировщика).