...
Отказоустойчивая система ЕССМ реализуется по схеме резервирования Active-Active с использованием VIP (Virtual IP) адреса, что позволяет использовать единый адрес для доступа к каждому узлу системы и хранить на них актуальные данные. Для настройки отказоустойчивой схемы требуется выделить не менее трех серверов. В схеме резервирования также предусмотрено разделение ЕССМ на сервер с БД и сервер с ЕССМ, использующим данную эту базу — для таких случаев требуется выделить 5 серверов.
...
Стандартная схема отказоустойчивой системы представляет из себя собой кластер, состоящий из трех узлов: masterMaster-, slaveSlave-, witnessWitness-ноды. Взаимодействие с веб-интерфейсом происходит при помощи VIP, который находится на текущем мастере Keepalived. За состоянием баз данных PostgreSQL и Redis, а также очередью сообщений RabbitMQ , наблюдает узел witness: он Witness-нода: она же переключает мастерство Repmgr и Redis Sentinel при необходимости.
...
| Раскрыть | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
Схема отказоустойчивой системы при запуске БД на отдельных серверах
Схема отказоустойчивой системы с запуском базы данных на отдельных серверах представляет из себя собой совокупность двух кластеров:
Кластер баз данных включает в себя три сервера:
Кластер приложений включает в себя запуск ЕССМ В кластере приложений ЕССМ запускается с использованием внешних баз данных. Для доступа к веб-интерфейсу необходимо использовать используйте 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 или сервисов на сервере завершится с ошибкой. |
| Раскрыть | ||
|---|---|---|
| ||
Подготовка конфигурационного файла для запуска ЕССМ при запуске БД на отдельных серверахОткройте файл
|
...
Все конфигурационные файлы должны быть идентичны между всеми нодами одинаковыми на всех нодах кластера. Для синхронизации файлов конфигурации между серверами можно воспользоваться утилитой rsync. Пример установки утилиты:
...
Репликация между базами данных PostgreSQL и Redis происходит по умолчанию в безопасном режиме. Для настройки безопасности защиты репликации необходимо настроить настройте сертификаты шифрования. Предусмотрена как генерация таких сертификатов, так и использование уже готовых.
...
При запуске ЕССМ будет также сгенерирован Java Truststore: Java-сервисы ECCM ЕССМ не читают ca.crt напрямую — они используют Java KeyStore в формате PKCS12. Сервис truststore-initer автоматически конвертирует ca.crt из cluster-cert/ в truststore.p12 и сохраняет его.
| Раскрыть | ||||
|---|---|---|---|---|
| ||||
Использование корпоративного CAЕсли предусмотрен корпоративный CA, необходимо переместить переместите все файлы безопасного соединения в директорию
|
...
Для синхронизации файлов из директории cluster-cert/ между узлами отказоустойчивой системы рекомендуем воспользоваться утилитой rsync. Пример установки утилиты был описан приведён в пункте разделе "Синхронизация файлов конфигурации".
...
| Якорь | ||||
|---|---|---|---|---|
|
Для получения доступа к веб-интерфейсу необходимо установить установите утилиту Keepalived на каждой ноде с сервисами ЕССМ. Пример установки утилиты:
...
| Блок кода | ||||
|---|---|---|---|---|
| ||||
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-скрипта произведите запуск мастера с необходимыми параметрами, указав необходимые параметры. Пример запуска:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
./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 |
...
| Раскрыть | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||
Запуск ЕССМ в отказоустойчивой системе при запуске БД на отдельных серверахДля запуска ЕССМ в отказоустойчивой системе при запуске БД на отдельном сервере перейдите на сервер будущей Master-базы данных. Запустите Master-базу данных при помощи следующей команды:
Во время запуска Master-базы данных необходимо подтвердить подтвердите создание файла Конфигурационный файл
После выполнения команды для каждого сервера назначения файл конфигурации будет соответствовать настроенному ранее. После того как база данных на Master-db будет проинициализирована, перейдите на сервер Slave-db. Запустите Slave-базу данных:
После полной инициализации баз данных Master-db и Slave-db перейдите на сервер Master-ECCM. При помощи ноды приложения ЕССМ. Запустите мастер с помощью bash-скрипта произведите запуск мастера с необходимыми параметрами, указав необходимые параметры. Пример запуска:
Перейдите на сервер Slave-узла. При помощи Запустите Slave с помощью bash-скрипта произведите запуск Slave с необходимыми параметрами, указав необходимые параметры. Пример запуска:
После полной инициализации кластера приложений перейдите на сервер Witness-узла. При помощи Запустите Witness с помощью bash-скрипта произведите запуск Witness с необходимыми параметрами, указав необходимые параметры. Пример запуска:
После инициализации перейдите по ранее установленному VIP-адресу (имеет формат |
...