...
Введение
Отказоустойчивая система ЕССМ ECCM реализуется по схеме резервирования Active-Active с использованием VIP (Virtual IP) адреса, что позволяет использовать единый адрес для доступа к каждому узлу системы и хранить на них актуальные данные. Для настройки отказоустойчивой схемы требуется выделить не менее трех серверов. В схеме резервирования также предусмотрено разделение ЕССМ ECCM на сервер с БД и сервер с ЕССМECCM, использующим данную эту базу — для таких случаев требуется выделить 5 серверов.
...
Стандартная схема отказоустойчивой системы представляет из себя собой кластер, состоящий из трех узлов: masterMaster-, slaveSlave-, witnessWitness-ноды. Взаимодействие с веб-интерфейсом происходит при помощи VIP, который находится на текущем мастере Keepalived. За состоянием баз данных PostgreSQL и Redis, а также очередью сообщений RabbitMQ , наблюдает узел witness: он Witness-нода: она же переключает мастерство Repmgr и Redis Sentinel при необходимости.
...
| Раскрыть | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
Схема отказоустойчивой системы при запуске БД на отдельных серверах
Схема отказоустойчивой системы с запуском базы данных на отдельных серверах представляет из себя собой совокупность двух кластеров:
Кластер баз данных включает в себя три сервера:
Кластер приложений включает в себя запуск ЕССМ В кластере приложений 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 или сервисов на сервере завершится с ошибкой. |
| Раскрыть | ||
|---|---|---|
| ||
Подготовка конфигурационного файла для запускаЕССМECCM при запуске БД на отдельных серверахОткройте файл
|
...
Все конфигурационные файлы должны быть идентичны между всеми нодами одинаковыми на всех нодах кластера. Для синхронизации файлов конфигурации между серверами можно воспользоваться утилитой 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 и сохраняет его.
| Раскрыть | ||||
|---|---|---|---|---|
| ||||
Использование корпоративного CAЕсли предусмотрен корпоративный CA, необходимо переместить переместите все файлы безопасного соединения в директорию
|
Синхронизация сертификатов безопасности
...
| Якорь | ||||
|---|---|---|---|---|
|
Для получения доступа к веб-интерфейсу необходимо установить установите утилиту Keepalived на каждой ноде с сервисами ЕССМECCM. Пример установки утилиты:
...
keepalived.conf— конфигурационный файл Keepalived, настраивающий VRRP для отказоустойчивой системы;check_app.sh— скрипт, проверяющий состояние сервисов ЕССМECCM. При сбое работы сервиса снижает приоритет сервера для последующей смены мастерства.
...
| Блок кода | ||||
|---|---|---|---|---|
| ||||
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-скрипта произведите запуск мастера с необходимыми параметрами, указав необходимые параметры. Пример запуска:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
./compose-tools.sh --install # установит docker, если он отсутствует в системе ./compose-tools.sh -s <MASTER_HOST> --cluster master |
| Подсказка |
|---|
Перед запуском самих контейнеров скрипт проверяет наличие файла |
Во время запуска Master-узла необходимо подтвердить подтвердите создание файла .env.personal и переменной ключа шифрования ENCRYPTION_SECRET_KEY. Описание файла и переменной приведено в разделе "Инструкция по установке и запуску".
Конфигурационный файл .env.personal с паролями должен быть идентичен между всеми нодами одинаковым на всех нодах кластера. Для синхронизации файла конфигурации между серверами можно воспользоваться утилитой rsync. Для передачи файла .env.personal используйте следующую команду после успешного запуска Master-узлаузла используйте следующую команду:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
sudo rsync -av --delete --rsync-path="sudo rsync" <полный путь до директории eccm>/.env.personal <имя пользователя сервера>@<IP-адрес сервера назначения>:<полный путь до директории eccm> |
...
После того как мастер будет инициализирован и готов к работе, перейдите на сервер Slave-узла. При помощи Запустите Slave с помощью bash-скрипта произведите запуск Slave с необходимыми параметрами, указав необходимые параметры. Пример запуска:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
./compose-tools.sh --install # установит docker, если он отсутствует в системе ./compose-tools.sh -s <SLAVE_HOST> --cluster slave |
Параллельно с запуском Slave-узла произведите запуск запустите Witness-узлаузел. Подключитесь к Witness-ноде . При помощи и запустите Witness с помощью bash-скрипта произведите запуск Witness с необходимыми параметрами, указав необходимые параметры. Пример запуска:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
./compose-tools.sh --install # установит docker, если он отсутствует в системе ./compose-tools.sh -s <WITNESS_HOST> --cluster witness |
После инициализации перейдите по ранее установленному VIP-адресу (имеет формат http://<VIP>/). Веб-интерфейс ЕССМ ECCM будет доступен.
| Раскрыть | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||
ЗапускЕССМECCM в отказоустойчивой системе при запуске БД на отдельных серверахДля запуска ЕССМ ECCM в отказоустойчивой системе при запуске БД на отдельном сервере перейдите на сервер будущей Master-базы данных. Запустите Master-базу данных при помощи следующей команды:
Во время запуска Master-базы данных необходимо подтвердить подтвердите создание файла Конфигурационный файл
После выполнения команды для каждого сервера назначения файл конфигурации будет соответствовать настроенному ранее. После того как база данных на Master-db будет проинициализирована, перейдите на сервер Slave-db. Запустите Slave-базу данных:
После полной инициализации баз данных Master-db и Slave-db перейдите на сервер Master-ноды приложения ECCM. При помощи Запустите мастер с помощью bash-скрипта произведите запуск мастера с необходимыми параметрами, указав необходимые параметры. Пример запуска:
Перейдите на сервер Slave-узла. При помощи Запустите Slave с помощью bash-скрипта произведите запуск Slave с необходимыми параметрами, указав необходимые параметры. Пример запуска:
После полной инициализации кластера приложений перейдите на сервер Witness-узла. При помощи Запустите Witness с помощью bash-скрипта произведите запуск Witness с необходимыми параметрами, указав необходимые параметры. Пример запуска:
После инициализации перейдите по ранее установленному VIP-адресу (имеет формат |