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

Обзор

Установка системы производится с локальной машины через 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.116

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 (если установлена здесь же), в именах каталогов файловой системы.
Следует сообщать тот же постфикс, что и на master-сервере той же конфигурации.

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

Data path (default: /opt):

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

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

7) Указать адреса инфраструктурных микросервисов развернутого кластера.

Enter mic address (example: mic@1.2.3.4,mic1@1.2.3.4,ic1@1.2.3.4): mic@192.168.0.115,mic1@192.168.0.115,ic1@192.168.0.115

ВНИМАНИЕ! Адреса следует вводить через запятую без пробелов.
В примере мастер-сервер развернут на сервере 192.168.0.115, будет производиться попытка подключения к трём нодам последовательно.

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

Enter server name for configuration (default: box-116): srv02

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

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

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

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

Install PostgreSQL? (Y/n): y

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

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: ********):

Следует задать те же значения, что были заданы при установке на master-сервер.

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

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

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

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

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

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

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

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

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

12.6) Необходимо указать адрес и порт сервера, где расположен и доступен master-экземпляр.

Enter pgSql master IP address:

Enter pgSql port (default 5441):

12.7) Необходимо ввести пароль пользователя era_replica. Он был задан при установке системы на master-сервер, и сейчас необходимо его ввести для авторизации. Скрипт подсказывает пароль, введенный на шаге 11.1.

-> Loading backup...
Enter era_replica's db password (enter: *********):

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 и перехода к следующему этапу.

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

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

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

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

12.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):

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

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

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

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

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

12.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):

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

12.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):

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

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

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

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

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

12.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):

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

12.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):

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

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

13.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):

13.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):

13.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):

14) Отказаться от использования текущего сервера в качестве NFS сервера.

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

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

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

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

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

17) Указать cookie, совпадающий с заданным при установке master-сервера:

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

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

Era. Installation success!

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

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

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

Установка завершена!
Можно переходить к установке системы на следующий сервер!
Если система установлена на все серверы, можно переходить к созданию и настройке доменов.