HARP Manager

HARP Managerは、ローカルのPostgreSQL / BDRノードと対話し、その状態に関する情報をコンセンサスレイヤーに保存するデーモンです。マネージャは、各ノードのリーダーステータスを現在保持しているノードを決定し、構成(ラグ、CAMOラグなど)のコンストレインを適用して、リーダーの考慮から不適格なノードを防ぎます。

クラスター内のすべてのPostgresノードには、関連するHARPマネージャーが必要です。他のノードが存在する場合がありますが、リードまたはシャドウマスターの役割、または将来的にHARPがサポートする他の機能として参加することはできません。

仕組み

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

  • ノードの現在のLSN

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

  • すべてのアップストリームBDR同等なの現在の適用LSN位置。

  • CAMOが有効になっている場合:

  • CAMOパートナーの名前

  • ピアCAMO状態(is_ready)

  • LMO位置を受信および適用したCAMOキュー

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

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

  • BDRノードの状態。限られた場合を除き、ACTIVEである必要があります。

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

  • その他の追跡値。

!!! Important * HARP内のBDRノードに名前を付ける場合、 BDRノード名前はnode.name構成属性で表されるノード名前とマッチする必要があります。これは、ブートストラッププロセスで既に行われている必要があります。

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

ノードメタデータを更新した後、 HARPマネージャーは、ローカルノードが既に保持している場合はリードマスターリースをリフレッシュするか、リースの期限が切れている場合はリースを取得シークとします。すべてのノードの現在の状態は他のすべてのノードに既知であるため、前のリードマスターであったノードには、存在する場合は自動優先ランキングが与えられます。そうでない場合、他のすべてのノードは、LSNラグ、ノードの優先度、およびその他の基準ごとにリストされ、最も適格なノードがリードマスターリースを捕捉します。

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

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

設定

HARP Managerは、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

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

詳細については、Configurationを参照してください。

使用法

これは、 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の文書を参照してください。

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