AZykov (обсуждение | вклад) Нет описания правки |
AZykov (обсуждение | вклад) Нет описания правки |
||
Строка 212: | Строка 212: | ||
DNS серверы должны позволять серверу адресовать разрешенные правилами сетевого контура DNS-имена, планируемые к использованию. Если сервер имеет выход в интернет, то публичные DNS-имена. | DNS серверы должны позволять серверу адресовать разрешенные правилами сетевого контура DNS-имена, планируемые к использованию. Если сервер имеет выход в интернет, то публичные DNS-имена. | ||
Шлюзы и маршруты должны позволять серверу корректно доставлять пакеты во всех необходимых направлениях.</blockquote> | Шлюзы и маршруты должны позволять серверу корректно доставлять пакеты во всех необходимых направлениях.</blockquote><blockquote>Пошаговый пример подготовки описан в [[Пошаговый пример подготовки сервера|данной статье]]</blockquote> | ||
Необходимо установить базовые утилиты для установки системы: | Необходимо установить базовые утилиты для установки системы: |
Версия от 15:04, 23 декабря 2024
Общая информация
Описание
Установка системы производится на серверы с ОС Linux.
Первый сервер в рамках установки становится мастером, все последующие серверы подцепляются к нему.
После установки на мастер сервер создается комплексная распределенная конфигурация, включающая все выделенные под установку серверы.
Система на каждом из серверов разворачивается в docker-контейнере без внешней оркестрации.
Начальная установка требует подключения к СУБД, и предлагает установить экземпляр(ы) PostgreSQL на этих же серверах.
В частном случае система устанавливается на одном сервере (он же мастер), и в этом случае с помощью инсталлятора СУБД также может быть развернута в отдельном docker-контейнере.
В случае установки системы на нескольких серверах предполагается необходимость резервирования сервера БД, для этой цели разворачиваются два (или более) экземпляров на нескольких серверах, причем только первый инстанс СУБД разворачивается в режиме мастера, а последующие в режиме потоковой репликации мастера.
Варианты
Варианты дистрибутивов операционных систем:
- Linux Debian 10
- Linux Debian 11
- Linux Ubuntu Server 20
- Astra Linux
- RedOS
Варианты по количеству серверов:
- Установка на один или несколько серверов.
Варианты по наличию подключения к интернет на серверах:
- На сервере с доступом к сети интернет необходимые пакеты скачиваются и устанавливаются автоматически.
- На сервере без доступа к сети интернет требуется проведение предварительной операции установки пакетов.
Варианты по используемым серверам БД PostgreSQL:
- Установка системы с использованием существующих серверов БД PostgreSQL (версии 12+).
- Установка вместе с PostgreSQL
- Один экземпляр на одном из имеющихся серверов в docker-контейнере или в хосте.
- Несколько экземпляров на имеющихся серверах с потоковой репликацией, контроллером репликаций (автоматическое переключение recovery в master и обратно).
- Установка с подключением к внешним серверам БД PostgreSQL.
Варианты по файловым хранилищам:
- NFS на внешнем носителе.
- VRRP-хранилище (хранилище поверх Virtual Router Redundancy Protocol).
- S3-хранилище (настраивается индивидуально для каждого домена).
- Локальное размещение на тех же серверах (возможно в mount-разделах).
- Локальное размещение на тех же серверах с синхронизацией.
Общий план установки и начальной настройки
1. Подготовка
1.1) Определиться с местом расположения СУБД - внешняя установка, или на этих же серверах, на каких именно серверах, в контейнере или в хосте.
1.2) Определиться с названием мастер-домена.
1.3) Определиться с местом расположения хранилищ (БД, хранилище логов, хранилище записей, рабочие каталоги микросервисов и NFS каталоги).
1.4) Определить локальные адреса серверов, через которые они будут связаны.
1.5) Выбрать пароли для учетных записей PostgreSQL: postgres
, erapgadmin
, era_replica
.
1.6) Выбрать пароли для учетных записей администраторов системы.
1.7) Выбрать уникальное значение cookie для связи между серверами.
1.8) Провести начальную подготовку серверов (настроить ОС), убедиться что серверы доступны по ssh.
2. Установка платформы (инфраструктурный и коммуникационный слой)
2.1) Подготовить инсталлятор (era_installer).
2.1.1) Установка на сервер без доступа к сети интернет требует предварительную установку пакетов.
2.1.2) Установка на сервер с доступом к интернет может производиться с удаленной машины, если доступный адрес сервера совпадает с его локальным адресом для установки системы. В противном случае необходимо разместить инсталлятор на сервере и производить установку через ssh-подключение.
2.2) Установить систему на мастер-сервер с помощью sh-инсталлятора (мастер сервер - категория имеющая отношение только к установке).
2.3) Создать и активировать конфигурацию.
2.4) Установить систему на прочие серверы, входящие в кластер, с помощью sh-инсталлятора.
При возникновении сбоя в установке, процесс необходимо начать заново.
Этому должна предшествовать очистка хвостов. Для этого можно использовать скрипт "uninstall_ssh.sh" удаленно или "uninstall.sh" локально, позволяющий детально указывать на расположение артефактов удаляемого инстанса. Если ваша установка проводилась в каталоги по умолчанию, то можно использовать скрипт "remove.sh" из каталога инсталлера "/tmp/era/scripts". |
Установка может производиться одной командой с передачей всех параметров. Тогда в ходе установки достаточно будет лишь несколько раз ввести пароли по запросу.
Список параметров доступен командой |
3. Начальная настройка мастер-домена
3.1) Открыть в браузере приложении "Настройки".
3.2) При необходимости скорректировать конфигурацию и активировать новую.
3.3) Загрузить лицензию, зарезервировать количественные показатели.
3.4) Изменить пароль администратора, добавить пользователей при необходимости.
3.5) Создать домен первого уровня и передать в него количественные лицензии.
3.6) Настроить черный/белый список IP-адресов для SBC-фильтра.
3.7) Загрузить сертификат SSL или настроить систему на его автоматическую выписку с помощью ACME LetsEncrypt.
3.8) Убедиться, что система не выдает предупреждений.
4. Настройка рабочего домена
4.1) Переключиться в рабочий домен или авторизоваться под учетной записью администратора в рабочем домене и открыть веб-приложение "Настройки". Выбрать расширенный режим.
4.2) Зарезервировать для использования часть количественных лицензий, переданных из родительского домена.
5. Установка продуктового слоя платформы (информационный и процессинговый слой)
5.1) В приложении "Настройки" рабочего домена
5.1.1) создать канал интеграции (задать роль admin, пользователя Administrator, доступ к API *
), сохранить сгенерированный токен;
5.1.2) добавить к учетным записям пользователей администраторов роли builder_admin
, callcenter_admin
, callcenter_supervisor
.
5.2) Подготовить инсталлятор (era_product.zip), распаковать, запустить скрипт установки, передав ему параметры установленной системы, дождаться его завершения.
5.3) Убедиться, что в меню приложений появились новые приложения, микросервисы активны.
5.4) Проверить функциональность телефонии и отображение данных в дашбордах.
6. Начальная настройка телефонии
6.1) В рабочем домене импортировать настройки или создать минимально необходимые сущности:
6.1.1) учетные записи пользователей,
6.1.2) учетные записи провайдеров,
6.1.3) правила маршрутизации,
6.1.4) правила нормализации внешних номеров,
6.1.5) сценарии ivr,
6.1.6) сервисные коды,
6.1.7) правила записи.
6.2) Протестировать звонки: между пользователями, на сценарий IVR, на внешний номер.
Операции
Название | Ориентировочное время выполнения (мин) |
---|---|
Начальная настройка сервера | 10 |
Установка пакетов на сервере без доступа к сети интернет | 10 |
Установка master-сервера | 10 |
Создание и активация конфигурации | 5 |
Установка slave-сервера | 10 |
Начальная настройка мастер-домена | 5 |
Создание рабочего домена | 3 |
Установка продуктового слоя платформы | 10 |
Настройка телефонии для первого звонка | 5 |
Проверить отсутствие отклонений в мониторинге системы system/state | 1 |
Подготовка и предварительная настройка сервера
Минимальные параметры сервера:
- Для ненагруженной тестовой системы: 4 cores 2.4 GHz, 8 GB RAM, 50 GB SSD/HDD.
- Для 1-2-серверной рабочей системы: 8+ cores, 32+ GB RAM, 250+ GB SSD (+RAID). При размещении файлового хранилища и БД на сервере 1 TB или болееSSD/HDD + RAID.
- Для многосерверной инсталляции минимальные параметры серверов могут сильно варьироваться в зависимости от конфигурации и распределения микросервисов.
Требования к обеспечению
- Наличие ОС семейства Debian, например debian 11. С усложнениями возможна установка на AstraLinux, AltLinux. Для установки тестовых экземпляров инсталлятор поддерживает Ubuntu-based.
- Наличие постоянного локального IPv4-адреса сетевого интерфейса, по которому серверы кластера будут доступны друг другу.
- Вхождение текущего пользователя, под которым будет инииироваться установка платформы, в sudoers
- Обновление из стандартных репозиториев. Добавьте их в sources.list при необходимости
- SSH-сервер. При наличии на сервере публичных адресов рекомендуется использовать нестандартный порт и закрытый список разрешенных клиентских адресов.
- Пакеты gnupg curl wget members rsync net-tools iotop htop sysstat tshark.
- Локаль ru-RU.UTF-8 - используется инсталлером платформы при настройке сервера БД PostgreSQL.
- Диски для хранилищ должны быть размечены и примонтированы, рекомендуется папка "/mnt/…"
- Каталог для размещения данных БД должен быть разрешен на чтение и запись для группы, в которую в ходе установки БД будет добавлен пользователь postgres. Имя группы произвольно, например "storage".
Установка платформы должна производиться строго на постоянный локальный адрес (подсети 10.0.0.0/8, 100.64.0.0/10, 172.16.0.0/12, 192.168.0.0/16).
Допускается наличие и других адресов и интерфейсов, в том числе vlan, vpn, внешних.
Адреса сервера, используемые в рамках телефонии, рекомендуется настраивать преимущественно статические, поскольку изменение адреса потребует вносить изменение в конфигурацию платформы для обеспечения возможности обслуживать вызовы в этом направлении.
DNS серверы должны позволять серверу адресовать разрешенные правилами сетевого контура DNS-имена, планируемые к использованию. Если сервер имеет выход в интернет, то публичные DNS-имена.
Шлюзы и маршруты должны позволять серверу корректно доставлять пакеты во всех необходимых направлениях.
Пошаговый пример подготовки описан в данной статье
Необходимо установить базовые утилиты для установки системы:
apt-get update
apt-get install nano zip unzip curl wget
Односерверная конфигурация
Скрипт для локальной установки односерверной конфигурации платформы:
bash era.sh install --usedefaults --ipaddress=127.0.0.1 --postfix= --master=y --masterdomain=era-platform.ru --dopginstall=y --usereplic=n --pgmode=d --usedockerhubpgimage=y --pgport=5452 --pskcookie=123456
Для получения справки по скрипту установки используйте:
bash install_ssh.sh —help
Двухсерверная конфигурация в одном дата-центре
Двухсерверная конфигурация в одном дата-центре без внешнего арбитра (без кворума).
Особенности работы:
- Высокая доступность между серверами. Сетевая доступность между серверами обеспечивается непрерывно с задержкой не более 1 мс. Любой потерянный пакет считается падением сервера;
- Ресурсов серверов достаточно для полноценной работы платформы на любом из серверов. При их совместной доступности платформа использует ресурсы обоих серверов;
- В случае выхода из строя любого из серверов, конфигурация максимально быстро (в течение пары секунд) переезжает на оставшийся сервер;
- Система переходит в режим односерверной конфигурации, при котором может работать неопределенно долго;
- Двухсерверная конфигурация администрируется так же, как и односерверная. Особенностью является случайное распределение лог-файлов между серверами. Рекомендуется использовать встроенный сборщик логов.
- Файловое хранилище не реплицируется. Записи будут храниться на одном из серверов (но только на одном). В случае выхода из строя одного из серверов, записи этого сервера будут временно недоступны до восстановления работы.
Установка “первого” сервера
bash install_ssh.sh \ --user=era \ --port=22 \ --host=188.1.1.1 \ --ipaddress=192.168.0.101 \ --postfix= \ --master=y \ --masterdomain=era-platform.ru \ --srvname=srv1 \ --dopginstall=y \ --usereplic=y \ --pgmode=h \ --pghostmode=m \ --pgport=5441 \ --pgpostgrespwd=PgPoStGrEsPwD \ --pgerapwd=PgErApWd \ --pgreplicapwd=PgRePlIcApWd \ --pskcookie=PsKcOoKiE \ --usedefaults
Обратите внимание, что установка на сетевой интерфейс 127.0.0.1 невозможна в двухсерверной конфигурации.
Установка “второго” сервера.
bash install_ssh.sh \ --user=era \ --port=22 \ --host=188.1.1.2 \ --ipaddress=192.168.0.102 \ --postfix= \ --master=n \ --micaddress=mic1@192.168.0.101 \ --srvname=srv2 \ --dopginstall=y \ --usereplic=y \ --pgmode=h \ --pghostmode=r \ --pgport=5441 \ --pgpostgrespwd=PgPoStGrEsPwD \ --pgerapwd=PgErApWd \ --pgreplicapwd=PgRePlIcApWd \ --pskcookie=PsKcOoKiE \ --usedefaults
где:
- user=era — имя пользователя для удаленной установки на сервер. Используется только при удаленной установке.
- port=22 — порт сервера для удаленной установки. Используется только при удаленной установке.
- host=188.1.1.2 — ip-адрес удаленного сервера для удаленной установки,
- ipaddress=192.168.0.101 и 192.168.0.102 — ip-адреса будущих серверов платформы соответственно,
- postfix — название контейнера (пустое для одного экземпляра платформы на сервере),
- master=y и n — признак мастер-сервера или нет,
- masterdomain=era-platform.ru — имя FQDN мастер-домена. Используйте только строчные буквы. Изменение мастер-домена очень трудозатратно.
- micaddress=mic1@192.168.0.101 — ip-адрес “первого” сервера для “второго”,
- srvname=srv1 и srv2 — имя сервера для внутреннего использования,
- dopginstall=y - Yes — устанавливать или нет PostgreSQL,
- usereplic=y - Yes — использовать ли репликацию PostgreSQL,
- pgmode=h - Host — режим установки PostgreSQL непосредственное на сервер (не Docker);
- pghostmode=m или r — master и reserve. Режиме работы PostgreSQL соответственно;
- pgport=5441 — порт работы PostgreSQL. Используется отличный от 5432, так как будет занят экземпляром по умолчанию;
- pgpostgrespwd=PgPoStGrEsPwD — пароль для пользователя postgres;
- pgerapwd=PgErApWd — пароль для пользователя erapgadmin;
- pgreplicapwd=PgRePlIcApWd — пароль для работы репликации PostgreSQL;
- pskcookie=PsKcOoKiE — уникальная строка для работы репликации (одинаковая для обоих серверов);
- usedefaults — использовать прочие параметры по-умолчанию.
Таблица распределения микросервисов между серверами
Group | RoleId | Ports | Server 1 | Server 2 |
5441 | DB | DB | ||
10 | callstore | callstore | ||
20 | mdc | mdc | ||
30 | hunt | hunt | ||
40 | reg | reg | ||
50 | rsv | rsv | ||
60 | sel | sel | ||
70 | statestore | statestore | ||
80 | store | store | ||
90 | usr | usr | ||
100 | wssubscr | wssubscr | ||
110 | logstore | logstore | ||
120 | mware | mware | ||
130 | ic | ic | ||
140 | mic | mic | ||
150 | rpci | rpci | ||
160 | rpco | rpco | ||
200 | mix | mix | ||
210 | recmover | recmover | ||
220 | SS220 | svc | svc | |
230 | 80, 443 | ws | ws | |
240 | SS240 | 5090 | b2b | b2b |
250 | SS250 | 5085 | conf | conf |
260 | SS260 | 5080 – 5083 | esg | esg |
270 | SS270 | 5095 | ivr | ivr |
280 | SS280 | 5060 – 5063 | sg | sg |
370 | SS370 | 5086 | prompt | prompt |
290 | SS290 | 2954 .. 2959 | mgc | mgc |
300 | SS300 | 2944 | mg*2 | mg*2 |
310 | SS310 | dms | dms | |
320 | SS320 | msvc | msvc | |
330 | SS330 | im | im | |
340 | SS340 | |||
350 | SS350 | fs | fs | |
360 | SS360 | ap | ap | |
380 | SS380 | dfsync | dfsync | |
390 | SS390 | vmail | vmail | |
400 | SS400 | broker | broker | |
410 | SS410 | -domstore | -domstore | |
420 | SS420 | -meet | -meet | |
430 | SS430 | -redirect | -redirect | |
440 | SS440 | -usercenter | -usercenter |
где:
- жирным - потенциально высоконагруженный микросервис,
- зеленым - активный микросервис (active-active),
- красным - активный микросервис (active-passive),
- черным - равномерно нагруженные микросервисы.
Возможная схема реализации конфигурации
Удаление сервисов
При необходимости деинсталлировать сервисы (например, после неудачной установки)
bash era.sh uninstall
После запуска запустится Wizard, который позволит настроить параметры деинсталляции.
Деинсталляция со стандартными параметрами (без Wizard'а):
bash era.sh uninstall --usedefaults --eracontainername=era_01 --pgcontainername=postgres_01 --erainstancedatapath=/opt/era_01 --douninstallpg=y --pgmode=d
Где:
Параметр | Значение |
---|---|
eracontainername | Имя docker-контейнера Эра |
pgcontainername | Имя docker-контейнера Postgres |
erainstancedatapath | Путь к данным контейнера Эра |
douninstallpg | Деинсталлировать Postgres |
pgmode | Режим работы postgres (d=docker) |