Near/far architecture#
ニア/ファーアーキテクチャでは、プライマリロケーションに2つのデータノード、セカンダリロケーションに1つのデータノードがあります。プライマリの場所は、データの大部分が保存され、ほとんどのクライアント接続が行われる場所です。セカンダリの場所はディザスターリカバリーに使用され、デフォルトではクライアント接続に使用されません。
データノードはすべて、標準のアーキテクチャと同様に、マルチマスターレプリケーション構成で構成されます。違いは、セカンダリロケーションのノードがクラスター内の他のノードからフェンスオフされ、デフォルトではクライアント接続を受け取らないことです。この構成では、セカンダリロケーションノードには、プライマリロケーションのデータの完全なレプリカがあります。
PGDコミットスコープを使用して、プライマリロケーションのデータノードは、プライマリロケーションの他のノードとセカンダリロケーションのノードにデータを同期レプリケートするように構成されます。これにより、データがプライマリロケーションにコミットされる前に、すべてのノードにレプリケートされます。ノードがダウンした場合、コミットスコープルールが状況を検出し、レプリケーションを非同期レプリケーションに低下させます。この動作により、システムは動作を継続できます。
プライマリロケーションで部分的な障害が発生した場合、システムは他のデータノードに切り替わり、同様にデータの完全なレプリカを使用して、動作を継続します。また、セカンダリの場所への複製も続行します。プライマリの場所で障害が発生したノードが復帰すると、再参加し、現在プライマリであるノードからデータの複製を開始します。
プライマリロケーションに完全な障害が発生した場合、セカンダリロケーションのデータベースにはデータの完全なレプリカがあります。障害に応じて、復旧のオプションには、セカンダリロケーションからプライマリロケーションの復元、またはセカンダリロケーションのバックアップからプライマリロケーションの復元が含まれます。セカンダリロケーションはクライアント接続を受け入れるように構成できますが、これはデフォルト構成ではないため、追加の再構成が必要です。
Near/Farアーキテクチャでの同期レプリケーション#
最良の結果を得るには、同期レプリケーションを使用してニア/ファーアーキテクチャを構成します。これにより、データがプライマリロケーションにコミットされる前に、セカンダリロケーションに複製されます。
PGDニアファーアーキテクチャの手動展開#
次の手順では、PGDニアファーアーキテクチャを手動で展開する方法について説明します。このアーキテクチャは、適度に高可用性を必要とし、ディザスターから復旧できる必要がある単一の場所用に設計されています。これは、プライマリロケーションに2つのデータノードクラスターを配置し、セカンダリロケーションに単一のデータノードを配置することにより実行されます。
これらの手順では、 pgdコマンドラインツールを使用してクラスターを作成し、ノードを構成します。すでにPGDをインストールし、pgdコマンドラインツールにアクセスできることを前提としています。
プライマリロケーションはactive
ロケーションと呼ばれ、セカンダリロケーションはdr
ロケーションと呼ばれます。
PGD構成#
プライマリロケーションは、独自のグループ「アクティブ」の2つのデータノードで構成されています。この場所は、大部分のクライアント接続が行われる場所です。
セカンダリロケーションは、独自のグループdr内の1つのデータノードで構成されています。
これらはすべて同じクラスターのメンバーです。
pgd-cliで作成したら、ノードのルーティングとフェンシングを構成する必要があります。
最初に、「active」グループと「dr」グループの両方でルーティングを無効にします。
pgd group dr set-option enable_routing off --dsn "host=localhost port=5432 dbname=pgddb user=pgdadmin"
pgd group active set-option enable_routing off --dsn "host=localhost port=5432 dbname=pgddb user=pgdadmin"
次に、「pgd」トップレベルグループでルーティングを有効にします。
pgd group pgd set-option enable_routing on --dsn "host=localhost port=5432 dbname=pgddb user=pgdadmin"
最後に、「dr」グループのフェンシングを有効にします。
pgd group dr set-option enable_fencing on --dsn "host=localhost port=5432 dbname=pgddb user=pgdadmin"
このアプローチにより、「dr」グループはクラスター内の他のノードからフェンスオフされ、デフォルトでクライアント接続を受け入れません。 「active」グループは通常どおり動作し、「dr」グループにデータを複製し続けます。