Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Введение

Отказоустойчивая система ЕССМ ECCM реализуется по схеме резервирования Active-Active с использованием VIP (Virtual IP) адреса, что позволяет использовать единый адрес для доступа к каждому узлу системы и хранить на них актуальные данные. Для настройки отказоустойчивой схемы требуется выделить не менее трех серверов. В схеме резервирования также предусмотрено разделение ЕССМ ECCM на сервер с БД и сервер с ЕССМECCM, использующим эту базу — для таких случаев требуется выделить 5 серверов.

...

Раскрыть
titleСхема отказоустойчивой системы при запуске БД на отдельном сервере

Схема отказоустойчивой системы при запуске БД на отдельных серверах

draw.io Diagram
bordertrue
diagramNameДиаграмма без названия-1772101019543
simpleViewerfalse
width600
linksauto
tbstyletop
diagramDisplayNameСхема отказоустойчивой системы ЕССМ с разделением БД и приложения
lboxtrue
diagramWidth1221
revision1

Схема отказоустойчивой системы с запуском базы данных на отдельных серверах представляет собой совокупность двух кластеров:

  • Кластер приложений;
  • Кластер баз данных.

Кластер баз данных включает три сервера:

  • Master-база данных PostgreSQL — база данных для всех операций;
  • Slave-база данных PostgreSQL — база данных для операций чтения и репликации с Master;
  • Witness-нода — сервер для отслеживания состояния PostgreSQL, Redis и RabbitMQ с переключением мастерства Repmgr и Redis Sentinel по необходимости.
Информация

Сервисы Redis и RabbitMQ находятся в кластере приложений, поэтому доступ до Witness также должен быть обеспечен.

В кластере приложений ЕССМ ECCM запускается с использованием внешних баз данных. Для доступа к веб-интерфейсу используйте VIP, который находится на текущем мастере Keepalived.

Подсказка
Переключение мастерства в отказоустойчивой системе описано в разделе "Переключение мастерства в отказоустойчивой системе".

Подготовка серверов

Перед запуском ЕССМ ECCM в отказоустойчивой системе по любой из ранее представленных схем подготовьте конфигурационные и вспомогательные файлы.

Настройка файла .env.cluster

Перед запуском ЕССМ ECCM в отказоустойчивой системе подготовьте конфигурационный файл .env.cluster, который находится в корневой директории проекта.

Подсказка
Назначение переменных в конфигурационном файле .env.cluster описано в разделе "Инструкция по установке и запуску".

Подготовка конфигурационного файла для запуска

...

ECCM в стандартной схеме отказоустойчивой системы

Откройте файл .env.cluster на Master-ноде при помощи любого текстового редактора и для минимальной настройки назначьте следующие переменные:

...

Раскрыть
titleПодготовка конфигурационного файла для запуска ЕССМ при запуске БД на отдельных серверах

Подготовка конфигурационного файла для запуска

ЕССМ

ECCM при запуске БД на отдельных серверах

Откройте файл .env.cluster на Master-ноде приложения ЕССМ ECCM при помощи любого текстового редактора и для минимальной настройки назначьте следующие переменные:

  • ECCM_MASTER_HOST — содержит IP-адрес Master-ноды приложения ЕССМECCM;
  • ECCM_SLAVE_HOST — содержит IP-адрес Slave-ноды приложения ЕССМECCM;
  • ECCM_WITNESS_HOST — содержит IP-адрес Witness-ноды;
  • POSTGRES_MASTER_HOST — содержит IP-адрес Master-ноды кластера баз данных;
  • POSTGRES_SLAVE_HOST — содержит IP-адрес Slave-ноды кластера баз данных;
  • REDIS_PASSWORD — содержит пароль, используемый сервисом Redis для подключения к кластеру;
  • RABBITMQ_CLUSTER_PASSWORD — содержит пароль, используемый сервисом RabbitMQ для подключения к кластеру;
  • SENTINEL_PASSWORD — содержит пароль, используемый службой мониторинга для подключения к кластеру сервиса Redis и получения информации о состоянии серверов.
Примечание

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

...

  • ca.crt — корневой CA-сертификат;
  • cluster.crt — сертификат кластера, подписанный CA;
  • cluster.key — приватный ключ кластера.

При запуске ЕССМ ECCM будет также сгенерирован Java Truststore: Java-сервисы ЕССМ ECCM не читают ca.crt напрямую — они используют Java KeyStore в формате PKCS12. Сервис truststore-initer автоматически конвертирует ca.crt из cluster-cert/ в truststore.p12 и сохраняет его.

...

Для доступа к веб-интерфейсу установите утилиту Keepalived на каждой ноде с сервисами ЕССМECCM. Пример установки утилиты:

...

  • keepalived.conf — конфигурационный файл Keepalived, настраивающий VRRP для отказоустойчивой системы;
  • check_app.sh — скрипт, проверяющий состояние сервисов ЕССМECCM. При сбое работы сервиса снижает приоритет сервера для последующей смены мастерства.

...

При помощи любого текстового редактора откройте конфигурационный файл /etc/keepalived/keepalived.conf. На сервере, где будет находиться приложение ЕССМ ECCM с ролью мастер, измените следующие параметры:

  • INTERFACE_NAME — сетевой интерфейс, на котором будет находиться ЕССМECCM. Выставляется индивидуально для каждого сервера;
  • ROUTER_ID — идентификатор виртуального маршрутизатора, принимающий значения от 0 до 255. Одинаковый на всех серверах;
  • PRIORITY — приоритет текущей ноды, принимающий значения от 0 до 255. Это значение должно быть больше параметра weight (в стандартной конфигурации weight = -10), в ином случае мастерство переключаться не будет;
  • PASSWORD — пароль VRRP-аутентификации. Одинаковый на всех серверах;
  • VIP_IP_ADDRESS — виртуальный IP-адрес, через который будет предоставляться доступ к веб-интерфейсу. Одинаковый на всех серверах.

Далее перейдите на сервер, где будет находиться приложение ЕССМ ECCM с ролью Slave, и измените ранее описанные параметры.

...

В журнале должны отобразиться записи: Entering BACKUP STATE и Entering MASTER STATE.

Запуск

...

ECCM в отказоустойчивой системе при стандартной схеме

Для запуска ЕССМ ECCM в отказоустойчивой системе при стандартной схеме перейдите на сервер будущего Master-узла. Запустите мастер с помощью bash-скрипта, указав необходимые параметры. Пример запуска:

...

После инициализации перейдите по ранее установленному VIP-адресу (имеет формат http://<VIP>/). Веб-интерфейс ЕССМ ECCM будет доступен.

Раскрыть
titleЗапуск ЕССМ в отказоустойчивой системе при запуске БД на отдельных серверах

Запуск

ЕССМ

ECCM в отказоустойчивой системе при запуске БД на отдельных серверах

Для запуска ЕССМ ECCM в отказоустойчивой системе при запуске БД на отдельном сервере перейдите на сервер будущей Master-базы данных. Запустите Master-базу данных при помощи следующей команды:

Блок кода
languagebash
titleMaster-db: eccm/2.10/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <POSTGRES_MASTER_HOST> --database-only --cluster master
Подсказка

Перед запуском самих контейнеров скрипт проверяет наличие файла .env.personal и в случае его отсутствия предлагает создать его в дополнительном диалоговом окне. При стандартных паролях система также предложит изменить их: вручную или с помощью автоматической генерации. После изменения паролей проект продолжит запуск.

Во время запуска Master-базы данных подтвердите создание файла .env.personal и переменной ключа шифрования ENCRYPTION_SECRET_KEY. Описание файла и переменной приведено в разделе "Инструкция по установке и запуску".

Конфигурационный файл .env.personal с паролями должен быть одинаковым на всех нодах кластера. Для синхронизации файла конфигурации между серверами можно воспользоваться утилитой rsync. Для передачи файла .env.personal после успешного запуска Master-db используйте следующую команду:

Блок кода
languagebash
titleMaster-db
sudo rsync -av --delete --rsync-path="sudo rsync" <полный путь до директории eccm>/.env.personal <имя пользователя сервера>@<IP-адрес сервера назначения>:<полный путь до директории eccm>

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

После того как база данных на Master-db будет проинициализирована, перейдите на сервер Slave-db. Запустите Slave-базу данных:

Блок кода
languagebash
titleSlave-db: eccm/2.10/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <POSTGRES_SLAVE_HOST> --database-only --cluster slave

После полной инициализации баз данных Master-db и Slave-db перейдите на сервер Master-ноды приложения ЕССМECCM. Запустите мастер с помощью bash-скрипта, указав необходимые параметры. Пример запуска:

Блок кода
languagebash
titleMaster-app: eccm/2.10/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <ECCM_MASTER_HOST> --cluster master --database-host <POSTGRES_MASTER_HOST> --database-port <POSTGRES_MASTER_PORT> --backup-database-host <POSTGRES_SLAVE_HOST> --backup-database-port <POSTGRES_SLAVE_PORT>

Перейдите на сервер Slave-узла. Запустите Slave с помощью bash-скрипта, указав необходимые параметры. Пример запуска:

Блок кода
languagebash
titleSlave-app: eccm/2.10/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <ECCM_SLAVE_HOST> --cluster slave --database-host <POSTGRES_MASTER_HOST> --database-port <POSTGRES_MASTER_PORT> --backup-database-host <POSTGRES_SLAVE_HOST> --backup-database-port <POSTGRES_SLAVE_PORT>

После полной инициализации кластера приложений перейдите на сервер Witness-узла. Запустите Witness с помощью bash-скрипта, указав необходимые параметры. Пример запуска:

Блок кода
languagebash
titleWitness: eccm/2.10/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <ECCM_WITNESS_HOST> --cluster witness

После инициализации перейдите по ранее установленному VIP-адресу (имеет формат http://<VIP>/). Веб-интерфейс ЕССМ ECCM будет доступен.