2017-06-07 8 views
2

これは、PostgreSQLの人々によって貧弱な用語の選択のために、いくつかのために混乱することが、私と一緒にご負担くださいます...クラスタリングPostgreSQLのクラスタ

我々は、複数のPostgreSQL(PG)クラスタをサポートすることができるようにする必要がありますそれらを複数のサーバ上にクラスタリングします。 repmgr。たとえば、サーバーの可用性と各PGクラスタのPITRの両方をサポートするためです。サーバごとの単一のPGクラスタは、多くの場合高価すぎるため、データの分離やリカバリなどのために、別々のPGクラスタ上の複数のテナント(小規模な)顧客が、複製/以上。

PGクラスタに最も近い類推は、複数のDBをホストし、それぞれ独自のポートなどを持つことができるSQL Serverインスタンスです。SQL Serverと同様に、複数のインスタンス(PGクラスタ)を同じサーバー上で実行し、それぞれの複製を作成します。

基本的なrepmgr設定は問題ありません。これは、単一のPGクラスタモデルでは明らかです。しかし、repmgrを使って複数のPGクラスタに推奨/サポートされるアプローチはありますか? Repmgrが各PGクラスタが別々のrepmgrクラスタ(別々のrepmgr.conf、接続情報/ポートを持つ)になっていると考えるのは間違いありません。しかし、私はまだそれがうまくいくかどうかはわかりません。

私は通常、同じサーバー上のすべてのPGクラスタをフェイルオーバーすることを期待しています。一度に1つではありません。

私はこれがすべてのケースで最良のアイデアではないかもしれないと認識していますが、ほとんど可能なことを模索しています。私にはいくつかの選択肢がありますが、これは現在のシングルノードモデルに最も近いものです。

明確にするために、私は多くのサーバークラスタで数千人の顧客をサポートする必要があります。理想的には、各クラスタは、(例えば、メインPGクラスタ内の)同じrepmgr DBを使用し、本質的に他のサーバクラスタから単独で立っている。

おかげで...

+1

私は本当にPostgreSQLに "cluster"という言葉を削除したいと思っています:私は代わりに "instance"を使用していますが、それに応じて編集する必要があります。このツールを使って - 有能な、人形など - と容器 - ドッカー、AWSなど –

答えて

1

は自分の質問に答えるが、私それ以外はかなりrepmgrなどのように私は、誰かが最終的により良い答えを投稿したいと考えています。 Repmgrクラスタ接続文字列とPGクラスタ(ポート)との間に暗黙の関係があるため、repmgrは複数のPGクラスタ(インスタンス)には適していないようです。したがって、基本的には、クラスタ化されたすべてのPGクラスタ/インスタンスに対して別個のrepmgr環境(DB)を作成しなければならず、repmgrがテーブルにもたらす操作上の単純さをほとんど失うことになります。

Corosync/Pacemaker/etcを使用してより一般的なソリューションを検討します。少なくともその場合は、仮想クラスタIP処理がソリューションに組み込まれており、追加のソフトウェア/リソースを必要としませんオフ。

repmgrがPGクラスタから完全に独立していて、各repmgrを許可するとクラスタは、独自の接続情報を指定し、repmgr DB自体の接続情報は指定しません。

関連する問題