Перейти к содержанию

Настройка услуги "Кластер СУБД PostgreSQL"

Общая информация

Эта инструкция предназначена для системного администратора и позволит развернуть и настроить услугу "Кластер СУБД PostgreSQL" с помощью Ansible.

Кластер PostgreSQL — это отказоустойчивая база данных, работающая на нескольких узлах (нодах). Он обеспечивает:

  • Автоматическое управление репликацией и отказоустойчивостью.
  • Высокую доступность за счет распределения нагрузки.
  • Гибкость в масштабировании базы данных.

В продакшн рекомендуется использовать 3 ноды (полноценный кластер). 1 или 2 ноды допустимы только для тестирования.

После настройки услуги «Кластер СУБД PostgreSQL» сервис будет доступен к заказу в каталоге «Nimbius Services»: servicePatroni

Требования

Права доступа: Развертывание выполняется от имени пользователя с sudo или ТУЗ (техническая учетная запись) с соответствующими привилегиями.

Количество ВМ: Кластер можно запустить на 1, 2 или 3 виртуальных машинах.

Поддерживаемые версии PostgreSQL


Дистрибутив Поддерживаемые версии
Alt 10 10, 11, 12, 14, 15, 16
Astra 1.7.3 11
RED 10, 11, 13, 14, 15, 16
CentOS 7 12, 13, 14, 15
CentOS 9 Stream 12, 13, 14, 15, 16, 17
Ubuntu 22 10, 11, 12, 13, 14, 15, 16, 17
Debian 12 10, 11, 12, 13, 14, 15, 16, 17

Настройка сервиса Кластер СУБД PostgreSQL

Настройка выполняется с помощью Ansible. Выполните следующие шаги:

  1. Выберите в боковом меню раздел Automation -> Embedded Automate -> Explorer.
  2. Выберите домен автоматизации Нимбиус NIMBIUS_PATRONI
  3. Перейдите к инстансу, отвечающему за Ainsible NIMBIUS_PATRONI/Service/Provisioning/StateMachines/Methods/install_patroni (install_patroni)
  4. Скопируйте его в локальный домен Configuration → Copy this Method c учетом вложенной иерархии  Copy to same path
  5. В параметрах инстанса укажите:

    • Playbook - install_patroni
    • Machine Credential - пользователя, под которым будет запускаться инстанс methodPatroni

Настройка диалогового окна

  1. Выберите в боковом меню раздел Automation -> Embedded Automate -> Customization -> Service Dialogs.
  2. Выберите раздел Import/Export и загрузите стандартный диалог заказа виртуальной машины, поставляемый в составе Нимбиус nimbius_patroni_provision .
  3. После загрузки диалог с заполненными настройками появится в разделе Service Dialogs dialogPatroni

Настройка элементов каталога сервисов

  1. Перейдите в раздел бокового меню Services → Catalogs → Catalog Items и выберите каталог сервисов Нимбиус
  2. Добавьте сервисы в каталог Configuration → Add a New Catalog Item
  3. Выберите Catalog Item Type = Generic
  4. Заполните поля для кластера СУБД PostgreSQL. Пример заполнения приведен на скриншоте catalogItemPatroni

Важно!
Перед заказом услуги перейдите в IPAM и зарезервируйте общий Cluster VIP IP для кластера. Используйте его при заказе в конфигурации.

Описание state machine для услуги Кластер СУБД PostgreSQL

Процесс развертывания услуги Кластер СУБД PostgreSQL

Конфигурация находится в домене NIMBIUS_PATRONI/Service/Provisioning/StateMachines/ServiceProvision_Template/NimbiusPatroni

Перечень шагов для NimbiusPatroni и описание их назначения представлен в таблице ниже.

Шаг Метод Описание
Sequencer /Service/Provisioning/StateMachines/Methods/GroupSequenceCheck Определяет очередность формирования запросов на создание сервисов в случае, если услуга состоит из нескольких дочерних сервисов (bundle).
SyncBillingPriceOrders           /Integration/Billing/Billing/sync_price_orders Отправляет запрос на синхронизацию стоимости заказа в биллинг.
AddAadditionalDialogOptions /Service/Provisioning/StateMachines/Methods/AddAadditionalDialogOptions Добавляет дополнительные диалоговые опции, которые отсутствуют в диалоговом окне заказа услуги, но необходимы для ее корректного развертывания.
PreProvision /Service/Provisioning/StateMachines/Methods/PreProvision Назначает владельца, группу владельца и custom attribute "addr_mode" для сервиса.
DialogParser /Service/Provisioning/StateMachines/Methods/DialogParser Выполняет парсинг информации о диалоговых опциях.
NimbiusVMService /Service/Provisioning/StateMachines/Methods/NimbiusVMService - Создает тэги и категории тегов на основе диалоговых опций.
- Перезаписывает имя и описание сервиса.
- Назначает на сервис теги на основе диалоговых опций.
- Назначает опции, необходимые для именования ВМ (vm_name, linux_host, name, target_name и т.д.).
- Добавляет диалоговые опции и теги в дочерние задачи.
- Проверяет валидность аргументов и отправляет запрос на создание ВМ.
- Устанавливает custom attribute "vm provision requests" для сервиса.
CheckVmProvisioned /Service/Provisioning/StateMachines/Methods/CheckVmProvisionStatus Ожидает корректного завершения всех запросов на создание ВМ.
Provision /Service/Provisioning/StateMachines/Methods/Provision Создает сервис в БД.
СheckProvisioned /Service/Provisioning/StateMachines/Methods/CheckProvisioned Ожидает корректного завершения создания сервиса.
JoinDomain /Integration/ActiveDirectory/PlaybooksMethods/JoinDomain Вводит linux ВМ в домен и регистрирует A и PTR записи на DNS сервере. Устанавливает custom attribute "vms_ip_address" для сервиса.
AddDnsRecord /Integration/ActiveDirectory/WinrmMethods/AddDnsRecord Назначает DNS
SetAnsibleVars   /Service/Provisioning/StateMachines/Methods/set_ansible_vars_patroni Используется для установки переменных, необходимых для запуска ansible playbook.
RunPlaybook  /Service/Provisioning/StateMachines/Methods/install_patroni                                                                 Используется для запуска ansible playbook.
SyncBilling           /Integration/Billing/Billing/sync Отправляет запрос на синхронизацию в биллинг.
EmailOwner /System/Notification/Email/ServiceProvisionComplete?event=service_provisioned Отправляет email-уведомление пользователю о том, что сервис создан.
Rollback /Service/Provisioning/StateMachines/Methods/Rollback Запускает процедуру отката изменений в случае ошибки развертывания.
Finished /System/CommonMethods/StateMachineMethods/service_provision_finished Отправляет уведомление и отмечает в БД, что создание сервиса завершено.

Процесс удаления услуги Кластер СУБД PostgreSQL

Конфигурация находится в домене NIMBIUS_VM/Service/Retirement/StateMachines/ServiceRetirement/Default

Перечень шагов для Default и описание их назначения представлен в таблице ниже

Шаг Метод Описание
StartRetirement /Service/Retirement/StateMachines/Methods/StartRetirement             Выполняется проверка того, что сервис не находится в процессе удаления. Запуск удаления сервиса.
ReleaseIPAddress /NetBox/NetBox/ReleaseIPAddress                                 Удаление зарезервированного IP адреса в IPAM.
RemoveAdRecord /Integration/ActiveDirectory/WinrmMethods/RemoveAdRecord             Удаление аккаунта компьютера из Microsoft Active Directory.
RemoveDnsRecord /Integration/ActiveDirectory/WinrmMethods/RemoveDnsRecord           Удаление DNS записей из зоны на Microsoft DNS сервере.
RetireService /Service/Retirement/StateMachines/Methods/RetireService              
CheckServiceRetired /Service/Retirement/StateMachines/Methods/CheckServiceRetired       Проверка, что все задачи на удаление завершены.
SyncBilling /Integration/Billing/Billing/sync                                 Отправка запроса на синхронизацию в биллинг.
FinishRetirement /Service/Retirement/StateMachines/Methods/FinishRetirement         Установка атрибута, что сервис удален. Отправка уведомления пользователю.
DeleteServiceFromVMDB /Service/Retirement/StateMachines/Methods/DeleteServiceFromVMDB     Удаление сервиса из базы данных.