HARP Manager

HARP Managerは、ローカルのPostgreSQL / BDRノードと対話し、その状態に関する情報をコンセンサスレイヤーに保存するデーモンです。 Managerは、それぞれのロケーションのリーダーステータスを現在保持しているノードを特定し、構成(ラグ、 CAMOラグなど)の制約を適用して、資格のないノードがリーダーの検討対象とならないようにします。

クラスター内のすべてのPostgresノードには、 HARP Managerが関連付けられている必要があります。他のノードは存在できますが、リードまたはシャドウマスターの役割、またはHARPマネージャーを必要とするその他の機能として参加することはできません。

重要

HARP Managerは、データベースの起動および停止に使用されることを想定しています。 HARPマネージャーを停止すると、データベースが停止します。 HARP Managerを起動すると、データベースがまだ起動されていない場合は起動します。別の方法を使用してデータベースを停止すると、 HARPマネージャーはデータベースを再起動します。

仕組み

起動時に、 HARP Managerはpg_ctl を使用してPostgresをまだ実行していない場合は起動します。この後、 node.lease_refresh_interval 設定で定義されたサーバーを定期的にチェックします。 HARP Managerは、次を含むPostgresに関するさまざまなデータを収集します。

*ノードの現在のLSN。

  • Postgresが実行されており、接続を受け入れている場合。この特定のデータポイントは、定期的に更新する必要があるリースと見なされます。有効期限が切れると、 HARPプロキシは既存のルーティングからノードを削除します。

*すべてのアップストリームBDRピアノードの現在の適用LSN位置。

  • CAMOが有効になっている場合: - CAMOパートナーの名前 - ピアCAMOの状態(is_ready ) - CAMOキューが受信して適用したLSN位置

*ノードがBDRか通常のPostgresかなどのノードタイプ。

  • 読み取り/書き込み、物理ストリーミングレプリカ、ロジカルスタンバイなど、ノードの現在のロール。

  • BDRノードの状態。限定された場合を除きACTIVE 。

  • その他のメタデータ収集のBDRノード ID。

※その他のトラッキング値です。

重要

HARPでBDRノードに名前を付ける場合、 BDRノード名は node.name 構成属性で表されるノード名と一致する必要があります。これはブートストラッププロセスで発生します。

ここで収集されたデータは、他のHARP Managerプロセスで完全に利用でき、遅延、パートナーの準備状況、およびスイッチオーバーとフェイルオーバーの動作を指示するその他の基準を評価するために使用されます。

ノードのメタデータを更新した後、 HARPマネージャーは、リードマスターリースが既にローカルノードに保持されている場合は更新するか、リースが期限切れになっている場合はリースを取得しようとします。すべてのノードの現在の状態は他のすべてのノードに知られているため、以前のリードマスターであったノードが存在する場合、自動的に優先順位が付けられます。そうでない場合、他のすべてのノードはLSNラグ、ノードの優先度、およびその他の基準で自分自身をリストし、最も適格なノードがリードマスターリースを押収します。

この手順は、ノードが存在する定義されたすべての場所で発生します。したがって、ロケーションDC1とDC2には、それぞれにリードマスターノードがあり、両方に個別のリースと選択プロセスがあります。

HARP Managerは、これらのPostgresステータスチェック、リース更新、および選択を繰り返して、クラスターがHARPプロキシからの接続に対して常にリードマスターターゲットを持つようにします。

構成

HARPマネージャーは、 dcs 、cluster 、およびmanager 構成スタンザを想定しています。以下は機能的な例です。

cluster:
  name: mycluster

dcs:
  driver: etcd
  endpoints:
    - host1:2379
    - host2:2379
    - host3:2379

manager:
  name: node1
  postgres_bin_dir: /usr/lib/postgresql/13/bin

実行中のインスタンスにSIGHUP を発行するか、サービスレベルのリロードを呼び出すことにより、構成ファイル(デフォルト:/etc/harp/config.yml )に変更を適用できます。

詳細については、 構成ファイルの指定 を参照してください。

使用法

これは、 HARP Managerの基本的な使用法です。

Usage of ./harp-manager:
  -f string
        Optional path to config file (shorthand)
  --config string
        Optional path to config file

harp-manager をフォークされたデーモンとして起動するための引数はありません。このソフトウェアは、systemdまたはコンテナ内でトップレベルプロセスとして起動されるように設計されています。これは、journaldまたは接続されたコンテナターミナルを介してキャプチャおよびアクセスするために、出力がSTDOUTおよびSTDERRに送られることも意味します。

PostgresのHARP Manager制御の無効化と再有効化

PostgresのHARP Manager制御を一時的に一時停止できます。これにより、デーモンの実行は継続されますが、クラスターの既存の動作に影響を与える可能性のある操作は実行されません。管理を再度有効にすると、操作が再開されます。

ノード管理を一時的に無効にする例は次のとおりです。

harpctl unmanage node node1

詳細については、 harpctl command-line tool を参照してください。

HARP Managerによるノード管理はデフォルトで有効になっています。