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

Ключ

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

...

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

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

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

...

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

...

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

...

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

Необходимо открыть Откройте файл .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Подготовка конфигурационного файла для запуска ЕССМ при запуске БД на отдельных серверах

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

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

...

При запуске ЕССМ будет также сгенерирован 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 в статье Инструкция по установке и запуску.

...

Для синхронизации файлов из директории cluster-cert/ между узлами отказоустойчивой системы рекомендуем воспользоваться утилитой rsync. Пример установки утилиты был описан приведён в пункте разделе "Синхронизация файлов конфигурации".

...

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

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

...

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

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

...

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

...

Для запуска ЕССМ в отказоустойчивой системе при стандартной схеме перейдите на сервер будущего 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

...

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

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

Для запуска ЕССМ в отказоустойчивой системе при запуске БД на отдельном сервере перейдите на сервер будущей 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>/). Веб-интерфейс ЕССМ будет доступен.

...