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

Ключ

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

...

Отказоустойчивая система ЕССМ выполняется по схеме резервирования Active-Active с использованием VIP-адреса — Virtual IP, — что позволяет использовать единый адрес для доступа к каждому узлу системы и хранить на них актуальные данные. Для настройки отказоустойчивой схемы требуется выделить не менее трех серверов. В схеме резервирования также предусмотрено разделение ЕССМ на сервер с БД и сервер с ЕССМ, использующим данную базу — для таких случаев требуется выделить 5 серверов.

...

Стандартная схема отказоустойчивой системы

draw.io Diagram
bordertrue
diagramNameCopy of Диаграмма без названия-1772101019543
simpleViewerfalse
width600
linksauto
tbstyletop
diagramDisplayNameОбщая схема отказоустойчивой системы ЕССМ
lboxtrue
diagramWidth791
revision5

...

Подсказка
Подробнее о переключении мастерства в отказоустойчивой системе представлено в статье Переключение мастерства в отказоустойчивой системе.
Раскрыть
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.

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

Подготовка серверов

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

...

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

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

...

в стандартной схеме отказоустойчивой системы

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

...

Примечание

Если не указывать данные переменные — база данных PostgreSQL на сервере не будет запущена и завершится с ошибкой.

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

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

Синхронизация файлов конфигурации

...

В журнале вы должны увидеть Entering BACKUP STATE и Entering MASTER STATE.

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

...

в стандартной схеме

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

...

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

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

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

Примечание

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

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

Блок кода
cd postgres/
docker compose --env-file=.env --env-file=../.env.cluster -f docker-compose.cluster.yml up -d

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

Блок кода
languagebash
cd postgres/
docker compose --env-file=.env --env-file=../.env.cluster -f docker-compose.cluster.yml up -d

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

Блок кода
./compose-tools.sh -s <WITNESS_HOST> --cluster witness

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

Блок кода
./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
./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-интерфейс ЕССМ.