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

Ключ

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

...

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

Схема отказоустойчивой системы при запуске БД на

отдельном сервере

отдельных серверах

draw.io Diagram
bordertrue
diagramNameДиаграмма без названия-1772101019543
simpleViewerfalse
width600
linksauto
tbstyletop
diagramDisplayNameСхема отказоустойчивой системы ЕССМ с разделением БД и приложения
lboxtrue
diagramWidth1221
revision11

Отказоустойчивая система с запуском базы данных на отдельном сервере отдельных серверах представляет из себя совокупность двух кластеров:

  • Кластер приложений;
  • Кластер баз данных.

Кластер баз данных включает в себя три сервера:

  • Master база данных PostgreSQL — база данных для всех операций;
  • Slave база данных PostgreSQL — база данных для операций чтения и репликации с Master;
  • Witness-нода — сервер для отслеживания состояния PostgreSQL и Redis с переключением мастерства Repmgr и Redis Sentinel по необходимости.
Информация

Сервис Redis находится в кластере приложений, поэтому доступ до Witness также должен быть обеспечен.

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

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

...

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

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

отдельном сервере

отдельных серверах

Для каждого кластера необходимо настроить конфигурационный файл по-разному.

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

  • ALLOWED_HOSTS — переменная, указывающая разрешенные IP-адреса. Значение переменной должно соответствовать IP-адресам всем серверам, участвующим в работе отказоустойчивой системы;
  • MASTER_HOST — переменная, указывающая IP-адрес Master-ноды ECCM приложения;
  • SLAVE_HOST — переменная, указывающая IP-адрес Slave-ноды ECCM приложения;
  • WITNESS_HOST — переменная, указывающая IP-адрес Witness-ноды из кластера баз данных;
  • SENTINEL_MASTER_NAME — переменная, содержащая уникальное произвольное имя, присваиваемое кластеру баз данных для их мониторинга;
  • SENTINEL_PASSWORD — переменная, содержащая пароль, используемый службой мониторинга для подключения к кластеру баз данных и получения информации о состоянии серверов.
Примечание

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

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

  • ROLE — переменная, указывающая роль БД в кластере. Допустимые значения переменной: master, slave;
  • ALLOWED_HOSTS — переменная, указывающая разрешенные IP-адреса. Значение переменной должно соответствовать IP-адресам всем серверам, участвующим в работе отказоустойчивой системы;
  • MASTER_HOST — переменная, указывающая IP-адрес Master-базы данных;
  • SLAVE_HOST — переменная, указывающая IP-адрес Slave-базы данных;
  • WITNESS_HOST — переменная, указывающая IP-адрес Witness-ноды кластера баз данных;
  • SENTINEL_MASTER_NAME — переменная, содержащая уникальное произвольное имя, присваиваемое кластеру баз данных для их мониторинга;
  • SENTINEL_PASSWORD — переменная, содержащая пароль, используемый службой мониторинга для подключения к кластеру баз данных и получения информации о состоянии серверов.
Примечание

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

...

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

Примечание

Для схемы с кластером БД на отдельных серверах после синхронизации проверьте ROLE на каждом узле базы данных.


Настройка SSL/TLS для связи узлов кластера

...

Блок кода
languagebash
titleMaster: eccm/2.6/
cd root-ca-generator && ./generate-cluster-cert.sh


Состав директории root-ca-generator/cluster-cert/:

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

...

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

...

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

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

отдельном сервере

отдельных серверах

Примечание

Убедитесь, что значение переменной ROLE на Master-базе данных и Slave-базе данных различается и соответствует их роли.

Для запуска ЕССМ в отказоустойчивой системе при запуске БД на отдельном сервере необходимо перейти на сервер будущей Master-базы данных. Перейдите в директорию postgres/ и запустите базу данных:

Блок кода
languagebash
titleMaster-db: eccm/2.6/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
cd postgres/
docker compose --env-file=.env --env-file=../.env.cluster -f docker-compose.cluster.yml up -d

После того, как база данных на Master-db будет проинициализирована, перейдите на сервер Slave-db. Перейдите в директорию postgres/ и запустите базу данных:

Блок кода
languagebash
titleSlave-db: eccm/2.6/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
cd postgres/
docker compose --env-file=.env --env-file=../.env.cluster -f docker-compose.cluster.yml up -d

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

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

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

Блок кода
languagebash
titleMaster-app: eccm/2.6/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh -s <MASTER_ECCM_HOST> --cluster master --database-host <MASTER_DB_HOST> --database-port <MASTER_DB_PORT> --backup-database-host <SLAVE_DB_HOST> --backup-database-port <SLAVE_DB_PORT>

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

Блок кода
languagebash
titleSlave: eccm/2.6/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh -s <SLAVE_ECCM_HOST> --cluster slave --database-host <MASTER_DB_HOST> --database-port <MASTER_DB_PORT> --backup-database-host <SLAVE_DB_HOST> --backup-database-port <SLAVE_DB_PORT>

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

...