Требования к отказоустойчивости
Отказоустойчивость — способность системы сохранять свою работу и продолжать выполнять свои функции даже при возникновении сбоев или отказов отдельных ее компонентов.
Для обеспечения отказоустойчивости при размещении ролей следует использовать разные сервера или ВМ на разных гипервизорах / серверах. Рекомендации по размещению ролей представлены в таблице.
| Наименование роли | Описание роли | Отказоустойчивость и восстановление * | Требования к размещению |
|---|---|---|---|
| squadus_apps | Обработка, приём, передача сообщений и способов их представления | Нет | Минимум две группы серверов роли |
| squadus_ microservices | Микросервисы, выполняющие следующие функции: интеграция с DLP\KSE, авторизация, работа с файловым хранилищем, нотификация, авторизации и другие | Да (Балансировка нагрузки) | Минимум 2 сервера роли |
| squadus_db | Хранение сообщений, комнат и другой информации (MongoDB) | Да (Кворум primary) | Минимум три сервера роли Допускается только нечетное число серверов |
| squadus_freeswitch | Интеграция с телефонией (Freeswitch) | Нет | |
| squadus_ha | Балансировщик нагрузки (Caddy2) | Да (Active-Passive) | Минимум два сервера роли |
| squadus_infra | Мониторинг и хранение log-файлов сервисов | не требуется | не требуется |
| squadus_mail | Интеграция с почтой | Да (Балансировка нагрузки) | Минимум два сервера роли |
| squadus_mq | Менеджер очередей (NATS) | Да (Кворум) | Минимум три сервера роли. Допускается только нечетное число серверов |
| squadus_redis | NoSQL in-memory хранилище «ключ-значение». Отвечает за хранение кешированной информации | Да (Кворум) | Минимум три сервера роли Допускается только нечетное число серверов |
| squadus_search | Поиск внутри продукта | Да (Кворум) | Минимум три экземпляра роли |
| squadus_st | Объектное хранилище (MinIO) | Да (Кворум) | Минимум три экземпляра роли |
| squadus_meet_apps | Роль ВКС. Ядро звонков Jitsi (Jitsi Meet Core) | Да (Балансировка нагрузки) | Минимум два сервера роли |
| squadus_meet_jibri | Роль ВКС. Мост для получения потоков от пользователей (Jitsi Videobridge) | Да (Балансировка нагрузки) | Минимум два сервера роли |
| squadus_meet_jvb | Роль ВКС. Запись встреч, стриминг на внешние площадки (Jitsi Broadcasting / Recorder) | Да (Балансировка нагрузки) | Минимум два сервера роли |
| squadus_meet_turn | Роль ВКС. Ретранслятор подключения к jibri (TURN-сервер) | не требуется | не требуется |
| squadus_meet_ vosk ** | Роль ВКС. Речевая аналитика и субтитры | не требуется | не требуется |
| * — примеры используемых механизмов отказоустойчивости см. таблицу. ** — роль squadus_meet_vosk не является обязательной при развертывании продукта. | * — примеры используемых механизмов отказоустойчивости см. таблицу. ** — роль squadus_meet_vosk не является обязательной при развертывании продукта. | * — примеры используемых механизмов отказоустойчивости см. таблицу. ** — роль squadus_meet_vosk не является обязательной при развертывании продукта. | * — примеры используемых механизмов отказоустойчивости см. таблицу. ** — роль squadus_meet_vosk не является обязательной при развертывании продукта. |
Механизмы отказоустойчивости
| Тип механизма отказоустойчивости | Описание работы | Ограничения |
|---|---|---|
| Active-Active (Балансировка нагрузки) | Все сервера работают одновременно. Отказоустойчивость достигается распределением нагрузки на другие сервера роли при отказе одного из серверов | Существует риск каскадного отказа роли из-за большей нагрузки на оставшиеся сервера |
| Active-Passive | В активном режиме работает только один сервер. При отказе активного сервера вся нагрузка переходит на другой сервер роли, работающий в пассивном режиме | Если отказ активного сервера связан с уровнем нагрузки, при переключении новый активный сервер может не справиться с нагрузкой |
| Кворум | Кворум определяет минимальное количество участвующих серверов, которое должно быть доступно и способно взаимодействовать для того, чтобы кластер считался работоспособным и мог принимать решения | Отказоустойчивость сохраняется при работе минимального большинства доступных серверов (например 2 из 3, 4 из 7) |
| Кворум primary | Прием запросов, репликацию данных и принятие решений выполняет один primary сервер. При отказе primary сервера, остальные сервера проводят выборы, для назначения нового primary сервера | Отказоустойчивость сохраняется при работе минимум двух серверов роли |