Введение
С версии 1.1 добавлены ограничения на подключение к СУБД PostgreSQL со сторонних хостов в схеме работы с резервированием: подключение будет допускаться только с адресов, на которых развернуты ноды NAICE. В схеме одиночной установки (stand alone) доступ к БД со стороны внешних адресов будет полностью закрыт.
Аутентификация клиентов СУБД PostgreSQL управляется конфигурационным файлом, который называется pg_hba.conf и расположен в каталоге с данными кластера базы данных.
HBA расшифровывается как host-based authentication — аутентификации по имени узла.
Файл pg_hba.conf определяет, кто с каких адресов сможет подключиться к базе данных.
Общие рекомендации по содержимому pg_hba.conf:
- Разрешить локальные подключения внутри контейнера, которые будут использоваться для отладки или устранения проблем.
- Разрешить подключения внутри сети контейнеров, чтобы другие контейнеры могли подключиться к БД.
- Внешние подключения для сервисов разрешить только с адресов установки нод NAICE, чтобы разрешить подключения для нормального функционирования NAICE в схеме с резервировоанеим.
- Разрешить подключения по учётным данным, используемых для репликации между нодами кластера СУБД.
- Запретить подключения с любых других не доверенных адресов.
Состояние NAICE 1.0
Файл pg_hba.conf содержал универсальную конфигурацию и сразу присутствовал в образе.
На этапе разворота базы данных он никак не модифицировался.
Путь до файла:
- на серверах, которые используются для установки кластеры БД:
/<папка установки NAICE>/postgres/pg_hba.conf - в контейнере c БД
/bitnami/repmgr/conf/pg_hba.conf
Состояние NAICE 1.1
Путь до файла в контейнере не изменился /bitnami/repmgr/conf/pg_hba.conf
При развороте кластера из 2-ух узлов
Файл pg_hba.conf не присутствует в образе по умолчанию.
Он формируется в процессе разворота кластера и помещается по пути /<папка установки NAICE>/postgres/
В этот момент в файл подставляются актуальные адреса узлов кластера, указанные в ходе установки NAICE. Подробнее: v1.1_3.4 Установка с резервированием (c использованием VRRP) или v1.1_3.5 Установка с резервированием (без использования VRRP).
Пример содержимого файла после установки кластера:
В docker-compose.repmgr.yml файл явно монтируется следующим образом
volumes: - ./postgres/pg_hba.conf:/bitnami/repmgr/conf/pg_hba.conf:ro
При развороте кластера из 4-ех узлов
Логика работы не меняется, с той разницой, что адреса будут отличаться
Внешние подключения для сервисов - пара адресов сервисных узлов
- Внешние подключения для репликации - пара адресов узлов БД
При развороте одного узла
Файл pg_hba.conf содержит универсальную конфигурацию и сразу присутствует в образе:
Процесс обновления 1.0 → 1.1
Если при эксплуатации версий 1.0 и ниже содержимое файла pg_hba.conf не изменялось и он не монтировался явно - ничего делать не нужно.
При работе Ansible Playbook все содержимое файлов docker-compose.repmgr.yml и docker-compose.yml будет приведено в соответствие версии 1.1.
Если вы содержимое файла pg_hba.conf изменялось и он монтировался явно, - необходимо до начала установки 1.1 сохранить его за пределами директории установки NAICE (по умолчанию /etc/docker-naice).
После обновления открыть новый файл /<папка установки NAICE>/postgres/pg_hba.conf и внести туда ранее сделанные изменения, если в этом ещё есть необходимость.
После этого перезапустить контейнеры БД, последовательно: сначала на 2-й ноде кластера СУБД, потом на 1-й:
sudo docker compose -f docker-compose.repmgr.yml stop && sudo docker compose -f docker-compose.repmgr.yml up -d