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

Ключ

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

...

Введение

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

...

Стандартная схема отказоустойчивой системы представляет из себя собой кластер, состоящий из трех узлов: masterMaster-, slaveSlave-, witnessWitness-ноды. Взаимодействие с веб-интерфейсом происходит при помощи VIP, который находится на текущем мастере Keepalived. За состоянием баз данных PostgreSQL и Redis, а также очередью сообщений RabbitMQ , наблюдает узел witness: он Witness-нода: она же переключает мастерство Repmgr и Redis Sentinel при необходимости.

...

Раскрыть
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-ноде при помощи любого текстового редактора и для минимальной настройки назначить назначьте следующие переменные:

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

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

Раскрыть
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 и получения информации о состоянии серверов.
Примечание

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

...

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

...

Репликация между базами данных PostgreSQL и 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 и сохраняет его.

Раскрыть
titleИспользование корпоративного CA

Использование корпоративного CA

Если предусмотрен корпоративный CA, необходимо переместить переместите все файлы безопасного соединения в директорию cluster-cert/ на Master-ноде, а именно:

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

При наличии файла Java Truststore также поместите его в директорию cluster-cert/.

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

Синхронизация сертификатов безопасности

...

Якорь
vip
vip
Настройка VIP

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

...

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

...

Блок кода
languagebash
titleНа каждой ноде приложений: eccm/2.10/
cp ./keepalived/* /etc/keepalived/

Убедитесь, что у скрипта check_app.sh есть права на выполнение. Если прав нет, используйте следующую команду:

...

При помощи любого текстового редактора откройте конфигурационный файл /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-скрипта произведите запуск мастера с необходимыми параметрами, указав необходимые параметры. Пример запуска:

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

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

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

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

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

...

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

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

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

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

После инициализации перейдите по ранее установленному 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-скрипта произведите запуск Slave с необходимыми параметрами, указав необходимые параметры. Пример запуска:

Блок кода
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-скрипта произведите запуск Witness с необходимыми параметрами, указав необходимые параметры. Пример запуска:

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

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