Middleware (mware)
Описание
Обеспечивает функции переноса данных между внутренними сервисами внутри сайта, а также контроля корректности работы.
Разделена на микросервисы по доменам. Обеспечивает автоматическую синхронизацию работы между сайтами, обслуживающими домен.
Резервируется в режиме Active-Passive. Масштабируется разделением доменного дерева.
Сервисы:
* Telegram-бот мониторинга состояния системы (Подробнее о настройке).
* Обеспечение функционирования учетных записей sipuser, настроенных на работу без регистрации.
* Управление звонками через API (callmanager) (Calls, Conferences).
* Управление устройствами через API (devicemanager) (/api/devicemanager/v1/…)
* Сервис публикации ролевых приложений.
* Сервис запуска служебных сценариев по расписанию. (Служебные задачи).
* Сервис критических секций (компонент сценариев "Мьютекс" и др.).
* Контроллер потоковой репликации PostgreSQL. (Подробнее о настройке ниже, параметр 'pg_controller'])
* Контроллер создания резервных копий (Подробнее о настройке ниже, параметр 'backup_controller').
* Сервис автоматической генерации SSL-сертификатов ACME LetsEncrypt (Подробнее о настройке).
* Мониторинг глобальных имен.
* Мониторинг состояния MEGACO-подключений между MGC и MG.
* Мониторинг работоспособности сервиса синхронизации файлов FSYNC.
* Сервис восстановления паролей пользователей (Подробнее).
* Сервис отправки приглашений новым пользователям (Подробнее).
* Сервис обслуживания самостоятельной регистрации пользователей (Подробнее).
* Сервис обеспечения регистрации при авторизации через OAuth и ЕСИА (Подробнее).
* Сервис сборка событий syslog и отправки SNMP trap (Подробнее о настройке).
* Общий лог микросервисов продуктового слоя, собираемый из сообщений стандартного вывода.
* Сервис стенографирования записей разговоров (Подробнее о настройке).
* Тестировочный сервис зеркалирования UDP пакетов.
* Сервис регистрации заказов на обратный зконок (компонент сценариев "Заказ на обратный звонок" и др.).
* Сервис обеспечения функциональности email_to_fax.
* Сервис отслеживания абонентов, вызываемых через Hunt-номера и личные очереди.
* Кеш внешних номеров, подлежащих отслеживанию состояний (Подробнее о настройке).
* Сервис поставщика CTI-событий, включая супервизор серверов-адаптеров для поддержки различных протоколов.
Код |
|
Режим работы |
|
Режим резервирования |
|
Типы сайтов |
|
Слой |
|
Размещение |
|
Сохранение и восстановление состояния при перезагрузке |
|
Приложение |
|
Параметры
Имя | Тип | Умолчание | Описание |
---|---|---|---|
|
|
required |
Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы. |
|
|
required |
Тип роли. Возможные значения: |
|
|
required |
Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие ролей между собой. |
|
|
empty |
Дополнительные опции роли. Содержит json объект или список. |
|
|
empty |
Флаг активности роли. При установке в false роль не участвует в валидации и не запускается. |
|
|
required |
Номер группы. |
|
|
required |
Порядок экземпляра роли в рамках группы. |
|
|
empty |
Список имен доменов, которые обслуживает данная группа. |
|
empty |
Настройки для контроллера серверов PostgreSQL, находящихся в режиме потоковой репликации (версия pgsql 12+). Настройки значений для групп:
Настройки значений для серверов:
Указанное значение этого параметра не проверяется валидатором конфигурации в роли Все роли системы автоматически переключаются в работу с новым мастером, указанным в конфигурации, вне зависимости от данной настройки. Ведет выделенный лог-журнал "pgctrl_*.log". =Настройка PostgreSQL= Для того, чтобы сервис контроллера работал корректно, требуется предварительная настройка экземпляров PostgreSQL. Версия PostgreSQL не ниже 12. postgresql.conf
listen_addresses = '*' hot_standby = on wal_level = replica max_wal_senders = 10 wal_keep_segments = 32 promote_trigger_file = '/var/lib/postgresql/12/era_instance_01/master.signal' pg_hba.conf
host all era_replica 0.0.0.0/0 md5 Если второй сервер настроен в режиме мастера, то после первого запуска контроллер автоматически переведет одного из них в режим репликации. Дополнительно некоторые настройки можно задать в параметрах мастер-домена (подробнее…). |
|
|
empty |
Настройки для контроллера создания архивных копий.
С помощью указания шаблонов настраивается хранение нескольких экземпляров архивных копий, а также их кольцевое замещение по кругу. По умолчанию используется домашний каталог пользователя на сервере хранилища, и файлы регулярно перезаписываются. Если операция создания резервной копии завершается неудачей, то весь процесс прерывается, и это отражается в состоянии системы. Следующая попытка будет предпринята в соответствии с расписанием не раньше чем через 20 минут. Контроллер может создавать резервные архивные копии для нескольких экземпляров СУБД PostgreSQL. Для этого их надо указывать в списке. При создании архива с резервной копией данных экземпляра СУБД PostgreSQL используется утилита 'pg_basebackup'. Настройки значений для экземпляра СУБД PostgreSQL:
Архивный файл имеет формат zip. Примерный алгоритм восстановления:
|
|
|
array<object> |
empty |
Пример конфигурации
Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.
Конфигурация содержит раздел для описания всех экземпляров всех ролей. Параметры определяются для каждого конкретного экземпляра роли.
{
"name": "mware2",
"roletype": "mware",
"iface": "eth0",
"pg_controller": [
{
"key": "general",
"servers": [
{
"ssh_host": "192.168.0.123",
"ssh_port": 9022,
"ssh_user": "postgres",
"ssh_pwd": "123456",
"pg_host": "192.168.0.123",
"pg_port": 5420,
"pg_replica_user": "era_replica",
"pg_replica_pwd": "654321",
"pg_database": "postgres",
"pg_ctl_command": "/usr/lib/postgresql/12/bin/pg_ctl",
"pg_basebackup_command": "pg_basebackup",
"pg_data_folder": "/var/lib/postgresql/12/instance01",
"pg_backup_folder": "/var/lib/postgresql/12/backups/instance01",
"pg_log_filepath": "/var/log/postgresql/postgresql-12-instance01.log",
"pg_signal_filepath": "/var/lib/postgresql/12/instance01/master.signal"
},
{
"ssh_host": "192.168.0.124",
"ssh_port": 9022,
"ssh_user": "postgres",
"ssh_pwd": "123456",
"pg_host": "192.168.0.124",
"pg_port": 5420,
"pg_replica_user": "era_replica",
"pg_replica_pwd": "654321",
"pg_database": "postgres",
"pg_ctl_command": "/usr/lib/postgresql/12/bin/pg_ctl",
"pg_basebackup_command": "pg_basebackup",
"pg_data_folder": "/var/lib/postgresql/12/instance01",
"pg_backup_folder": "/var/lib/postgresql/12/backups/instance01",
"pg_log_filepath": "/var/log/postgresql/postgresql-12-instance01.log",
"pg_signal_filepath": "/var/lib/postgresql/12/instance01/master.signal"
}
]
}
],
"backup_controller": {
"hours_interval": [20, 3],
"weekdays": [1,2,3,4,5,6,7],
"storage_ssh_host": "storage.local",
"storage_ssh_port": 8022,
"storage_ssh_user": "user414",
"storage_ssh_pwd": "pwd414",
"storage_ssh_path": "backup/dow_%weekday",
"sync_folder": {
"send_mode": "rsync",
"excluded_paths": ["**/common/fax/*", "**/some_temp_files/*"]
},
"pgdb": [
{
"servers": [
{
"ssh_host": "192.168.0.123",
"pg_host": "192.168.0.123"
}, {
"ssh_host": "192.168.0.124",
"pg_host": "192.168.0.124"
}
],
"ssh_port": 9022,
"ssh_user": "postgres",
"ssh_pwd": "123456",
"pg_port": 5420,
"pg_replica_user": "era_replica",
"pg_replica_pwd": "654321"
}
]
},
"group": 11120,
"order": 10
}