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
  :widths: 15,10,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`,リードマスターの秒単位の時間リースは、更新されない場合は持続します。
  `harp_lease_refresh_interval`,`2000`,ミリ秒単位の時間リードマスターリースの更新。
  `harp_dcs_reconnect_interval`,`1000`,ミリ秒単位で測定される間隔、切断されたノードがDCSへの再接続を試行する間隔。
  `harp_dcs_priority`,`500`,2つのノードが等しい量の遅延とリードマスターリースを取得するその他の修飾基準がある場合、これは追加のランキング値として機能し、1つのノードを別のノードより優先します。
  `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`,このノードとそのCAMOパートナー間で最後に受信したLSNと適用された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-プロキシによって受け入れられるクライアントの最大数 `max_client_conn`
  `harp_ssl_password_command`,None,難読化されたsslパスワードをstdinで受信し、処理されたsslパスワードをstdout経由で提供するカスタムコマンド。
  `harp_db_request_timeout`,`10s`,dcs -> request_timeoutに似ていますが、データベース自分自身への接続用です。
  `harp_local_etcd_only`,None,すべてのetcdノードではなくローカルetcdノードのみを含むようにharp managerエンドポイントリストを制限する

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

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
  :widths: 15,10,20
  :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構成で設定します。

harp manager用の別のユーザーの設定
----------------------------------

harp managerで別のユーザーを使用する場合は、 ``cluster_vars``
の下で\ ``harp_manager_user: username``
を設定することにより、それを指定できます。
TPAexecはその設定を使用して、新しいユーザーを作成し、\ ``bdr_superuser``
ロールを付与します。

カスタム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
  :widths: 15,10,20
  :align: left
  :class: longtable

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

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

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

.. csv-table::
  :header: Variable,Default value,Description
  :widths: 15,10,20
  :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セクションを構成します。

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

.. code:: yaml

   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>"

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

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

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

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