ErogameScapeではpgpoolを使って冗長構成をとっています。
2つのサーバーマシンのそれぞれにApache、pgpool、PostgreSQLを動かしています。

通常は192.168.0.14に接続するようにしています。
pgpoolを使い始めたころから原因不明で、192.168.0.13がちょいちょい切り離される事象が発生していました。
192.168.0.013のPostgreSQLは問題なく動いていて、keepalivedも切れていないので、pgpoolの問題だと思っていたのですが、切り離された場合のログを見ても、いきなり切れたようにしか見えませんでした。
pgpoolのVerがあがって、PostgreSQLからの応答がない…と判断するまでの時間をかえることができるようになったので、そのパラメータを十分大きくしてみたのですが、NGでした。
切り離される際のpgpoolのログは以下の通りです。
この3時30分頃、何が起こっているのか?と思って調べたところ、ログのローテーションの時間なことが分かりました。
そのログの中でもapacheのログのローテートの時間であることも分かりました。
ErogameScapeのApacheのログは1日で350MBくらいなのですが、このログを切り替えてapacheを再起動する際に、pgpoolが他のサーバーマシンで動いているPostgreSQLを切り離すようでした。
※単純にapacheを再起動するだけでは切り離されることはありませんでした。
そこで、Apacheのログが350MBの1/3くらいになるような時間にApacheのログをローテーションすることにしました。
それから2週間…pgpoolが他のサーバーマシンで動いているPostgreSQLを切り離すことはなくなりました…
なぜpgpoolがApacheの350MB程度のログをローテーションする際に、gpoolが他のサーバーマシンで動いているPostgreSQLを作成させて切り離すことがあるのか分からないのが、もやっとしますが、とりあえず切り離されなくなってよかったかなと…
2つのサーバーマシンのそれぞれにApache、pgpool、PostgreSQLを動かしています。

通常は192.168.0.14に接続するようにしています。
pgpoolを使い始めたころから原因不明で、192.168.0.13がちょいちょい切り離される事象が発生していました。
192.168.0.013のPostgreSQLは問題なく動いていて、keepalivedも切れていないので、pgpoolの問題だと思っていたのですが、切り離された場合のログを見ても、いきなり切れたようにしか見えませんでした。
pgpoolのVerがあがって、PostgreSQLからの応答がない…と判断するまでの時間をかえることができるようになったので、そのパラメータを十分大きくしてみたのですが、NGでした。
切り離される際のpgpoolのログは以下の通りです。
2016-12-27 03:31:33: pid 28889: LOG: received degenerate backend request for node_id: 1 from pid [28889] 2016-12-27 03:31:33: pid 28889: WARNING: write on backend 1 failed with error :"Success" 2016-12-27 03:31:33: pid 28889: DETAIL: while trying to write data from offset: 0 wlen: 5 2016-12-27 03:31:33: pid 13031: LOG: starting degeneration. shutdown host erogamescape13(5432) 2016-12-27 03:31:33: pid 19938: ERROR: unable to read data from frontend 2016-12-27 03:31:33: pid 19938: DETAIL: socket read failed with an error "Connection reset by peer" 2016-12-27 03:31:33: pid 30138: ERROR: unable to read data from frontend 2016-12-27 03:31:33: pid 30138: DETAIL: EOF encountered with frontend 2016-12-27 03:31:34: pid 13031: LOG: Restart all children 2016-12-27 03:31:34: pid 16765: LOG: child process received shutdown request signal 3 2016-12-27 03:31:34: pid 18712: LOG: child process received shutdown request signal 3 2016-12-27 03:31:34: pid 18047: LOG: child process received shutdown request signal 3 2016-12-27 03:31:34: pid 19036: LOG: child process received shutdown request signal 3 2016-12-27 03:31:34: pid 13031: LOG: failover: set new primary node: -1 2016-12-27 03:31:34: pid 13031: LOG: failover: set new master node: 0たいていこの時間あたりに切り離されるので、朝起きた時に気がついて、復帰させるということをしていました。
この3時30分頃、何が起こっているのか?と思って調べたところ、ログのローテーションの時間なことが分かりました。
そのログの中でもapacheのログのローテートの時間であることも分かりました。
ErogameScapeのApacheのログは1日で350MBくらいなのですが、このログを切り替えてapacheを再起動する際に、pgpoolが他のサーバーマシンで動いているPostgreSQLを切り離すようでした。
※単純にapacheを再起動するだけでは切り離されることはありませんでした。
そこで、Apacheのログが350MBの1/3くらいになるような時間にApacheのログをローテーションすることにしました。
それから2週間…pgpoolが他のサーバーマシンで動いているPostgreSQLを切り離すことはなくなりました…
なぜpgpoolがApacheの350MB程度のログをローテーションする際に、gpoolが他のサーバーマシンで動いているPostgreSQLを作成させて切り離すことがあるのか分からないのが、もやっとしますが、とりあえず切り離されなくなってよかったかなと…