| Оглавление |
|---|
Введение
Отказоустойчивая система ECCM реализуется по схеме резервирования Active-Active с использованием VIP (Virtual IP) адреса, что позволяет использовать единый адрес для доступа к каждому узлу системы и хранить на них актуальные данные. Для настройки отказоустойчивой схемы требуется выделить не менее трех серверов. В схеме резервирования также предусмотрено разделение ECCM на сервер с БД и сервер с ECCM, использующим эту базу — для таких случаев требуется выделить 5 серверов.
...
| Подсказка |
|---|
| Процесс переключения мастерства в отказоустойчивой системе подробнее описан в разделе "Переключение мастерства в отказоустойчивой системе". |
| Раскрыть | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||
Схема отказоустойчивой системы при запуске БД на отдельных серверах
Схема отказоустойчивой системы с запуском базы данных на отдельных серверах представляет собой совокупность двух кластеров:
Кластер баз данных включает три сервера:
В кластере приложений ECCM запускается с использованием внешних баз данных. Для доступа к веб-интерфейсу используйте VIP, который находится на текущем мастере Keepalived.
|
Подготовка серверов
Перед запуском ECCM в отказоустойчивой системе по любой из ранее представленных схем подготовьте конфигурационные и вспомогательные файлы.
...
| Подсказка |
|---|
Назначение переменных в конфигурационном файле .env.cluster описано в разделе "Инструкция по установке и запуску". |
Подготовка конфигурационного файла для запуска ECCM в стандартной схеме отказоустойчивой системы
...
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 при запуске БД на отдельных серверахОткройте файл
|
...
| Раскрыть | ||||
|---|---|---|---|---|
| ||||
Использование корпоративного CAЕсли предусмотрен корпоративный CA, переместите все файлы безопасного соединения в директорию
|
Синхронизация сертификатов безопасности
Для синхронизации файлов из директории cluster-cert/ между узлами отказоустойчивой системы рекомендуем воспользоваться утилитой rsync. Пример установки утилиты был описан в пункте "Синхронизация файлов конфигурации".
Для передачи сертификатов кластера используйте следующую команду:
...
Для доступа к веб-интерфейсу установите (при отсутствии) утилиту Keepalived, межсетевой экран iptables и стандартные утилиты Linux на каждой ноде с сервисами ECCM. Пример установки утилиты:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
sudo apt install keepalived iptables util-linux |
В директории keepalived подготовлены конфигурационные файлы и скрипты для утилитыработы с VIP:
keepalived.conf— конфигурационный файл Keepalived, настраивающий VRRP для отказоустойчивой системы;check_app.sh— скрипт, проверяющий состояние сервисов ECCM. При сбое работы сервиса снижает приоритет сервера для последующей смены мастерства.
После установки скопируйте все конфигурационные файлы из директории keepalived/ в директорию /etc/keepalived/:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
cp ./keepalived/* /etc/keepalived/ |
Убедитесь, что у скрипта check_app.sh есть права на выполнение. Если прав нет, используйте следующую команду:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
chmod 755 /etc/keepalived/check_app.sh |
При помощи любого текстового редактора откройте конфигурационный файл /etc/keepalived/keepalived.conf. На сервере, где будет находиться приложение ECCM с ролью мастер, измените следующие параметры:
...
- ;
tftp_snat;sh— скрипт, отслеживающий работу TFTP с VIP;eccm-tftp-snat.serviceиeccm-tftp-snat.timer— служба и таймерsystemd, периодически синхронизирующие сетевые правила межсетевого экрана с текущим состоянием отказоустойчивой системы.
При помощи любого текстового редактора откройте конфигурационный файл keepalived/keepalived.conf. На сервере, где будет находиться приложение ECCM с ролью мастер, измените следующие параметры:
INTERFACE_NAME— сетевой интерфейс, на котором будет находиться ECCM. Выставляется индивидуально для каждого сервера;ROUTER_ID— идентификатор виртуального маршрутизатора, принимающий значения от 0 до 255. Одинаковый на всех серверах;PRIORITY— приоритет текущей ноды, принимающий значения от 0 до 255. Это значение должно быть больше параметраweight(в стандартной конфигурацииweight= -10), в ином случае мастерство переключаться не будет;PASSWORD— пароль VRRP-аутентификации. Одинаковый на всех серверах;VIP_
...
ADDRESS— виртуальный IP-адрес, через который будет предоставляться доступ к веб-интерфейсу. Одинаковый на всех серверах
...
- ;
PREFIX_LENGTH— длина префикса виртуального IP-адреса, например "32".
При помощи любого текстового редактора откройте файл eccm-tftp-snat.service и установите значения VIP_ADDRESS и INTERFACE_NAME в соответствии с ранее указанными в конфигурационном файле Keepalived. Далее перейдите на сервер, где будет находиться приложение Далее перейдите на сервер, где будет находиться приложение ECCM с ролью Slave, и измените ранее описанные параметры.
...
| Подсказка |
|---|
| Процесс переключения мастерства в отказоустойчивой системе описан в разделе "Переключение мастерства в отказоустойчивой системе". |
Рекомендуемые значения:
- Если необходимо, чтобы мастерство возвращалось исходному мастеру:
- Master-узел должен иметь приоритет 101;
- Slave-узел должен иметь приоритет 100;
- Если нет необходимости в возвращении мастерства исходному мастеру:
- На всех узлах выставить приоритет 100.всех узлах выставить приоритет 100.
После настройки всех файлов скопируйте из директории keepalived/ в директорию /etc/systemd/system файлы eccm-tftp-snat.service и eccm-tftp-snat.timer:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
cp eccm-tftp-snat.service eccm-tftp-snat.timer /etc/systemd/system/ |
Оставшиеся файлы скопируйте в директорию /etc/keepalived/:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
cp keepalived.conf /etc/keepalived/
cp check_app.sh /etc/keepalived/
cp tftp_snat.sh /etc/keepalived/ |
Укажите корректные права доступа для скопированных файлов:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
chown root:root /etc/keepalived/check_app.sh /etc/keepalived/tftp_snat.sh
chown root:root /etc/systemd/system/eccm-tftp-snat.service /etc/systemd/system/eccm-tftp-snat.timer
chmod 755 /etc/keepalived/check_app.sh /etc/keepalived/tftp_snat.sh
chmod 644 /etc/systemd/system/eccm-tftp-snat.service /etc/systemd/system/eccm-tftp-snat.timer |
После этого запустите Keepalived и сервисы на каждом узле. Пример запуска и добавления в автозагрузку:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
sudosystemctl enable keepalived systemctl start keepalived sudosystemctl daemon-reload systemctl enable keepalived--now eccm-tftp-snat.timer |
Убедитесь, что роли между узлами были распределены, при помощи следующей команды:
...
Для запуска ECCM в отказоустойчивой системе при стандартной схеме перейдите на сервер будущего Master-узла. Запустите мастер Master с помощью bash-скрипта, указав необходимые параметры. Пример запуска:
...
Во время запуска 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-скрипта, указав необходимые параметры. Пример запуска:
...
| Раскрыть | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||
Запуск ECCM в отказоустойчивой системе при запуске БД на отдельных серверахДля запуска ECCM в отказоустойчивой системе при запуске БД на отдельном сервере перейдите на сервер будущей Master-базы данных. Запустите Master-базу данных при помощи следующей команды:
Во время запуска Master-базы данных подтвердите создание файла Конфигурационный файл
После выполнения команды для каждого сервера назначения файл конфигурации будет соответствовать настроенному ранее. После того как база данных на Master-db будет проинициализирована, перейдите на сервер Slave-db. Запустите Slave-базу данных:
После полной инициализации баз данных Master-db и Slave-db перейдите на сервер Master-ноды приложения ECCM. Запустите мастер с помощью bash-скрипта, указав необходимые параметры. Пример запуска:
Перейдите на сервер Slave-узла. Запустите Slave с помощью bash-скрипта, указав необходимые параметры. Пример запуска:
После полной инициализации кластера приложений перейдите на сервер Witness-узла. Запустите Witness с помощью bash-скрипта, указав необходимые параметры. Пример запуска:
После инициализации перейдите по ранее установленному VIP-адресу (имеет формат |