Открыть меню
Платформа Эра. Документация
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Установка платформы

Материал из Платформа Эра. Документации
Для быстрой установки платформы, без погружения в детали, используйте статью по быстрой установке.

Общая информация

Установка системы производится на серверы с ОС Linux.

Первый сервер в рамках установки становится мастером, все последующие серверы подцепляются к нему.

После установки на мастер сервер создается комплексная распределенная конфигурация, включающая все выделенные под установку серверы.

Система на каждом из серверов разворачивается в docker-контейнере без внешней оркестрации.

Начальная установка требует подключения к СУБД, и предлагает установить экземпляр(ы) PostgreSQL на этих же серверах.

В частном случае система устанавливается на одном сервере (он же мастер), и в этом случае с помощью инсталлятора СУБД также может быть развернута в отдельном docker-контейнере.

В случае установки системы на нескольких серверах предполагается необходимость резервирования сервера БД, для этой цели разворачиваются два (или более) экземпляров на нескольких серверах, причем только первый инстанс СУБД разворачивается в режиме мастера, а последующие в режиме потоковой репликации мастера.

Требования к серверам

Минимальные требования к оборудованию:

  • Для ненагруженной (до 10 одновременных разговоров и 2-х рабочих доменов) тестовой системы: 4 cores 2.4 GHz, 8 GB RAM, 50 GB SSD/HDD.
  • Для многосерверной инсталляции минимальные параметры серверов могут сильно варьироваться в зависимости от конфигурации и распределения микросервисов.

Более детально, требования к оборудованию описаны в данной статье.

Поддерживаемые ОС:

  • 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"
  • Установка платформы должна производиться строго на постоянный локальный адрес (подсети 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-имена.
  • Шлюзы и маршруты должны позволять серверу корректно доставлять пакеты во всех необходимых направлениях.


Для нагруженных сред крайне рекомендуется использовать отдельный сервер для СУБД 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-адреса, параметры доступа к платформе и СУБД, конфигурацию многосерверной архитектуры и т.д. На этом же этапе происходит активация лицензии.

На последнем этапе, производится установка продуктового слоя и приложений, которые будут реализовывать функциал платформы.

Шаг 1. Установка платформы

Перед началом установки, необходио провести подготовку серверов и проверить их на соответствие требованиям. Пример подготовки.

Также, необходимо ответить на следующий набор вопросов:

  1. Сколько сайтов и серверов будет использоваться?
  2. Какой сервер будет мастер-серверов (при использовании многосерверной архитектуры)?
  3. Где будет располагаться СУБД PostgreSQL? (в docker-контейнере, локально на сервере, на отдельном сервере)
  4. Сколько будет инстансов PostgreSQL?
  5. Будет ли использоваться репликация?
  6. Какое будет имя мастер-домена? (данное имя не обязательно должно совпадать с реальным доменным именем сервера)

Установка master-сервера

Сервисы платформы устанавливаются с помощью скрипта ssh_install.sh, который входит в набор скриптов установки. Скачать скрипты установки и образ платформы можно с помощью команд из статьи по быстрой установке.

Набор скриптов должен быть распакован, а архив с образом системы должен быть помещен по пути common/era/image в каталоге со скриптами установки.

Скрипт установки представляет собой пошаговый wizard, который запрашивает все необходимые данные для установки. В данной статье на ресурсе Vendor можно найти полное описание каждого из шагов установки master-сервера.

Для более тонкой настройки параметров установки, можно использовать следующие параметры скрипта:

  -u, --user                   Remote ssh user login
  -h, --host                   Remote ssh host
  -p, --port                   Remote ssh port (default: 22)
      --sshkey                 The path to the ssh key to connect to the remote server (default: empty)
      --help                   Display this help and exit
      --y, --usedefaults       Use default value when it possible
      --useapt                 Download required packages from internet (default: y). Acceptable values: y | n
      --proceedwithoutapt      Continue the installation without confirmation from the user when selecting useapt=n (default: n). Acceptable values: y | n
      --ipaddress              Local interface where era should be installed (default same as host).
                                      Should exist on remote server as static local ip.
      --postfix                Instance name postfix (default: empty string)
      --datapath               Data path (default: /opt)
      --master                 Install master server or not. Acceptable values: y | n
      --masterdomain           Master domain name (default: era-platform.ru)
      --micaddress             Mic and Ic addresses (comma separated) for install non-master server
      --srvname                Server name for platform configuration (default: <hostname>)
      --pskcookie              PSK cookie (default: era2020key)
      --usenonrootuser         Use non-root user in container. (default: n). Acceptable values: y | n

Proxy:
      --useproxy               Should installer use http/https proxy (default: n). Acceptable values: y | n
      --ehttpproxy             Http_proxy (default: none)
      --ehttpsproxy            Https_proxy (default: the same as http_proxy)

PostgreSQL:
      --dopginstall            Install PostgreSQL (default: y). Acceptable values: y | n
      --pghost                 PostgreSQL server IP address
      --pgport                 PostgreSQL server port
      --pgpostgrespwd          PostgreSQL user 'postgres' password (default: era2020pg_main)
      --pgpostgresgroup        PostgreSQL user 'postgres' OS group. Group name to add postgres into (default: empty - do not add to any groups)
      --pgpostgresuser         PostgreSQL user name (default: platformpgadmin)
      --pgerapwd               PostgreSQL user password (default: era2020pg_role)
      --pgreplicapwd           PostgreSQL user 'era_replica' password (default: era2020pg_replica)
      --usereplic              Use replication. Acceptable values: y | n
      --pgmode                 PostgreSQL host/docker install mode.  Acceptable values: h | d
      --usedockerhubpgimage    Use docker hub for download PostgreSQL image. Acceptable values: y | n
      --pgcleardatafolder      Clear data/config folder if exists (default: y). Acceptable values: y | n
      --pgdatafolder           PostgreSQL instance/cluster data folder (default in host: /var/lib/postgresql/$pgVersion/$instanceName, in docker: /opt/era$postfix/postgresql)
      --pgbackupfolder         PostgreSQL instance/cluster backup folder (default: /tmp/pg_backups/$instanceName
      --pghostmode             PostgreSQL master/recovery install mode. Acceptable values: m | r

Host directories for volumes:
      --varlibvoldir           Folder of working directories on host (default: /opt/era$postfix/lib)
      --varlogvoldir           Folder of logging on host (default: /opt/era$postfix/log)
      --localvoldir            Folder for local files on host (default: /opt/era$postfix/local)
      --rectempvoldir          Folder for temp records of MG on host (default: /opt/era$postfix/rectemp)
      --logstorevoldir         Folder of storage on host (default: /opt/era$postfix/logstore)
      --syncrootvoldir         Folder for files shared by notify-sync on host (default: /opt/era$postfix/syncroot)
      --avoldir                Folder could be used in runtime to configure move some directories from one physical drive to another on host (default: /opt/era$postfix/a)
      --bvoldir                Folder could be used in runtime to configure move some directories from one physical drive to another on host (default: /opt/era$postfix/b)
      --cvoldir                Folder could be used in runtime to configure move some directories from one physical drive to another on host (default: /opt/era$postfix/c)

Nfs server setup:
      --installnfsserver       Install NFS server (default: n). Acceptable values: y | n
      --nfsclinetmask          Mask for nfs-clients (ex. 192.168.0.0/24)
      --recpathnfssrvdir       Folder of storage on NFS server (default: /opt/era$postfix/nfs_recpath)
      --sitesharenfssrvdir     Folder of NFS sync on NFS server (default: /opt/era$postfix/nfs_siteshare)
      --globalsharenfssrvdir   Folder of NFS sync on NFS server (default: /opt/era$postfix/nfs_globalshare)

Nfs client setup:
      --nfsserveraddr          NFS server address (default: empty value)
      --recpathnfsclidir       Folder of storage on NFS client (default: /opt/era$postfix/era_recpath)
      --sitesharenfsclidir     Folder of NFS sync on NFS client (default: /opt/era$postfix/era_siteshare)
      --globalsharenfsclidir   Folder of NFS sync on NFS client (default: /opt/era$postfix/era_globalshare)
      --installrshare          Create a system file to check access to NFS folder (default: y). Acceptable values: y | n

Vosk server setup:
      --installvosk            Install vosk server (default: n). Acceptable values: y | n
      --voskiface              Vosk server address (default: 0.0.0.0)
      --voskport               Vosk server port (default: 5001)

Extra actions:
      --dotwreuse              Set reuse time_wait network connections (default: n). Acceptable values: y | n

Примеры команды установки с детализацией параметров:

Installing master server. PostgreSQL in docker container.
> bash install_ssh.sh -y -h 192.168.0.122 -p 22 -u era --postfix=_11 --master=y --masterdomain=tester.ru --srvname=testsrv --dopginstall=y --usereplic=n --pgmode=d --usedockerhubpgimage=y --pgport=5451 --pskcookie=123456

Installing master server. PostgreSQL in host.
> bash install_ssh.sh -y -h 192.168.0.122 -p 22 -u era --postfix=_12 --master=y --masterdomain=tester2.ru --srvname=testsrv2 --dopginstall=y --usereplic=n --pgmode=h --pghostmode=m --pgport=5452 --pskcookie=123456

Installing non-master server. Without PostgreSQL.
> bash install_ssh.sh -y -h 192.168.0.124 -p 22 -u era --postfix=_11 --master=n --micaddress=mic1@192.168.0.122 --srvname=testsrv2 --dopginstall=n --pskcookie=123456

Installing master server. PostgreSQL in docker container. With ssh key file
> bash install_ssh.sh -y -h 192.168.0.122 -p 22 -u user --sshkey=~/ssh_keyfile --ipaddress=192.168.10.124 --postfix=_11 --master=y --masterdomain=era-platform.ru --srvname=testsrv --dopginstall=y --usereplic=n --pgmode=d --usedockerhubpgimage=y --pgport=5451 --pskcookie=123456


Installing master server. Without internet. PostgreSQL in docker container. (use 'prerequisites.sh --help' to see all parameters)
> bash prerequisites.sh -h 192.168.0.122 -u era --skipcheckremotehost --installpostgresql=n --installnfs=n
> bash install_ssh.sh -y -h 192.168.0.122 -p 22 -u era --ipaddress=192.168.0.122 --useapt=n --proceedwithoutapt --postfix=_11 --master=y --masterdomain=era-platform.ru --srvname=testsrv --dopginstall=y --usereplic=n --pgmode=d --usedockerhubpgimage=n --pgport=5451 --pskcookie=123456

Данные примеры и список параметров также можно получить с помощью следующей команды:

bash ssh_install.sh --help

Установка slave-сервера

Для установки slave-севрера в рамках сайта, первоначально необходимо установить мастер-сервер и произвести настройку конфигурации.

В рамках конфигурации необходимо произвести настройку перечня slave-серверов, после чего производить их непосредственную установку на сервера.

После создания и активации конфигурации мастер-сервера, можно сгенерировать набор команд для автоматической установки дополнительных серверов. Для этого служит сервис rest/v1/master/installer. Данный сервис автоматически сформирует команды установки для тех серверов, которые на момент выполнения запроса не подключены (не доступны на этот момент) к системе. Данные команды являются "рамочными", их можно использовать "как есть", однако в большинстве случаев их необходимо дополнить дополнительными параметрами (например, изменить механизм работы postgresql).

Можно выполнить запрос к этому серверу прямо в браузере, после чего выполнить предложенные команды на необходимых серверах.

При необходимости, можно обратиться к данной статье на ресурсе Vendor, где описывается установка slave-сервера с помощью wizard'а.

Примеры

Установка “первого” сервера

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 — использовать прочие параметры по-умолчанию.


Шаг 2. Создание конфигурации

1. Запуск приложения "Настройки"

1.1) Открыть браузер и ввести в адресную строку IP-адрес сервера.

1.2) Авторизоваться в мастер-домене, который был задан при установке на мастер-сервер на шаге 7, под учетной записью admin и аналогичным паролем:

Приложения мастер-домена

1.3) Запустить веб-приложение "Настройки":

Приложение настройки

2. Создание и активация конфигурации

Раздел "Конфигурации"

Без этого этапа при установке система не сможет быть собрана в единое целое. А скрипт установки на второй и последующие серверы будет ожидать появления в конфигурации данных для самоопределения и не будет завершаться.

2.1) Открыть в левом меню раздел "Конфигурации".

2.2) Нажать кнопку "МАСТЕР", заполнить значения (на примере односерверной конфигурации):

Основные параметры конфигурации

Важно! Мастер конфигурации доступен только при наличии активной конфигурации. После установки мастер сервера базовая активная конфигурация появляется в течении 1 минуты.

2.2.1) Задать название конфигурации, название мастер-домена подставится автоматически из базовой конфигурации (введенное при установке) и выбрать количество серверов.

Адреса конфигурации

Мастер поддерживает создание конфигураций для 1-6 серверов, конфигурация впоследствие может быть расширена прямой модификацией JSON.

2.2.2) Проверить имя сервера и IP-адрес мастер-сервера (подставятся автоматически из базовой конфигурации).

Параметры подключения к СУБД

2.2.3) Проверить параметры подключения к серверу СУБД PostgreSQL (подставятся автоматически из базовой конфигурации).

2.2.4) На следующем шаге отобразится сформированная конфигурация в формате JSON. На этом шаге ее можно взять за основу, и скорректировать. После чего сохранить:

2.3) Новая конфигурация появится в списке.

Через некоторое время после проверки сервером, она примет статус корректной:

JSON конфигурации

В случае, если конфигурация имеет ошибки, она примет статус ошибочной, и в ее свойствах будет информация об обнаруженных ошибках с указанием разделов.

2.4) В завершение этапа конфигурацию следует активировать.

Список конфигураций

3. Проверка состояния системы

Открыть в левом меню раздел "Запросы к API", и оставив все значения по умолчанию, нажать "Выполнить":

В случае, если в ответе нет никаких предупреждений - система находится в норме.

Активация конфигурации из списка
Раздел "Запросы к API"

Если есть предупреждения - после активации новой конфигурации целесообразно подождать 1-2 минуты прежде состояние нормализуется.

Запрос не выполняется автоматически - чтобы его повторить, нужно снова нажать кнопку "Выполнить".

Настройка конфигурации завершена!

Детальная настройка конфигурации

При помощи JSON'а конфигурации, можно детально настроить работу сервисов и архитектуру платформы.

Детальное описание всех параметров конфигурации можно найти в соотетствующем разделе ресурса Vendor.

Описание и примеры настройки многосерверной конфигурации также можно найти там же.

Шаг 3. Установка продуктового слоя

После установки и базовой настройки платформы Эра, можно приступить к установке продуктового слоя. Установка подробно описана в соответствующей статье.

Удаление платформы с сервера

При необходимости деинсталлировать сервисы (например, после неудачной установки)

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)

Полезные ссылки

Подключение SSL-сертификатов

Используемые порты

Лицензирование