С версии 1.1 добавлены ограничения на подключение к СУБД PostgreSQL со сторонних хостов в схеме работы с резервированием: подключение будет допускаться только с адресов, на которых развернуты ноды NAICE. В схеме одиночной установки (stand alone) доступ к БД со стороны внешних адресов будет полностью закрыт.
Аутентификация клиентов СУБД PostgreSQL управляется конфигурационным файлом, который называется pg_hba.conf и расположен в каталоге с данными кластера базы данных.
HBA расшифровывается как host-based authentication — аутентификации по имени узла.
Файл pg_hba.conf определяет, кто с каких адресов сможет подключиться к базе данных.
Общие рекомендации по содержимому pg_hba.conf:
Файл pg_hba.conf содержал универсальную конфигурацию и сразу присутствовал в образе.
На этапе разворота базы данных он никак не модифицировался.
Путь до файла:
/<папка установки NAICE>/postgres/pg_hba.conf/bitnami/repmgr/conf/pg_hba.confПуть до файла в контейнере не изменился /bitnami/repmgr/conf/pg_hba.conf
Файл pg_hba.conf не присутствует в образе по умолчанию.
Он формируется в процессе разворота кластера и помещается по пути /<папка установки NAICE>/postgres/
В этот момент в файл подставляются актуальные адреса узлов кластера, указанные в ходе установки NAICE. Подробнее: v1.1_3.4 Установка с резервированием (c использованием VRRP) или v1.1_3.5 Установка с резервированием (без использования VRRP).
Пример содержимого файла после установки кластера:
# Доступ пользователю postgres без пароля во время аутентификации только внутри контейнера # При первом старте контейнера пользователь postgres создается без пароля, потом назначается в ходе инициализации local all postgres trust host all postgres 127.0.0.1/32 trust # Локальные подключения внутри контенера по логину/паролю local all all scram-sha-256 host all all 127.0.0.1/32 scram-sha-256 # Внешние подключения для сервисов только с адресов установки кластера найс и VIP адреса host all all <IP-адрес первой ноды NAICE>/32 scram-sha-256 host all all <IP-адрес второй ноды NAICE>/32 scram-sha-256 host all all <VIP-адрес, используемый протоколом VRRP>/32 scram-sha-256 # Будет добавлен только при установки в схеме с резервированием с использованием VRRP. # Внешние подключения для репликации # Доступ до БД replication - для физической репликации данных # Доступ до БД repmgr - для управления репликацией с помощью repmgr # Доступ безпарольный, так как repmgr обращается по ключевому доступу host repmgr repmgr <IP-адрес первой ноды кластера СУБД PostgreSQL>/32 trust host repmgr repmgr <IP-адрес второй ноды кластера СУБД PostgreSQL>/32 trust host replication repmgr <IP-адрес первой ноды кластера СУБД PostgreSQL>/32 trust host replication repmgr <IP-адрес второй ноды кластера СУБД PostgreSQL>/32 trust # Подключения для сервисов подключаемых с этого же хоста host repmgr repmgr samenet scram-sha-256 host replication repmgr samenet scram-sha-256 host all all samenet scram-sha-256 # Все остальные подключения блокировать host all all 0.0.0.0/0 reject |
В docker-compose.repmgr.yml файл явно монтируется следующим образом
volumes: - ./postgres/pg_hba.conf:/bitnami/repmgr/conf/pg_hba.conf:ro |
Логика работы не меняется, с той разницой, что адреса будут отличаться
Внешние подключения для сервисов - пара адресов сервисных узлов
Файл pg_hba.conf содержит универсальную конфигурацию и сразу присутствует в образе:
# For DB Init local all postgres trust host all postgres 127.0.0.1/32 trust # Локальные подключения внутри контенера по логину/паролю local all all scram-sha-256 host all all 127.0.0.1/32 scram-sha-256 # Подключения для сервисов подключаемых с этого же хоста host all all samenet scram-sha-256 # Все остальные подключения блокировать host all all 0.0.0.0/0 reject |
Если при эксплуатации версий 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 |