Пост

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

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

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

архитектура

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

  • 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
  • все машины в одной сети (рекомендация разработчиков для поддержки функции мониторинга кластера)

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

1
2
3
4
5
6
7
8
9
10
11
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
  • Стартуем

создание кластера

  • В разделе Operations можно отслеживать процесс исполнения через логи системы.
  • В случае успешного запуска в разделе Clusters появится развернутый экземпляр с расширенной информацией и мониторингом состояния.

развернутый кластер

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

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

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

Больше полезной информации в Telegram-канале