Установка на master-сервер с помощью инсталлятора

Обзор

Установка системы производится с локальной машины через ssh-подключение к серверу, если доступный адрес сервера совпадает с адресом, на котором система должна быть развернута.

cd /tmp/debian_ubuntu

bash install_ssh.sh

В иных случаях, когда локальный адрес сервера недоступен снаружи, следует сначала распаковать и скопировать инсталлятор на сервер, затем подключиться по ssh и запустить скрипт.

rsync -avrh --progress -e "ssh -p PORT" /tmp/debian_ubuntu USER@HOST:/tmp

ssh USER@HOST -p PORT

cd /tmp/debian_ubuntu/era

bash era.sh install

Алгоритм процесса установки

1) Запустить скрипт установки (на локальной машине install_ssh.sh или на сервере era/era.sh).

2) Ввести адрес сервера и логин, дождаться копирования файлов на сервер, если скрипт запущен на локальной машине.

Enter remote server IP-address: 192.168.0.115

Enter remote server login: admin

3). Указать, есть ли на сервере доступ к интернет.

Should installer apt-update and download packages from internet? (Y/n):

Если доступ к интернет на сервере отсутствует, то в этом случае инсталлятор укажет на пакеты, которые отсутствуют на сервере, но должны быть установлены.
Если список не пуст, следует прервать процесс установки и воспользоваться установщиком пакетов.

Make sure that following containers are properly installed:
Proceed installation? (y/N):

4) Указать постфикс для установки.

Instance name postfix (recommended: _01, _02, etc; default: empty):

Одновременно на сервере может быть установлено несколько различных экземпляров системы в разных docker-контейнерах.
Этот постфикс будет присутствовать в имени контейнера, в имени инстанса СУБД PostgreSQL (если установлена здесь же), в именах каталогов файловой системы.
Рекомендуется сообщать экземплярам одной системы на разных серверах один и тот же постфикс.

5) Указать каталог по умолчанию для размещения данных (волюмов docker-контейнера, каталога с данными PostgreSQL, NFS-папки и т.д.)

Data path (default: /opt):

6) Выбрать в каком режиме производится установка. Первый сервер кластера - master, остальные - slave.

Are you installing master server (y/n)?: y

7) Указать название мастер-домена.
Этот корневой домен будет использоваться для создания дерева дочерних доменов, а также для генерации лицензии.
Возможно на этот домен будет выписываться wildcard сертификат SSL, и пользователи будут вводить имя этого домена в адресной строке браузера.

Enter master domain name (default: era-platform.ru): pbx.company.ru

8) Выбрать имя сервера.
Участвует в создании распределенной конфигурации, указывая конкретно на этот сервер.
По умолчанию в качестве имени предлагается hostname машины, но может быть указано любое уникальное значение, не повторяющееся на других серверах.

Enter server name for configuration (default: box-115): srv01

9) Выбрать использовать ли доступ к интернет через прокси сервер при установке.
В случае использования прокси необходимо будет указать адрес (имя) http и https сервера.

Should installer use http/https proxy (y/N)?:

10) Дождаться установки пакетов docker (если выбран режим установки с доступом к сети интернет).

11) Указать необходимо ли устанавливать экземпляр СУБД PostgreSQL.

Install PostgreSQL? (Y/n): y

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

11) Если выбран режим без установки сервера СУБД PostgreSQL, то указать параметры подключения к одному из серверов фермы PostgreSQL, куда следует подключить устанавливаемую систему.

Enter pgSql IP address:

Enter pgSql port:

Enter postgreSQL user 'erapgadmin' password: (default: era2020pg_role):

12) Если был выбран режим с установкой сервера СУБД PostgreSQL, то

12.1) Указать пароли для пользователей postgres, erapgadmin, era_replica.

Enter postgreSQL user 'postgres' password: (default: ********):

Enter postgreSQL user 'erapgadmin' password: (default: ********):

Enter postgreSQL user 'era_replica' password: (default: ********):

ВНИМАНИЕ! Необходимо задавать одинаковые пароли для каждого из этих пользователей при установке на все серверы, экземпляры СУБД которых будут находиться в режиме потоковой репликации.

12.2) Указать, необходима ли репликация (требуется, если число серверов не менее двух)

Do you need replication? (y/n): y

12.3) Если репликация не требуется (односерверная установка), то следует выбрать режим установки - в докер или в хост.
Если архив с докер образом PostgreSQL отсутствует в дистрибутиве будет предложено установить используя образ из docker hub (образ будет скачан при отсутствии)

Select PostgreSQL host/docker install mode (h/d):

Последующие шаги установки PostgreSQL выполняются только при выборе режима установки в хосте (h)

12.4) Выбрать путь для каталога с данными экземпляра PostgreSQL

Enter postgres instance/cluster data folder (default: /var/lib/postgresql/12/era_test):

12.5) Выбрать путь для каталога с резервными копиями экземпляра PostgreSQL.

Enter postgres instance/cluster backup folder (default: /tmp/pg_backups/era_test):

12.6) Выбрать режим установки - master.

Select PostgreSQL master/recovery install mode (m/r): m

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

12.7) Указать порт.

Enter pgSql port (default 5441):

ВНИМАНИЕ! Не следует указывать стандартный порт 5432 во избежание конфликта, поскольку он будет занят дефолтным экземпляром main.

12.8) Задать пароль для пользователя postgres:

Now setup password for system user 'postgres' (it would be used for ssh):

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

Ensure postgresql data folder root and permissions

Enter group name to add postgres into. Leave blank if no group need:

12.10) Дождаться установки экземпляра PostgreSQL и перехода к следующему этапу.

13) Настройка рабочих каталогов (томов контейнера)

13.1) Указать путь к каталогу в хосте для размещения тома под служебный каталог супервизора. Рекомендуется оставить значение по умолчанию.

/etc/supervisor/conf.d - is folder of system info.

Enter SUPV volume dir for /etc/supervisor/conf.d (default: /opt/era_test/supv):

13.2) Указать путь к каталогу в хосте для размещения тома под рабочие каталоги.

/var/lib/era - is folder of working directories (recording, mixing, mnesia).

Enter LIB volume dir for /var/lib/era (default: /opt/era_test/lib):

Следует изменить значение по умолчанию, если планом развертки предусмотрено размещение в специфическом смонтированном разделе.

13.3) Указать путь к каталогу в хосте для размещения тома под каталоги с лог-журналами.

/var/log/era - is folder of logging.

Enter LOG volume dir for /var/log/era (default: /opt/era_test/log):

Следует изменить значение по умолчанию, если планом развертки предусмотрено размещение в специфическом смонтированном разделе.

13.4) Указать путь к каталогу в хосте для размещения тома под каталоги с временными файлами.

/var/lib/era_files/local - is folder for local files (webserver and script-machine temporary files, file-server attachments).

Enter volume dir for /var/lib/era_files/local (default: /opt/era_test/local):

Следует изменить значение по умолчанию, если планом развертки предусмотрено размещение в специфическом смонтированном разделе.

13.5) Указать путь к каталогу в хосте для размещения тома под каталоги с временными файлами записей разговоров ролью MG.

/var/lib/era_files/rectemp - is folder for temp records of MG.

Enter volume dir for /var/lib/era_files/rectemp (default: /opt/era_test/rectemp):

Следует изменить значение по умолчанию, если планом развертки предусмотрено размещение в специфическом смонтированном разделе.

13.6) Указать путь к каталогу в хосте для размещения тома под каталог с длительным хранилищем лог-журналов.

/var/log/era_logstore - is folder of storage.

Enter LOGSTORE volume dir for /var/log/era_logstore (default: /opt/era_test/logstore):

Следует изменить значение по умолчанию, если планом развертки предусмотрено размещение в специфическом смонтированном разделе.

13.7) Указать путь к каталогу в хосте для размещения тома под каталог с хранилищем, которое синхранизируется автоматически между всеми серверами.

/var/lib/era_files/syncroot - is folder for files shared by notify-sync.

Enter LOGSTORE volume dir for /var/lib/era_files/syncroot (default: /opt/era_test/syncroot):

Следует изменить значение по умолчанию, если планом развертки предусмотрено размещение в специфическом смонтированном разделе.

13.8) Указать путь к каталогам в хосте для возможности перемещения файлов с одного диска на другой. Необходимо указать 3 каталога, рекомендуется указывать каталоги с разных дисков.

/var/lib/era_files/a
/var/lib/era_files/b
/var/lib/era_files/c

Enter volume dir for /var/lib/era_files/a (default: /opt/era_test/a):
Enter volume dir for /var/lib/era_files/b (default: /opt/era_test/b):
Enter volume dir for /var/lib/era_files/c (default: /opt/era_test/c):

Следует изменить значение по умолчанию, если планом развертки предусмотрено размещение в специфическом смонтированном разделе.

14) Настройка клиентских NFS папок (размещение в хосте томов под каталоги контейнера)

14.1) Указать путь к каталогу в хосте для размещения тома под хранилище записей разговоров по умолчанию.

RECPATH - is folder of storage. It is used to store records for a long time (alternative to S3 external storage).
        This volume could be non-fast. Recommended to mount it previously to reliable file storage.

Enter RECPATH NFS-client volume dir for /var/lib/recpath (default: /opt/era_test/era_recpath):

14.2) Указать путь к каталогу в хосте для размещения тома под внутри-сайтовую сетевую папку, доступную всем серверам текущего сайта (siteshare).

SITESHARE - is folder of NFS sync.
        It is used in arbitrary project cases for interaction within site.
        Recommended to mount it previously to reliable file storage.

Enter NFS-client volume dir for /var/lib/siteshare (default: /opt/era_test/era_siteshare):

14.3) Указать путь к каталогу в хосте для размещения тома под глобальную сетевую папку, доступную всем серверам кластера на всех сайтах (globalshare).

GLOBALSHARE - is folder of NFS sync.
        It is used in arbitrary project cases for interaction within all sites.
        Recommended to mount it previously to reliable file storage.

Enter NFS-client volume dir for /var/lib/globalshare (default: /opt/era_test/era_globalshare):

15) Выбрать, следует ли использовать текущий сервер в качестве NFS сервера.

Do you want to setup as NFS server (y/N)?:

ВНИМАНИЕ! Режим не рекомендуется к использованию, поскольку при выпадении данного сервера из кластера, доступ к NFS заблокируется на всех остальных серверах.

16) Выбрать, какой адрес следует использовать в качестве сервера NFS.

Enter NFS server address (empty to skip setup)?:

В идеале это должен быть виртуальный адрес группы файловых хранилищ, например, работающих по протоколу VRRP. Либо адрес устройства, выполняющего функцию надежного файлового хранилища.
Если адрес оставить пустым, то монтирования по пути клиентских NFS-каталогов не производится, и фактически shared каталоги являются лишь локальными.
Подобный режим может использоваться для стандартных задач хранения записей разговоров и вложений. Но лишает возможности использовать сетевые папки в сценариях.

ВНИМАНИЕ! При установке многосайтовой системы настройка mount-каталогов должна производиться более тонко, чем предоставляет скрипт инсталлятора.
В частности, должны быть разделены хранилища siteshare и globalshare.

17) Дождаться загрузки docker-образа

18) Указать cookie (код доступа между нодами кластера)

PSK cookie: (default: *********):

ВНИМАНИЕ! Код должен быть уникальным и совпадать на всех экземплярах системы, работающих в единой конфигурации.

19) Дождаться запуска контейнера

Era. Installation success!

20) Указать, необходимо ли установить тайм-зону MSK+03:00 для использования процессами nodejs

Do you need MSK timezone for nodejs usage? (Y/n):

Установка завершена.