「Host-1」マスターと「Host-2」スレーブ、「Host-1」がダウンした場合、pgpool は「Host-2」をマスターに正しく昇格させます。しかし、その後「Host-1」が復旧しても、pgpool はこれを認識せず、「Host-2」がダウンした場合、「Host-1」がダウンしていても、pgpool は「Host-1」をマスターに昇格させません。オンライン。health_check を有効にしましたが、「Host-1」の状態 (up になった後) は常に 3="Node is down" であるため、まったく役に立たないようです。
これは、イベント中のコマンド「show pool_nodes」の出力です。
→初期状態:「Host-1」UP(マスター)、「Host-2」UP(スレーブ)
node_id | hostname | port | status | lb_weight | role
---------+----------+------+--------+-----------+--------
0 | Host-1 | 5432 | 2 | nan | master
1 | Host-2 | 5432 | 1 | nan | slave
-> ノード 0 がダウン: 「ホスト 1」がダウン、「ホスト 2」がアップ
node_id | hostname | port | status | lb_weight | role
---------+----------+------+--------+-----------+--------
0 | Host-1 | 5432 | 3 | nan | slave
1 | Host-2 | 5432 | 2 | nan | master
-> ノード 0 が復帰: 「ホスト 1」UP、「ホスト 2」UP
node_id | hostname | port | status | lb_weight | role
---------+----------+------+--------+-----------+--------
0 | Host-1 | 5432 | 3 | nan | slave
1 | Host-2 | 5432 | 2 | nan | master
ただし、「ホスト 1」のステータスは 3 であり、「ノードがダウンしています」を意味します。
-> ノード 1 がダウン: "Host-1" UP、"Host-2" DOWN: この時点で、ノード 0 が稼働していても、db に接続できません!
ノード 0 をもう一度マスターに昇格させるために pgpool を許可するにはどうすればよいですか? 有用な場合、これらは私の pgpool.conf の「バックエンド接続設定」セクションと「HEALTH CHECK」セクションです。
# - Backend Connection Settings -
backend_hostname0 = 'Host-1'
# Host name or IP address to connect to for backend 0
backend_port0 = 5432
# Port number for backend 0
#backend_weight0 = 1
# Weight for backend 0 (only in load balancing mode)
#backend_data_directory0 = '/data'
# Data directory for backend 0
backend_flag0 = 'ALLOW_TO_FAILOVER'
# Controls various backend behavior
# ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER
backend_hostname1 = 'Host-2'
# Host name or IP address to connect to for backend 0
backend_port1 = 5432
# Port number for backend 0
#backend_weight1 = 1
# Weight for backend 0 (only in load balancing mode)
#backend_data_directory1 = '/data'
# Data directory for backend 0
backend_flag1 = 'ALLOW_TO_FAILOVER'
# Controls various backend behavior
# ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER
#------------------------------------------------------------------------------
# HEALTH CHECK
#------------------------------------------------------------------------------
health_check_period = 10
# Health check period
# Disabled (0) by default
health_check_timeout = 20
# Health check timeout
# 0 means no timeout
health_check_user = 'admin'
# Health check user
health_check_password = '12345'
# Password for health check user
health_check_max_retries = 10
# Maximum number of times to retry a failed health check before giving up.
health_check_retry_delay = 1
# Amount of time to wait (in seconds) between retries.