Сессия pgpool-II для сторожевого IP-делегата прервана, когда произошел сбой основного или резервного узла - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь настроить 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:

  1. I Получил доступ к моей базе данных с помощью сторожевого Ip-делегата.

  2. Я отключаю резервный сервер.

Результат: Мой сеанс в postgresql продолжал работать меньше минуты, а потом не получилось. и я не могу подключиться снова, пока я не подключу резервный узел и не перезапущу службу pgpool снова.

Сценарий 2:

  1. Я получил доступ к своей базе данных с помощью сторожевого таймера Ip делегата.

  2. Я отключаю основной сервер.

Результат: Мой сеанс остановлен напрямую. и резервный сервер не назначен главным.

Я заметил кое-что (может быть связано с описанной выше проблемой): при попытке выполнить следующую команду 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

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Вы не предоставляете аргумент -h для psql для указания IP-адреса. Таким образом, psql пытается подключиться к сокету домена UNIX и рассматривает IP-адрес в команде как имя базы данных.

Попробуйте поставить -h перед IP-адресом

psql -h 192.168.220.146 -p 9999 -U postgres - c "show pool_nodes"

0 голосов
/ 02 апреля 2020

Я следовал следующей статье: https://www.pgpool.net/docs/41/en/html/example-cluster.html, и единственное отличие, которое я сделал, это установка postgresql версия 11.

Я не проверяю делегат_IP = '192.168. 1,233. Могу ли я вам помочь?

Спасибо.

...