Я пытаюсь настроить postgres кластер из двух узлов (основной и резервный). Чтобы активировать автоматическое переключение при сбое c, я использую pgpool-II.
Я следовал следующей статье: https://www.pgpool.net/docs/41/en/html/example-cluster.html, и единственное отличие, которое я сделал, это установка postgresql версия 12 вместо версии 11.
Зная, что я пробую использовать два изображения centos7 на VMware. Я столкнулся со следующими проблемами:
Когда я запускаю systemctl status pgpool.service на обоих узлах, он возвращает успех. Также я могу получить доступ к postgresql с помощью IP-адреса сторожевого таймера.
Но при проверке отказов все идет не так.
Сценарий 1:
I Получил доступ к моей базе данных с помощью сторожевого Ip-делегата.
Я отключаю резервный сервер.
Результат: Мой сеанс в postgresql продолжал работать меньше минуты, а потом не получилось. и я не могу подключиться снова, пока я не подключу резервный узел и не перезапущу службу pgpool снова.
Сценарий 2:
Я получил доступ к своей базе данных с помощью сторожевого таймера Ip делегата.
Я отключаю основной сервер.
Результат: Мой сеанс остановлен напрямую. и резервный сервер не назначен главным.
Я заметил кое-что (может быть связано с описанной выше проблемой): при попытке выполнить следующую команду psql 192.168.220.146 -p 9999 -U postgres - c "show pool_nodes"
он не работает и возвращает следующее:
psql: ошибка: не удалось подключиться к серверу: не удалось подключиться на сервер: таких файлов или каталогов нет. Сервер работает локально и принимает подключения по Unix доменному сокету "/var/run/postgresql/.s.PGSQL.9999"
Однако если я запустил: psql 192.168.220.160 -p 5432 -U postgres, он работает нормально, и я могу получить доступ к оболочке postgres.
Мой файл pool_hba:
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
host all pgpool 0.0.0.0/0 scram-sha-256
host all postgres 0.0.0.0/0 scram-sha-256
Любая помощь будет оценена.