Общая информация
Установка системы производится на серверы с ОС Linux.
Первый сервер в рамках установки становится мастером, все последующие серверы подцепляются к нему.
После установки на мастер сервер создается комплексная распределенная конфигурация, включающая все выделенные под установку серверы.
Система на каждом из серверов разворачивается в docker-контейнере без внешней оркестрации.
Начальная установка требует подключения к СУБД, и предлагает установить экземпляр(ы) PostgreSQL на этих же серверах.
В частном случае система устанавливается на одном сервере (он же мастер), и в этом случае с помощью инсталлятора СУБД также может быть развернута в отдельном docker-контейнере.
В случае установки системы на нескольких серверах предполагается необходимость резервирования сервера БД, для этой цели разворачиваются два (или более) экземпляров на нескольких серверах, причем только первый инстанс СУБД разворачивается в режиме мастера, а последующие в режиме потоковой репликации мастера.
Требования к серверам
Минимальные требования к оборудованию:
- Для ненагруженной тестовой системы: 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 (рекомендованная)
- Ubuntu
- Astra Linux
- RedOS
Требования к среде:
- Статический IPv4 адрес
- systemd, ssh-server
- Необходимые пакеты: sudo, apt-get, rsync, wget, curl
- Опциональные пакеты: net-tools, docker (docker-ce, docker-ce-cli, containerd.io), postgresql-12 (12,13,14,15)
- Пакеты для отладки: htop, tshark, iotop, iostat, sysstat, members,
- Вхождение текущего пользователя, под которым будет инииироваться установка платформы, в sudoers
- Обновление из стандартных репозиториев. Добавьте их в sources.list при необходимости
- Локаль ru-RU.UTF-8 - используется инсталлером платформы при настройке сервера БД PostgreSQL
- Диски для хранилищ должны быть размечены и примонтированы, рекомендуется папка "/mnt/…"
- Каталог для размещения данных БД должен быть разрешен на чтение и запись для группы, в которую в ходе установки БД будет добавлен пользователь postgres. Имя группы произвольно, например "storage"
Для нагруженных сред крайне рекомендуется использовать отдельный сервер для СУБД PostgreSQL, который будет отдельно обслуживаться. Установка с PostgreSQL в рамках docker-контейнера на том же сервере, подразумевает использование экземпляра платформы, в основном, для разработки и тестирования.
Установка платформы должна производиться строго на постоянный локальный адрес (подсети 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-имена.
Шлюзы и маршруты должны позволять серверу корректно доставлять пакеты во всех необходимых направлениях.
Пример подготовки сервера к установке описан в сооответствующей статье.
Варианты установки платформы
Процесс установки и конфигурация системы напрямую зависят от двух параметров - количества сайтов и количества серверов.
Сайт - это экземпляр платформы, функционирующий самостоятельно. Каждый сайт состоит из одного или нескольких серверов, на которых размещены микросервисы платформы. Установка нескольких сайтов служит для обеспечения горячего резервирования (active-passive) и решения других подобных задач. Для каждого сайта используется отдельный ключ активации. Подробнее можно прочитать в статье про лицензирование.
Сервер - это непосредственно среда, в рамках которой функционируют микросервисы платформы. Каждый сайт платформы может быть развернут на нескольких серверах (master-slave), для распределения нагрузки от микросервисов.
В простейшем случае, платформа может быть развернута полностью на одном сервере, однако данная конфигурация не рекомендуется для нагруженных продуктивных сред.
Особенности работы платформы в многосерверной конфигурации:
- Высокая доступность между серверами. Сетевая доступность между серверами обеспечивается непрерывно с задержкой не более 1 мс. Любой потерянный пакет считается падением сервера;
- Ресурсов серверов достаточно для полноценной работы платформы на любом из серверов. При их совместной доступности платформа использует ресурсы нескольких серверов;
- В случае выхода из строя любого из серверов, конфигурация максимально быстро (в течение пары секунд) переезжает на оставшийся сервер;
- Система переходит в режим односерверной конфигурации, при котором может работать неопределенно долго;
- Многосерверная конфигурация администрируется так же, как и односерверная. Особенностью является случайное распределение лог-файлов между серверами. Рекомендуется использовать встроенный сборщик логов.
- Файловое хранилище не реплицируется. Записи будут храниться на одном из серверов (но только на одном). В случае выхода из строя одного из серверов, записи этого сервера будут временно недоступны до восстановления работы.
При установке многосайтовой конфигурации, каждый из сайтов устанавливается как отдельный экземпляр платформы, затем между ними настраивается синхронизация с помощью интеграционного канала. Более подробно про настройку синхронизации рассказано в статье про георезервирование.
Порядок установки
Общий алгоритм установки состоит из трёх принципиальных шагов:
- Установка платформы
- Создание и активация конфигурации
- Установка продуктового слоя
На этапе установки платформы, происходит непосредственно установка сервисов на необходимые сервера. Далее, формируется конфигурация сайта, включающая IP-адреса, параметры доступа к платформе и СУБД, конфигурацию многосерверной архитектуры и т.д. На этом же этапе происходит активация лицензии.
На последнем этапе, производится установка продуктового слоя и приложений, которые будут реализовывать функциал платформы.