Инсталляция кластера PostgreSQL и необходимой обвязки для него.

Этот плейбук нужен для подготовки машины и установки кластера PostgreSQL в обычном режиме, в режиме мастера и реплики. Также эта роль способна установить и сконфигурировать пулер соединей Odyssey, агент доставки логов Filebeat, агент postgres_exporter для prometheus, систему резервного копирования pg_probackup, агент мониторинга хоста Telegraf.

Подготовка.

Для корректной работы роли необходимо:

  1. Сервер с RedHat-based дистрибутивом для установки кластера.
  2. Созданная отдельная ФС в корне диска /data и /backup.
  3. Пользователь с sudo правами.
  4. Изменить параметры.

Из ПО используются:

  1. Ванильный ansible>=2.9.25 установленный на wsl Ubuntu 20.04.
  2. Пакеты PostgreSQL: server, lib, contrib, client.
  3. Пакет Telegraf.
  4. Архив с готовым бинарником postgres_exporter.
  5. Пакеты pg_probackup: debug и "client".
  6. Odyssey бинарный файл.
  7. Пакет Filebeat.
  8. 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.

Краткое описание действий роли:

  1. Подготавливает машину: отключает SELinux, открывает необходимые порты.
  2. Устанавливает, конфигурирует и запускает кластер PostgreSQL.
  3. Создаёт необходимые директории, устанавливает права.
  4. Устанавливает, конфигурирует и запускает Telegraf.
  5. Устанавливает, конфигурирует и запускает postgres_exporter.
  6. Устанавливает, конфигурирует и запускает pg_probackup.
  7. Устанавливает, конфигурирует и запускает Odyssey.
  8. Устанавливает, конфигурирует и запускает Filebeat
  9. Перезагружает машину, если необходимо.
  10. Добавляет скрипт DB helper.
  11. Добавляет *.sql скрипты для администраторов.

Создание кластера Master-Slave:

Для создания мастера или реплики необходимо прописать небходимые параметры в файле инвентаря. После этого будет создан, автоматически сконфигрурирован и запущен кластер Master-Slave.

Полезные ссылки:

Что может понадобится:

Сторонние репозитории:

  1. Ванильный PostgreSQL
  2. Загрузка Telegraf
  3. Репозиторий postgres_exporter
  4. Репозиторий pg_probackup
  5. Репозиторий Odyssey
  6. Загрузка Filebeat

Наши репозитории:

  1. Репозиторий архивов
  2. Репозиторий пакетов
  3. Репозиторий PostgreSQL

Доработки:

  1. Создание подпапок в в /data (Выполнено)
  2. Автоматическая подготовка postgresql.conf файла (Выполнено)
  3. Доработка плейбука для возможности создания реплики. (Выполнено, спасибо Никита Борщевский)
  4. Залить все пакеты в наши репо и переписать плейбук для этого. (Выполнено)
  5. Установка агента filebeat для сбора логов. (Выполнено)
  6. Автоматическая настройка бекапирования. (Выполнено)
  7. Автоматическая настройка архивирования. (Выполнено)
  8. Конфигурирование всего файла postgresql.conf
  9. Настройки ротации логов. (Выполнено)
  10. Добавить скрипт DB helper. (Выполнено)
  11. Недоработка в записях crontab, некорректно выполнялся скрипт резервного копирования. (Выполнено)
  12. Автоматическое использование YUM или DNF в зависимости от системы. (Выполнено)
  13. Полный рефакторинг роли. (Выполнено)
  14. Добавление функции удаления файлов кластера перед его созданием. Требует подтверждения. (Выполнено)
  15. Отключение процесса перед удалением файлов кластера. (Выполнено)
  16. Установка пароля для пользователя БД postrges. (Выполнено)
  17. Фикс archive_command. (Выполнено)
  18. Фикс log_line_prefix. (Выполнено)
  19. Фикс конфигурации Odyssey. (Выполнено)
  20. Установка OpenSSL lib's для Odyssey. (Выполнено)
  21. Установка pg_stat_statements в БД postgres. (Выполнено)
  22. Добавление команд для удаления истекших WAL'ов и резервных копий в crontab. (Выполнено)
  23. Фикс unit файла postgres_exporter. (Выполнено)
  24. Вариативность установки пакетов через YUM или DNF. (Выполнено)
  25. Добавление *.sql скриптов для администратора. (Выполнено)
  26. Переработка процесса установки master-replica. (Выполнено)
  27. Создание выделенной директории для бекапов /backup. (Выполнено)
  28. Фикс директории для логов. (Выполнено)