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」グループにデータを複製し続けます。