<div dir="ltr"><div>いつもお世話になっております。</div><div>岩下と申します。</div><div><br></div><div>お知恵を拝借できないかと思い、初めて投稿させていただきます。</div><div><br></div><div>先日、突然 pgpool クラスタから postgres が切り離され failover が発動するという事象が発生しました。</div><div>出力されたログは以下のようなものでした。</div><div><br></div><div>---</div><div>[1284894-1] 2018-02-01 06:11:23: pid 117097: LOG: child process with pid: 37220 exits with status 256</div><div>[1284895-1] 2018-02-01 06:11:23: pid 117097: LOG: fork a new child process with pid: 63996</div><div>[1284896-1] 2018-02-01 06:12:09: pid 117097: LOG: child process with pid: 35770 exits with status 256</div><div>[1284897-1] 2018-02-01 06:12:09: pid 117097: LOG: fork a new child process with pid: 65375</div><div>[1284011-1] 2018-02-01 06:15:54: pid 89930: LOG: received degenerate backend request for node_id: 0 from pid [89930]</div><div>[1283870-1] 2018-02-01 06:15:54: pid 86578: WARNING: write on backend 0 failed with error :&quot;Success&quot;</div><div>[1283870-2] 2018-02-01 06:15:54: pid 86578: DETAIL: while trying to write data from offset: 0 wlen: 5</div><div>[1284898-1] 2018-02-01 06:15:54: pid 117097: LOG: Pgpool-II parent process has received failover request</div><div>[1284357-1] 2018-02-01 06:15:54: pid 126010: LOG: unable to flush data to backend</div><div>[1284357-2] 2018-02-01 06:15:54: pid 126010: DETAIL: do not failover because I am the main process</div><div><br></div><div>~ 同様のログが繰り返し出力された後、failover 開始 ~</div><div><br></div><div>[1284901-1] 2018-02-01 06:15:54: pid 117097: LOG: execute command: my_failover_script</div><div>[1284902-1] 2018-02-01 06:15:58: pid 117097: LOG: find_primary_node_repeatedly: waiting for finding a primary node</div><div>[1284903-1] 2018-02-01 06:15:58: pid 117097: LOG: find_primary_node: checking backend no 0</div><div>[1284904-1] 2018-02-01 06:15:58: pid 117097: LOG: find_primary_node: checking backend no 1</div><div>[1284905-1] 2018-02-01 06:15:58: pid 117097: LOG: find_primary_node: primary node id is 1</div><div>[1284906-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: set new primary node: 1</div><div>[1284907-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: set new master node: 1</div><div>[1284908-1] 2018-02-01 06:15:58: pid 117097: LOG: failover done. shutdown host 10.0.0.10(15431)</div><div>[1284909-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284910-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284911-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284912-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284913-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284914-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284915-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284916-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284917-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[1284918-1] 2018-02-01 06:15:58: pid 117097: LOG: failover: no backends are degenerated</div><div>[10-1] 2018-02-01 06:15:58: pid 118593: LOG: worker process received restart request</div><div>[4-1] 2018-02-01 06:15:59: pid 118590: LOG: restart request received in pcp child process</div><div>[1284919-1] 2018-02-01 06:15:59: pid 117097: LOG: PCP child 118590 exits with status 0 in failover()</div><div>[1284920-1] 2018-02-01 06:15:59: pid 117097: LOG: fork a new PCP child pid 76317 in failover()</div><div>[1284921-1] 2018-02-01 06:15:59: pid 117097: LOG: worker child process with pid: 118593 exits with status 256</div><div>[1284922-1] 2018-02-01 06:15:59: pid 117097: LOG: fork a new worker child process with pid: 76318</div><div>[1284923-1] 2018-02-01 06:15:59: pid 117097: LOG: child process with pid: 95153 exits with status 0</div><div><br></div><div>~ failover 後は正常に稼働~</div><div>---</div><div><br></div><div>環境は以下の通りです。</div><div><br></div><div>CentOS 7.2 (AWS EC2 X1.32xlarge)</div><div>pgpool-II-3.6.4</div><div>postgresql-9.6.3</div><div><br></div><div>構成の概要としては以下の通りです。</div><div>(ほとんど一般的な構成ではなかろうと思っています。。)</div><div><br></div><div>* postgresql は master/slave 構成で非同期 streaming replication を利用</div><div>* pacemaker + corosync + pgpool-II で HA を構成</div><div>* 上記クラスタソフトウェアは postgresql と同じ EC2 インスタンス内に同居</div><div>* 1EC2 インスタンス内に postgresql とそれに対応する pgpool のプロセスが 6 つずつ稼働</div><div><br></div><div>また、今回の事象は pgpool が稼働していないホストの postgres を切り離しており、</div><div>その際、node_id や postgres が master か slave かは無関係となっているようでした。</div><div>なお、当時 postgres 自体は問題なく稼働していて、特別怪しいログは出力されておりませんでした。</div><div><br></div><div>pgpool.conf は以下の通りです。</div><div><br></div><div>---</div><div><br></div><div>backend_hostname0 = &#39;10.0.0.10&#39;</div><div>backend_port0 = 15431</div><div>backend_weight0 = 1</div><div>backend_data_directory0 = &#39;/path/to/data&#39;</div><div>backend_flag0 = &#39;ALLOW_TO_FAILOVER&#39;</div><div><br></div><div>backend_hostname1 = &#39;10.0.1.10&#39;</div><div>backend_port1 = 15431</div><div>backend_weight1 = 1</div><div>backend_data_directory1 = &#39;/path/to/data&#39;</div><div>backend_flag1 = &#39;ALLOW_TO_FAILOVER&#39;</div><div><br></div><div>num_init_children = 250</div><div>max_pool = 4</div><div><br></div><div>child_life_time = 300</div><div>child_max_connections = 100</div><div>connection_life_time = 0</div><div>client_idle_limit = 0</div><div><br></div><div>replication_mode = off</div><div>load_balance_mode = off</div><div><br></div><div>master_slave_mode = on</div><div>master_slave_sub_mode = &#39;stream&#39;</div><div>sr_check_period = 10</div><div><br></div><div>health_check_period = 300</div><div>health_check_timeout = 5</div><div>health_check_max_retries = 3</div><div>health_check_retry_delay = 1</div><div>connect_timeout = 10000</div><div><br></div><div>failover_command = &#39;my_failover_script&#39;</div><div>fail_over_on_backend_error = on</div><div>search_primary_node_timeout = 10</div><div><br></div><div>---</div><div><br></div><div>同様の事象が報告されているか、考えられる原因があるか等、ご教授いただけますと幸いです。</div><div>よろしくお願い致します。</div></div>