Configuring HARP
================

``failover_manager`` が\ ``harp``
に設定されている場合、TPAはHARPをインストールして構成します。これは、
BDR-Always-ONクラスターのデフォルトです。

HARPのインストール
------------------

``harp-manager`` および\ ``harp-proxy``
パッケージを提供する必要があります。これらのパッケージへのアクセスを取得するには、EDBに連絡してください。

HARPの設定
----------

 :ref:`HARP documentation <Configuring HARP>` を参照

HARP構成の詳細については。

.. csv-table::
  :header: Variable,Default value,Description
  :width: 18,8,20
  :align: left
  :class: longtable

  `cluster_name`,\`\`,クラスターの名前。
  `harp_consensus_protocol`,\`\`,使用するコンセンサスレイヤー（`etcd`または`bdr`）
  `harp_location`,`location`,このインスタンスの場所（デフォルトは`location`パラメーター）
  `harp_ready_status_duration`,`10`,更新されない場合、ノードの準備状況ステータスが持続する時間（秒）。
  `harp_leader_lease_duration`,`6`,Lead Masterリースが更新されない場合、持続する時間（秒）。
  `harp_lease_refresh_interval`,`2000`,Lead Masterリースの更新間のミリ秒単位の時間。
  `harp_dcs_reconnect_interval`,`1000`,切断されたノードがDCSへの再接続を試行する間隔（ミリ秒単位）。
  `harp_dcs_priority`,`500`,2つのノードに等量のラグとリードマスターリースを取得するためのその他の適格基準がある場合、これは、あるノードを別のノードよりも優先する追加のランキング値として機能します。
  `harp_stop_database_when_fenced`,`false`,考えられるすべてのルーティングからノードを単に削除するのではなく、ノードがフェンスされたときにデータベースを停止します。
  `harp_fenced_node_on_dcs_failure`,`false`,HARPがDCSに到達できない場合は、ノードをフェンスします。
  `harp_maximum_lag`,`1048576`,リードマスターロックの取得が許可される前に、以前のリードマスターの最後に記録されたLSNとこのノードとの間の最大許容差異（バイト単位）。
  `harp_maximum_camo_lag`,`1048576`,最後に受信したLSNと、このノードとそのCAMOパートナーとの間で適用されたLSNとの間の最大許容差異（バイト単位）。
  `harp_camo_enforcement`,`lag_only`,CAMOキューの状態を厳密に適用するかどうか。
  `harp_use_unix_sock`,`false`,マネージャーデータベースアクセスにはUNIXドメインソケットを使用します。
  `harp_request_timeout`,`250`,DCSへのクエリが成功するまでの時間（ミリ秒）。
  `harp_watch_poll_interval`,`500`,DCSのポーリング間でスリープするミリ秒。 `harp_consensus_protocol`が`bdr`の場合にのみ適用されます。
  `harp_proxy_timeout`,`1`,Lead Masterへの組み込みプロキシ接続タイムアウト（秒単位）。
  `harp_proxy_keepalive`,`5`,ビルトインプロキシがキープアライブpingを送信する前にリードマスターへのアイドル接続で待機する時間。
  `harp_proxy_max_client_conn`,`75`,harp-proxyが受け入れるクライアントの最大接続数 (`max_client_conn`)
  `harp_ssl_password_command`,None,stdinで難読化されたsslpasswordを受け取り、処理されたsslpasswordをstdout経由で提供するカスタムコマンド。
  `harp_db_request_timeout`,`10s`,dcs -> request_timeoutに似ていますが、データベース自分自身への接続用です。

 :ref:`harp-config hook <Configuring HARP>` を使用できます

HARP構成ファイルをインストールした後にタスクを実行するため（例、追加の構成ファイルをインストールするため）。

コンセンサスレイヤー
--------------------

``tpaexec configure`` への\ ``--harp-consensus-protocol`` 引数は、
BDR-Always-ONアーキテクチャには必須です。

etcd
^^^^

``--harp-consensus-protocol etcd`` オプションが\ ``tpaexec configure``
に指定されている場合、TPAはconfig.ymlで\ ``harp_consensus_protocol``
を\ ``etcd``
に設定し、選択したレイアウトに応じて、インスタンスの適切なサブセットに\ ``etcd``
ロールを付与します。

HARP v2にはetcd
v3.5.0以降が必要です。これは、EDBが提供するproducts/harp/releaseパッケージリポジトリで入手できます。

etcdには次のパラメーターを構成できます。

.. csv-table::
  :header: Variable,Default value,Description
  :width: 12,12,18
  :align: left
  :class: longtable

  etcd_peer_port,2380,etcdがピア通信に使用するポート
  etcd_client_port,2379,etcdに接続するためにクライアントが使用するポート

bdr
^^^

``tpaexec configure`` に\ ``--harp-consensus-protocol bdr``
オプションが指定されている場合、TPAはconfig.ymlで\ ``harp_consensus_protocol``
を\ ``bdr``
に設定します。この場合、既存のPGDインスタンスがコンセンサスに使用され、これ以上の構成は必要ありません。

harpプロキシ用に別のユーザーを設定する
--------------------------------------

harpプロキシで別の読み取り専用ユーザーを使用する場合は、
cluster_varsの下で\ ``harp_dcs_user: username``
を設定することで指定できます。 TPAは\ ``harp_dcs_user``
設定を使用して読み取り専用ユーザーを作成し、DCS構成で設定します。

カスタムSSLパスワードコマンド
-----------------------------

``harp_ssl_password_command`` によって提供されるコマンドは、
HARPによって使用され、接続文字列で指定された\ ``sslpassword``
の難読化が解除されます。 ``sslpassword`` が存在しない場合、
``harp_ssl_password_command`` は無視されます。 ``sslpassword``
が難読化されていない場合、 ``harp_ssl_password_command``
は必要ないため、指定しないでください。

harpサービスの設定
------------------

harpサービスには次のパラメーターを設定できます。

.. csv-table::
  :header: Variable,Default value,Description
  :width: 12,12,18
  :align: left
  :class: longtable

  `harp_manager_restart_on_failure`,`false`,`true`の場合、`harp-manager`サービスはオーバーライドされるため、障害時に再起動されます。 `harp-manager`パッケージによってインストールされるサービスに準拠するため、デフォルトは`false`です。

harp http(s)ヘルスプローブの構成
--------------------------------

サービスの状態を監視するためのAPIエンドポイントを提供するharpのhttp(s)サービスを有効にして構成できます。

.. csv-table::
  :header: Variable,Default value,Description
  :width: 10,20,15
  :align: left
  :class: longtable

  `harp_http_options`,"`enable: false``secure: false``host: <inventory_hostname>``port: 8080``probes:`  `timeout: 10s``endpoint: ""host=<proxy_name> port=<6432> dbname=<bdrdb> user=<username>""`",http(s) api設定を定義するharp config.ymlのhttpセクションを構成します。

変数には、次のキーを含めることができます。

::

   enable: false
   secure: false
   cert_file: "/etc/tpa/harp_proxy/harp_proxy.crt"
   key_file: "/etc/tpa/harp_proxy/harp_proxy.key"
   host: <inventory_hostname>
   port: 8080
   probes:
     timeout: 10s
   endpoint: "<valid dsn>"

``secure: true`` を使用し、独自の証明書とキーを使用する場合は、
``cert_file`` および\ ``key_file`` キーの両方が必要です。

``deploy``
を実行する前に、証明書とキーの両方がターゲットノード上の指定された場所で利用可能であることを確認する必要があります。

クラスター固有のCA証明書を使用してTPAで証明書とキーを生成する場合は、
``cert_file`` と ``key_file`` の両方を空のままにします。 TPA
CA証明書は「よく知られた」ものではありません。エンドポイントをプローブする各マシンのトラストストアにこの証明書を追加する必要があります。
CA証明書は、TPAノードのクラスターディレクトリにあります。\ ``<cluster_dir>/ssl/CA.crt``
after ``deploy`` 。

利用可能なapiエンドポイントの詳細については、harpのドキュメントを参照してください。
