Этот плейбук нужен для подготовки машины и установки кластера PostgreSQL в обычном режиме, в режиме мастера и реплики. Также эта роль способна установить и сконфигурировать пулер соединей Odyssey, агент доставки логов Filebeat, агент postgres_exporter для prometheus, систему резервного копирования pg_probackup, агент мониторинга хоста Telegraf.
Для корректной работы роли необходимо:
- Сервер с RedHat-based дистрибутивом для установки кластера.
- Созданная отдельная ФС в корне диска /data и /backup.
- Пользователь с sudo правами.
- Изменить параметры.
Из ПО используются:
- Ванильный ansible>=2.9.25 установленный на wsl Ubuntu 20.04.
- Пакеты PostgreSQL: server, lib, contrib, client.
- Пакет Telegraf.
- Архив с готовым бинарником postgres_exporter.
- Пакеты pg_probackup: debug и "client".
- Odyssey бинарный файл.
- Пакет Filebeat.
- Bash скрипты.
Перед запуском плейбука необходимо отредактировать файл pg_single_install/defaults/main.yml и установить параметры, с которыми будет устанавливаться ПО. Можно провести установку с параметрами по умолчанию, нужно будет указать только адреса RPM пакетов и мажорную версию PostgreSQL.
В секции "Параметры PostgreSQL" необходимо установить такие параметры как: целевая версия, названия пакетов, параметры для postgresql.conf. По умолчанию кластер устанавливается с стандартными настройками для 13 версии.
В секции "Параметры Telegraf" необходимо установить такие параметры как: название пакета, наличие контейнеризации на хосте и тип сервера для InfluxDB.
В секции "Параметры postgres_exporter" необходимо установить название архива с postgres_exporter.
В секции "Параметры pg_probackup" необходимо установить название пакетов с pg_probackup. По умолчанию полные бекапы делаются в 02:00 по МСК, в ПН и ЧТ, инкрементальные бекапы в то же время в ВС, ВТ, СР, ПТ, СБ. Уровень компрессии - максимальный, средствами zlib.
В секции "Параметры Odyssey" парметры по умолчанию установят пулер на порту 6432.
В секции "Параметры Filebeat" необходимо указать название пакета.
Более полное и подробное описание почти всех переменных находится в файле pg_single_install/defaults/main.yml. Пакеты, которые будут использоваться в ходе установки роль находятся в общебанковском репозитории.
После отработки плейбука останется установить пароль linux пользователю postgres, прописать необходимые разрешения в pg_hba.conf.
- Подготавливает машину: отключает SELinux, открывает необходимые порты.
- Устанавливает, конфигурирует и запускает кластер PostgreSQL.
- Создаёт необходимые директории, устанавливает права.
- Устанавливает, конфигурирует и запускает Telegraf.
- Устанавливает, конфигурирует и запускает postgres_exporter.
- Устанавливает, конфигурирует и запускает pg_probackup.
- Устанавливает, конфигурирует и запускает Odyssey.
- Устанавливает, конфигурирует и запускает Filebeat
- Перезагружает машину, если необходимо.
- Добавляет скрипт DB helper.
- Добавляет *.sql скрипты для администраторов.
Для создания мастера или реплики необходимо прописать небходимые параметры в файле инвентаря. После этого будет создан, автоматически сконфигрурирован и запущен кластер Master-Slave.
Что может понадобится:
Сторонние репозитории:
- Ванильный PostgreSQL
- Загрузка Telegraf
- Репозиторий postgres_exporter
- Репозиторий pg_probackup
- Репозиторий Odyssey
- Загрузка Filebeat
Наши репозитории:
- Создание подпапок в в /data (Выполнено)
- Автоматическая подготовка postgresql.conf файла (Выполнено)
- Доработка плейбука для возможности создания реплики. (Выполнено, спасибо Никита Борщевский)
- Залить все пакеты в наши репо и переписать плейбук для этого. (Выполнено)
- Установка агента filebeat для сбора логов. (Выполнено)
- Автоматическая настройка бекапирования. (Выполнено)
- Автоматическая настройка архивирования. (Выполнено)
- Конфигурирование всего файла postgresql.conf
- Настройки ротации логов. (Выполнено)
- Добавить скрипт DB helper. (Выполнено)
- Недоработка в записях crontab, некорректно выполнялся скрипт резервного копирования. (Выполнено)
- Автоматическое использование YUM или DNF в зависимости от системы. (Выполнено)
- Полный рефакторинг роли. (Выполнено)
- Добавление функции удаления файлов кластера перед его созданием. Требует подтверждения. (Выполнено)
- Отключение процесса перед удалением файлов кластера. (Выполнено)
- Установка пароля для пользователя БД postrges. (Выполнено)
- Фикс archive_command. (Выполнено)
- Фикс log_line_prefix. (Выполнено)
- Фикс конфигурации Odyssey. (Выполнено)
- Установка OpenSSL lib's для Odyssey. (Выполнено)
- Установка pg_stat_statements в БД postgres. (Выполнено)
- Добавление команд для удаления истекших WAL'ов и резервных копий в crontab. (Выполнено)
- Фикс unit файла postgres_exporter. (Выполнено)
- Вариативность установки пакетов через YUM или DNF. (Выполнено)
- Добавление *.sql скриптов для администратора. (Выполнено)
- Переработка процесса установки master-replica. (Выполнено)
- Создание выделенной директории для бекапов /backup. (Выполнено)
- Фикс директории для логов. (Выполнено)