Настройка услуги "Кластер СУБД PostgreSQL"
Общая информация¶
Эта инструкция предназначена для системного администратора и позволит развернуть и настроить услугу "Кластер СУБД PostgreSQL" с помощью Ansible.
Кластер PostgreSQL — это отказоустойчивая база данных, работающая на нескольких узлах (нодах). Он обеспечивает:
- Автоматическое управление репликацией и отказоустойчивостью.
- Высокую доступность за счет распределения нагрузки.
- Гибкость в масштабировании базы данных.
В продакшн рекомендуется использовать 3 ноды (полноценный кластер). 1 или 2 ноды допустимы только для тестирования.
После настройки услуги «Кластер СУБД PostgreSQL» сервис будет доступен к заказу в каталоге «Nimbius Services»:
Требования¶
Права доступа: Развертывание выполняется от имени пользователя с 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. Выполните следующие шаги:
- Выберите в боковом меню раздел Automation -> Embedded Automate -> Explorer.
- Выберите домен автоматизации Нимбиус NIMBIUS_PATRONI
- Перейдите к инстансу, отвечающему за Ainsible NIMBIUS_PATRONI/Service/Provisioning/StateMachines/Methods/install_patroni (install_patroni)
- Скопируйте его в локальный домен Configuration → Copy this Method c учетом вложенной иерархии Copy to same path
-
В параметрах инстанса укажите:
- Playbook - install_patroni
- Machine Credential - пользователя, под которым будет запускаться инстанс
Настройка диалогового окна¶
- Выберите в боковом меню раздел Automation -> Embedded Automate -> Customization -> Service Dialogs.
- Выберите раздел Import/Export и загрузите стандартный диалог заказа виртуальной машины, поставляемый в составе Нимбиус nimbius_patroni_provision .
- После загрузки диалог с заполненными настройками появится в разделе Service Dialogs
Настройка элементов каталога сервисов¶
- Перейдите в раздел бокового меню Services → Catalogs → Catalog Items и выберите каталог сервисов Нимбиус
- Добавьте сервисы в каталог Configuration → Add a New Catalog Item
- Выберите Catalog Item Type = Generic
- Заполните поля для кластера СУБД PostgreSQL. Пример заполнения приведен на скриншоте
Важно!
Перед заказом услуги перейдите в 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 |
Удаление сервиса из базы данных. |