...
| Раскрыть |
|---|
| 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. |
...
| Раскрыть |
|---|
| 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 для связи узлов кластера
...
| Блок кода |
|---|
| language | bash |
|---|
| title | Master: 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/ и запустите базу данных: | Блок кода |
|---|
| language | bash |
|---|
| title | Master-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/ и запустите базу данных: | Блок кода |
|---|
| language | bash |
|---|
| title | Slave-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-скрипта произвести запуск наблюдателя с необходимыми параметрами, пример запуска с обязательными параметрами: | Блок кода |
|---|
| language | bash |
|---|
| title | Witness: eccm/2.6/ |
|---|
| ./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh -s <WITNESS_HOST> --cluster witness |
После полной инициализации всего кластера баз данных, перейдите на сервер Master-ECCM. При помощи bash-скрипта произвести запуск мастера с необходимыми параметрами, пример запуска с обязательными параметрами: | Блок кода |
|---|
| language | bash |
|---|
| title | Master-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-скрипта произвести запуск наблюдателя слейва с необходимыми параметрами, пример запуска с обязательными параметрами: | Блок кода |
|---|
| language | bash |
|---|
| title | Slave: 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-интерфейс ЕССМ. |
...