...
Отказоустойчивая система ЕССМ выполняется по схеме резервирования Active-Active с использованием VIP-адреса — Virtual IP, — что позволяет использовать единый адрес для доступа к каждому узлу системы и хранить на них актуальные данные. Для настройки отказоустойчивой схемы требуется выделить не менее трех серверов. В схеме резервирования также предусмотрено разделение ЕССМ на сервер с БД и сервер с ЕССМ, использующим данную базу — для таких случаев требуется выделить 5 серверов.
...
Стандартная схема отказоустойчивой системы
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | Copy of Диаграмма без названия-1772101019543 |
|---|
| simpleViewer | false |
|---|
| width | 600 |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| diagramDisplayName | Общая схема отказоустойчивой системы ЕССМ |
|---|
| lbox | true |
|---|
| diagramWidth | 791 |
|---|
| revision | 5 |
|---|
|
...
| Подсказка |
|---|
| Подробнее о переключении мастерства в отказоустойчивой системе представлено в статье Переключение мастерства в отказоустойчивой системе. |
| Раскрыть |
|---|
| title | Схема отказоустойчивой системы при запуске БД на отдельном сервере |
|---|
|
Схема отказоустойчивой системы при запуске БД на отдельном сервере| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | Диаграмма без названия-1772101019543 |
|---|
| simpleViewer | false |
|---|
| width | 600 |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| diagramDisplayName | Схема отказоустойчивой системы ЕССМ с разделением БД и приложения |
|---|
| lbox | true |
|---|
| diagramWidth | 1221 |
|---|
| revision | 11 |
|---|
|
Отказоустойчивая система с запуском базы данных на отдельном сервере представляет из себя совокупность двух кластеров: - Кластер приложений;
- Кластер баз данных.
Кластер баз данных включает в себя три сервера: - 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/ и запустите базу данных: | Блок кода |
|---|
| 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-скрипта произвести запуск наблюдателя с необходимыми параметрами, пример запуска с обязательными параметрами: | Блок кода |
|---|
| ./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-интерфейс ЕССМ. |