pgpool2 авто-фейлбек не подключает узел

Вопрос или проблема

У меня, похоже, есть проблема с auto_failback, pgpool обнаруживает, что узел снова работает, но не прикрепляет его.

Я использую postgres 17 и pgpool2 4.5, вот конфигурация

listen_addresses="*"
port = 5432
backend_hostname0 = '192.168.1.232'
backend_port0 = 5432
backend_weight0 = 1
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_application_name0 = 'db232'
backend_hostname1 = '192.168.1.234'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresql/17/main/'
backend_flag1 = 'ALLOW_TO_FAILOVER'
backend_application_name1 = 'db234'
auth_type="md5"                                   # Используйте pool_hba.conf для аутентификации клиента
pool_passwd = '/etc/pgpool2/pool_passwd'
allow_clear_text_frontend_auth = on
process_management_mode = dynamic
process_management_strategy = gentle
num_init_children = 200
min_spare_children = 5
max_spare_children = 10
max_pool = 4
log_destination = 'stderr'
log_error_verbosity = default          # короткие, стандартные или подробные сообщения
client_min_messages = debug1          # значения в порядке убывания детализации:
log_min_messages = debug1             # значения в порядке убывания детализации:
logging_collector = off
connection_cache = on
load_balance_mode = on
sr_check_user="custom_user"
sr_check_password = 'password'
sr_check_database="postgres"
health_check_period = 10
health_check_timeout = 20
health_check_user="user"
health_check_password = 'password'
health_check_database="postgres"
failover_command = '/var/lib/postgresql/test %d %h %p %D %m %H %M %P %r %R %N %S failover'
failback_command = '/var/lib/postgresql/test %d %h %p %D %m %H %M %P %r %R %N %S failback'
failover_on_backend_error = on
failover_on_backend_shutdown = on
recovery_user="user"
recovery_password = 'password'
recovery_timeout = 0
auto_failback = on
auto_failback_interval = 10

это узлы пула, когда

  1. все работает,
  2. я останавливаю резервный сервер
  3. я перезапускаю резервный сервер
1.
 node_id |   hostname   | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change
---------+--------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
 0       | 192.168.1.232 | 5432 | up     | up        | 0.500000  | primary | primary | 0          | false             | 0                 |                   |                        | 2024-11-11 19:34:10
 1       | 192.168.1.234 | 5432 | up     | up        | 0.500000  | standby | standby | 0          | true              | 58152             |                   |                        | 2024-11-11 19:34:10


2.

 node_id |   hostname   | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change
---------+--------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
 0       | 192.168.1.232 | 5432 | up     | up        | 0.500000  | primary | primary | 0          | true              | 0                 |                   |                        | 2024-11-11 19:34:10
 1       | 192.168.1.234 | 5432 | down   | down      | 0.500000  | standby | unknown | 0          | false             | 0                 |                   |                        | 2024-11-11 19:38:51


3.
 node_id |   hostname   | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change
---------+--------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
 0       | 192.168.1.232 | 5432 | up     | up        | 0.500000  | primary | primary | 0          | true              | 0                 |                   |                        | 2024-11-11 19:34:10
 1       | 192.168.1.234 | 5432 | down   | up        | 0.500000  | standby | standby | 0          | false             | 0                 |                   |                        | 2024-11-11 19:38:51


Я вижу, что pg_status отражает изменение, но статус все еще остается down.

Спасибо, ребята

Ответ или решение

Проблема с авто-восстановлением узлов в pgpool-II

Введение

Ваша проблема с автоматическим восстановлением узлов в pgpool-II может быть вызвана несколькими факторами. pgpool-II является промежуточным программным обеспечением, которое управляет многими клиентскими подключениями к PostgreSQL и обеспечивает функции, такие как балансировка нагрузки, автоматическое переключение при сбоях и мониторинг состояния узлов. Ваша конфигурация, включая использование auto_failback, не срабатывает должным образом, и узлы не повторно подключаются автоматически после их перезапуска.

Анализ конфигурации

На основе предоставленной вами конфигурации отмечаем несколько ключевых моментов:

  1. Настройки авто-восстановления:

    • Параметр auto_failback включает автоматическое восстановление подключенных узлов. Проверьте, активен ли этот параметр.
    • Параметр auto_failback_interval установлен на 10 секунд, что означает, что pgpool будет проверять состояние узлов каждые 10 секунд.
  2. Проверка состояния узлов:

    • Из предоставленного вывода видно, что когда вы останавливаете резервный сервер, его состояние становится down. После перезапуска он поначалу отображается как up, но статус остается down, что указывает на проблему с восстановлением состояния.

Потенциальные причины проблемы

  1. Проблемы с доступом: Убедитесь, что pgpool может подключаться к резервному серверу. Проверьте настройки firewall и доступ к сети.

  2. Проблемы с конфигурацией проверки состояния:

    • Вы используете параметры health_check_user, health_check_password, и health_check_database, которые могут не соответствовать вашим учетным данным PostgreSQL. Убедитесь, что указанные учетные данные имеют достаточно прав для выполнения проверки состояния.
  3. Несоответствие версий: Убедитесь, что версии pgpool-II и PostgreSQL совместимы друг с другом. Вы используете PostgreSQL 17 и pgpool-II 4.5, что должно быть совместимо, но всегда хорошо перепроверить обновления и изменения в документации.

  4. Проблемы с конфигурацией параметров репликации: Вы можете проверить, правильно ли настроены репликационные параметры на обоих серверах. Параметры replication_delay, replication_state, и replication_sync_state показывают состояние синхронизации между узлами, и любые отклонения могут привести к тому, что pgpool-II не сможет восстановить узел автоматически.

  5. Логи и диагностика:

    • Проверьте логи pgpool-II, чтобы найти дополнительные подсказки о том, почему узел не восстанавливается. Убедитесь, что уровень ведения журнала (log_min_messages и client_min_messages) установлен на достаточную детальность, чтобы захватить важные сообщения.
    • Убедитесь также, что у вас есть корректная обработка ошибок в ваших командных файлах failover_command и failback_command.

Решение проблемы

  1. Проверка конфигурации и учетных данных: Проверьте и при необходимости обновите настройки вашего pgpool-II, особенно health_check_* параметры. Убедитесь, что все учетные данные корректны и действительны.

  2. Тестирование соединения: Попробуйте вручную подключиться к резервному серверу с использованием тех же учетных данных, которые указаны в health_check_username и health_check_password.

  3. Тестирование состояния узлов: Настройте параметры состояния узлов и увеличьте интервал проверки, если это необходимо. Попробуйте временно установить auto_failback в off, чтобы убедиться, что узел можно вручную восстановить, прежде чем снова включать этот параметр.

  4. Проверка состояния репликации: Выявите возможные проблемы с репликацией, убедившись, что оба узла находятся в синхронизации.

Заключение

Ваша проблема с автоматическим восстановлением узлов в pgpool-II может быть решена путем более детального изучения конфигурации и взаимодействия между настройками проверки состояния и доступностью узлов. Следуя предложенным шагам и рекомендациям, вы сможете восстановить нормальную работу системы и обеспечить ее надежность.

Оцените материал
Добавить комментарий

Капча загружается...