web-dev-qa-db-ja.com

pgpoolまたはpgbouncerを使用したPostgresqlレプリケーション

堅牢なフェイルオーバー戦略(自己ホスト型)を備えたpostgresqlレプリケーションの適切な構成を探しています。

実際、私はrepmgrを使用してマスター/スレーブに2つのpostgresqlインスタンスを構成しました。さて、適切なフェイルオーバーを行うために、これら2つのインスタンスの前に何を置くべきかわかりません。

マスターがダウンすると、スレーブは自動的に新しいマスターに昇格し、クライアントのダウンタイムは発生しません。私はpgbool(またはpgbouncer?)をマスター/スレーブpostgresの前に置くべきだと思いますが、単一障害点としてそれを回避するには、これらのインスタンスを2つ持つべきですよね? (これは私が考えていることの例です: http://i.imgur.com/yqky2bl.png )。

私の根本的な問題は、pgpoolの2つの異なるインスタンスで自動フェイルオーバーを構成する方法です。両方が内部マスター/スレーブ構成を変更していることをどのように確認できますか?フェイルオーバーまたはrepmgr(両方のpgpoolインスタンスの構成の変更)を行うにはpgpoolにする必要がありますか?

私が正しい方向に進んでいることに少し疑問があります。基本的に、このタイプの構成に関する多くのドキュメントが見つからなかったためです。たとえば、ネットワークの問題が数分後にマスターがオンラインに戻った場合に何が起こる可能性がありますか( postgresは実際にはダウンしていませんが、クライアントからは到達できません)。

物事をより複雑にするために、Dockerを使用してこのインフラストラクチャを構成しようとしています(ただし、pgインスタンスを破棄して、Dockerを使用して新しいインスタンスを作成できるので、もっと簡単になるでしょうか?)。

3
Luca Leen

私はdockerを使用したことがないので、これについてコメントすることはできませんが、私の意見では、(そして私はこれを大規模で頻繁に使用されるデータベースの本番環境で長い間使用しています)複雑な)クラスター設定: corosyncおよびpacemakerpgsqlリソースエージェント および 仮想、フローティングIP を使用して、クライアントを接続します。

この種のセットアップ/ソフトウェアスタックを使用したことがない場合は、 このチュートリアル または そのチュートリアル をご覧ください。さらに ここ は、昨年開催されたPGConf.Russiaからのこのトピックに関するスライドです(注意してください、これがあなたにとって重要な場合は.pdfです)。この方法で特定の問題が発生した場合は、新しい質問を開いてpingを送信してください(たとえば、@ gf_を使用したコメントを介して)。

編集:PostgreSQL自動フェイルオーバーPAF という新しいプロジェクトもあります。「[...]は新しいOCFです。 PostgreSQL専用のリソースエージェント。当初の目的は、Pacemaker管理とPostgreSQL管理の間に明確な制限を設け、物事をシンプルで文書化され、しかも強力に保つことです。[...] "最初のコミットは2016年2月に行われたため、まだかなり若いですが、これも一見の価値があるかもしれません。 (ただし、これを使用したことがないので、コメントも判断もできません。)

1
gf_