1

「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.
4

2 に答える 2

3

スレーブ ノードが起動し、レプリケーションが機能したら、ノードを pgpool に再接続する必要があります。

$ pcp_attach_node 10 pgpool_host 9898 admin _pcp_passwd_ 0

最後の引数はノード ID です。あなたの場合は 0 です。

詳細については、 http://www.pgpool.net/docs/latest/pgpool-en.html#pcp_attach_nodeを参照してください。

于 2013-12-11T08:10:12.877 に答える
0

昇格する前に、スレーブ ノードを起動する必要があります。これは、あなたの場合、Slony を使用して完全にフェイルオーバーし、以前のマスターを新しいスレーブとして再構築することを意味します。

基本的な問題は、フェールバックする前に、新しいマスターに書き込まれた書き込みを古いマスターにレプリケートする必要があることです。これは何よりもまず Slony の問題です。Slony が機能し、すべてが複製されていることを確認したら、pgpool 側のトラブルシューティングを行うことができますが、それまではできません (その後、PGPool に再接続する必要がある場合があります)。マスター/スレーブ モードの PGPool を使用すると、PGPool は、使用している他のレプリケーション システムのセカンダリになります。

于 2013-11-24T04:57:07.470 に答える