Найти в Дзене
DeSoft.ru

Разворачиваем PostgreSQL кластер с помощью autobase

Оглавление

Autobase - платформа или лучше назвать инструмент автоматизации для простого и быстрого поднятия кластера PostgreSQL.

🏠 Архитектура согласно документации

-2

📌 Основные компоненты

  • python приложение для управления кластерами PostgreSQL - patroni.
  • key-value хранилище конфигураций - etcd.
  • сервис плавающего приоритета для предоставления единой точки доступа к кластеру - vip-manager.
  • система управления подключениями или пулер соединений - PgBouncer.
  • балансировщик нагрузки - HAProxy.

Для тех, кто не жаждет разбираться в тонкостях построения отказоустойчивого кластера, разработчиками системы были подготовлены ряд скриптов, Ansible конфигураций и сервисов, в том числе UI, благодаря которым процесс запуска свелся к нескольким несложным шагам.

🔨 Подготовка

  • 3 виртуальные машины (2 CPU, 2 Gb RAM) на Debian 12 под ноды

- ставим ssh сервер
- пользователя добавляем в
sudo
- на проде организовываем доступ через ключи (на тестовых можно обойтись и паролем)

  • 1 виртуальная машина для консоли управления также на Debian 12

- ставим Docker

  • все машины в одной сети (рекомендация разработчиков для поддержки функции мониторинга кластера)

🚀 Запускаем консоль управления

docker run -d --name autobase-console \
  --publish 80:80 \
  --publish 8080:8080 \
  --env PG_CONSOLE_API_URL=http://192.168.1.135:8080/api/v1 \
  --env PG_CONSOLE_AUTHORIZATION_TOKEN=secret_token \
  --env PG_CONSOLE_DOCKER_IMAGE=autobase/automation:latest \
  --volume console_postgres:/var/lib/postgresql \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume /tmp/ansible:/tmp/ansible \
  --restart=unless-stopped \
  autobase/console:latest
  • 192.168.1.135 - адрес виртуальной машины консоли (api сервис стартует рядом с ui и бд консоли, поэтому адрес один и тот же)
  • 80 - порт ui
  • 8080 - порт api сервиса

🔥 Создаем кластер

Идем в консоль по адресу машины на 80 порт.

  • Для входа используем заданный при старте контейнера PG_CONSOLE_AUTHORIZATION_TOKEN.
  • Create cluster - Your Own Machines.
  • По умолчанию предлагается использовать 3 ноды. Их и заполняем информацией о созданных ранее виртуальных машинах.
  • Выбираем метод авторизации и заполняем учетные данные.
  • В поле Cluster VIP address указываем незанятый (!) адрес в сети, который будет использован как единая точка входа для кластера.
  • Включаем балансировщик HAProxy load balancer
  • Выбираем версию PostgreSQL
  • Стартуем
-3
  • В разделе Operations можно отслеживать процесс исполнения через логи системы.
  • В случае успешного запуска в разделе Clusters появится развернутый экземпляр с расширенной информацией и мониторингом состояния.
-4

❗️❓ Резервное копирование и восстановление кластеров реализовано с помощью инструментов pgBackRest и WAL-G, однако управление из ui пока недоступно - в скором времени планируется внедрить, судя по планам и комментариям разработчиков.

✅ Таким образом можно развернуть PostgreSQL кластер с минимальным участием в настройке целого пласта зависимостей. Рассмотренное средство вполне способно стать бесплатной альтернативой облачным провайдерам кластеров баз данных для решения бизнес-задач, а доступная масштабируемость позволит справляться с возрастающей нагрузкой по мере ее возникновения, не испытывая при этом никаких трудностей.