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

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Комментарий: #516485: слияние черновика v2.10 с текущей статьёй 2.10

...

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

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

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

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

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

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

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

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

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

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

...

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

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

...

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

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

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

  • ECCM_MASTER_HOST — содержит IP-адрес Master-ноды ECCM приложения;
  • ECCM_SLAVE_HOST — содержит IP-адрес Slave-ноды ECCM приложения;
  • ECCM_WITNESS_HOST — содержит IP-адрес Witness-ноды;
  • POSTGRES_MASTER_HOST HOST — содержит IP-адрес Master-ноды кластера баз данных;
  • POSTGRES_SLAVE_HOST — содержит IP-адрес Slave-ноды кластера баз данных;
  • REDIS_PASSWORD — содержит пароль, используемый сервисом Redis для подключения к кластеру;
  • RABBITMQ_CLUSTER_PASSWORD — содержит пароль, используемый сервисом RabbitMQ для подключения к кластеру;
  • SENTINEL_PASSWORD — содержит пароль, используемый службой мониторинга для подключения к кластеру сервиса Redis и получения информации о состоянии серверов.
Примечание

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

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

...

При отсутствии корпоративного сертификата предусмотрен скрипт root-ca-generator/generate-cluster-cert.sh.  Перед Перед запуском предварительно отредактируйте файл root-ca-generator/cluster.cnf: пропишите IP-адреса всех узлов кластера в формате "IP.<№> = <IP-адрес узла>".

После этого запустите скрипт root-ca-generator/generate-cluster-cert.sh,  который который сгенерирует все необходимые сертификаты и ключи в директорию cluster-cert/:

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

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

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

...

Раскрыть
titleИспользование корпоративного CA

Использование корпоративного CA

Если предусмотрен корпоративный CA, необходимо переместить все файлы безопасного соединения в директорию cluster-cert/ на Master-ноде, а именно:

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

При наличии файла Java Truststore также поместите его в директорию cluster-cert/.

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

...

Для синхронизации файлов из директории cluster-cert/ между узлами отказоустойчивой системы рекомендуем воспользоваться утилитой rsync. Пример установки утилиты был описан в пункте "Синхронизация файлов конфигурации".

Для передачи сертификатов передачи сертификатов кластера используйте следующую команду:

Блок кода
languagebash
titleMaster-node
sudo rsync -av --delete --rsync-path="sudo rsync" <полный путь до директории eccm>/cluster-cert/* <имя пользователя сервера>@<IP-адрес сервера назначения>:<полный путь до директории_ eccm>/cluster-cert

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

...

Блок кода
languagebash
titleНа каждой ноде приложений: eccm/2.910/
cp ./keepalived/* /etc/keepalived/

...

При помощи любого текстового редактора откройте конфигурационный файл /etc/keepalived/keepalived.conf.  На На сервере, где будет находиться приложение ЕССМ с ролью мастер, измените следующие параметры:

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

Далее перейдите на сервер, где будет находиться приложение ЕССМ с ролью Slave, и измените ранее описанные параметры.

Если необходимо, чтобы при чтобы при переключении мастерства и восстановлении исходного мастера мастерство возвращалось исходному — на Master-узле выставьте приоритет на 1 больше, чем на Slave-узле. Если такая опция не нужна — установите одинаковое значение на каждом узле.

...

Блок кода
languagebash
titleMaster: eccm/2.910/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh -s <MASTER_HOST> --cluster master
Подсказка

Перед запуском самих контейнеров скрипт проверяет наличие файла .env.personal и в случае его отсутствия предлагает создать его в дополнительном диалоге. При стандартных паролях система также предложит изменить их: вручную или с помощью автоматической генерации. После изменения паролей проект продолжит запуск.

Во время запуска MasterВо время запуска Master-узла необходимо подтвердить создание файла .env.personal и переменной ключа шифрования ENCRYPTION_SECRET_KEY. Описание файла и переменной приведено в разделе "Инструкция по установке и запуску".

После того как мастер будет инициализирован и готов к работе, синхронизируйте .env.personal между узламиКонфигурационный файл .env.personal с паролями должен быть идентичен между всеми нодами кластера. Для синхронизации файла конфигурации между серверами можно воспользоваться утилитой rsync. Для передачи .env.personal используйте следующую команду после успешного запуска Master-узла:

Блок кода
languagebash
titleMaster-node
sudo rsync -av --delete --rsync-path="sudo rsync" <полный путь до директории eccm>/.env.personal <имя пользователя сервера>@<IP-адрес сервера назначения>:<полный путь до директории eccm>

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

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

Блок кода
languagebash
titleSlave: eccm/2.910/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh -s <SLAVE_HOST> --cluster slave

...

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

...

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

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

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

Блок кода
languagebash
titleMaster-db: eccm/2.910/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <POSTGRES_MASTER_HOST> --database-only --cluster master.sh --pull -s <POSTGRES_MASTER_HOST> --database-only --cluster master
Подсказка

Перед запуском самих контейнеров скрипт проверяет наличие файла .env.personal и в случае его отсутствия предлагает создать его в дополнительном диалоге. При стандартных паролях система также предложит изменить их: вручную или с помощью автоматической генерации. После изменения паролей проект продолжит запуск.

Во время запуска Master-базы данных необходимо подтвердить создание файла .env.personal и переменной ключа шифрования ENCRYPTION_SECRET_KEY. Описание файла и переменной приведено в разделе "Инструкция по установке и запуску".После того как база данных

на Master-db будет проинициализирована, синхронизируйте .env.personal между узламиКонфигурационный файл .env.personal с паролями должен быть идентичен между всеми нодами кластера. Для синхронизации файла конфигурации между серверами можно воспользоваться утилитой rsync. Для передачи .env.personal используйте следующую команду после успешного запуска Master-db:

Блок кода
languagebash
titleMaster-db
sudo rsync -av --delete --rsync-path="sudo rsync" <полный путь до директории eccm>/.env.personal <имя пользователя сервера>@<IP-адрес сервера назначения>:<полный путь до директории eccm>

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

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

Блок кода
languagebash
titleSlave-db: eccm/2.910/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <POSTGRES_SLAVE_HOST> --database-only --cluster slave

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

Блок кода
languagebash
titleMaster-app: eccm/2.910/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <ECCM_MASTER_HOST> --cluster master --database-host <POSTGRES_MASTER_HOST> --database-port <POSTGRES_MASTER_PORT> --backup-database-host <POSTGRES_SLAVE_HOST> --backup-database-port <POSTGRES_SLAVE_PORT>

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

Блок кода
languagebash
titleSlave-app: eccm/2.910/
./compose-tools.sh --install # установит docker, если он отсутствует в системе
./compose-tools.sh --pull -s <ECCM_SLAVE_HOST> --cluster slave --database-host <POSTGRES_MASTER_HOST> --database-port <POSTGRES_MASTER_PORT> --backup-database-host <POSTGRES_SLAVE_HOST> --backup-database-port <POSTGRES_SLAVE_PORT>

После полной инициализации кластера приложений перейдите на сервер Witness-узла. При помощи bash-скрипта произведите запуск Witness с необходимыми параметрами. Пример запуска:

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

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

...