高可用性Postgresqlクラスターをセットアップする必要があります。したがって、Pacemakerとpgpoolロードバランサーを備えたDRBDが最良のオプションであることがわかりました。
したがって、アーキテクチャは次のようになります。
私の知る限り、DRBDはブロックレベルのレプリケーション(ストレージで動作)用であり、Pacemakerはサービスクラスター(サービスレベルで動作)です。それでは、どちらが使用に最適で、最高のHAソリューションですか?
そして、もう1つの質問は、AWS EC2を使用しているイムです。どうすれば管理できますかVIP(つまり、プライマリがダウンした場合、PGpoolがVIPをスタンバイに切り替える方法また、AWSでも)?
通常は、両方を使用します。データを同期的に複製するDRBD、およびサービスがアクティブになる場所を管理するPacemaker。 Pacemakerは、DRBDの昇格/降格、およびデータベースと仮想IPアドレスの開始を制御します。
Pacemakerはresource-agents
クラスターサービスを管理します。それらの1つは、AWSノード間でセカンダリIPを移動するためのリソースエージェントです。 https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/awsvip
それがあなたを正しい道に導くことを願っています。
フェンシングを完全に信頼していない限り、共有ストレージはpostgresで非常に悪い考えです。
DRBDはシングルマスターのようですので、おそらく大丈夫です。
マスター以外のpostgresが完全にダウンしていることを確認することは絶対に重要です。2つのpostgresインスタンスが同じデータディレクトリを共有する可能性のあるオーバーラップはありません。そうでない場合、大規模なデータ破損willが発生します。 PostgreSQLはnot共有ストレージデータベースです。
STONITHとフェンシングを正しく取得します。
個人的には、ブロックデバイスレプリケーションではなくPostgreSQLのレプリケーションを使用することをお勧めしますが、私はPostgreSQL開発者なので、驚くにはあたりません。