Разворачиваем 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- порт ui8080- порт 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.



