HARP Proxy¶
HARPプロキシは、クライアントアプリケーションとPostgres間の抽象化レイヤーとして機能するデーモンです。コンセンサスレイヤーとインターフェイスして、現在のリードマスターノードのIDを取得し、トラフィックをその場所に転送します。計画的なスイッチオーバーまたは計画外のフェイルオーバー中に、DCSの指示に従って新しいリードマスターノードにリダイレクトします。
HARPプロキシはpgbouncer またはbuiltin
から選択できます。プロキシタイプを指定しない場合、デフォルトはbuiltin
です。 pgbouncer を使用する場合、
HARPプロキシはDCSとPgBouncer間のインターフェイスレイヤーです。そのため、PgBouncerは前提条件であり、
HARPプロキシがそのアクティビティを完全に管理するにはインストールする必要があります。
組み込みプロキシには、追加のソフトウェアは必要ありません。ビルトインを使用する場合、 HARPプロキシはレベル4パススループロキシとして機能します。
ビルトインプロキシ:仕組み¶
起動時に、 HARPプロキシは、プロキシインスタンスごとにブートストラップファイルで指定されたリスニングアドレスとリスニングポートで着信接続を監視します。すべてのアプリケーションクライアントトラフィックは、組み込みプロキシを介して、このプロキシが動作している場所の現在のリードマスターノードに渡されます。
リードマスターリースが設定されていない場合、
HARPプロキシは、新しいリードマスターが確立されるまですべての接続トラフィックを切断します。これは、harpctl promote
を使用して新しいリードマスターへの計画的な移行を呼び出す場合にも適用されます。切断は即時です。
構成¶
プロキシタイプをbuiltin
に設定して、ビルトインプロキシを選択します。組み込みプロキシに適用される他の唯一のオプションは、許可されるクライアント接続の最大数を指定します。
max_client_conn
がシステムが処理できるものよりも高い場合、プロキシがオンになっているシステムの能力内の設定に下げられます。
PgBouncer:仕組み¶
注釈
Harp Proxyが提供するものよりも多くの構成可能性が必要な場合は、ビルトインプロキシを使用してpgbouncerがそれをポイントするように設定することをお勧めします。
HARPプロキシは、起動時にPgBouncerがまだ実行されていない場合に起動し、クライアント接続を一時停止したままにします。その後、DCSに連絡してリードマスターのIDを判断し、これをデータベース接続のターゲットとして使用するようにPgBouncerを構成し、接続アクティビティを再開します。すべてのアプリケーションクライアントトラフィックは、PgBouncerを介して、このプロキシが動作している場所の現在のリードマスターノードに渡されます。
PgBouncerの実行中、 HARPプロキシはDCSのmonitor_interval
構成設定に基づいてステータスを確認し、監視のためにDCSに保存します。この構成により、
harpctl
を使用した問い合わせで、構成されているすべてのプロキシまたは1つのプロキシのステータスを取得できます。
リードマスターリースが設定されていない場合、
HARPプロキシは新しいリードマスターが確立されるまですべての接続トラフィックを一時停止します。これは、harpctl promote
を使用して新しいリードマスターへの計画的な移行を呼び出す場合にも適用されます。これにはPgBouncer
PAUSE
コマンドを使用するため、既存のセッションは保留中のトランザクションが停止する前に完了することができます。
PgBouncer構成ファイル¶
HARPプロキシが接続管理とリダイレクトにPgBouncerを使用する場合、
pgbouncer.ini ファイルが存在する必要があります。
HARPマネージャーは、 Proxy directives
で定義されているさまざまなランタイム指示子に基づいてこのファイルをビルドします。
このファイルは、 HARPプロキシで使用されるconfig.yml
と同じフォルダーにあります。
HARPプロキシによって起動されるPgBouncerプロセスはこの構成ファイルを使用し、デバッグまたは情報の目的で使用できます。この自動生成されたpgbouncer.ini
ファイルへの変更は、
HARPプロキシが再起動するたびに失われるため、代わりに
harpctl set proxy を使用してください。 harpctl set proxy
を呼び出しても、プロキシが再起動するまでpgbouncer.ini
ファイルは更新されません。
HARPプロキシノード管理の無効化と再有効化¶
PgBouncerのHARPプロキシ制御を一時的に一時停止できます。これにより、デーモンの実行は継続されますが、クラスターの既存の動作に影響を与える可能性のある操作は実行されません。管理を再度有効にすると、操作が再開されます。
特定のプロキシの管理を一時的に無効にする例は次のとおりです。
harpctl unmanage proxy proxy1
詳細については、 harpctl command-line tool を参照してください。
プロキシノード管理はデフォルトで有効になっています。
パススルーユーザー認証¶
pgbouncerでは、 auth_user およびauth_query
ランタイム指示子を使用するようにHARPプロキシを構成することを強くお勧めします。これらが設定されていない場合、PgBouncer
userlist.txt
ファイルには、PgBouncerがPostgresに代わって認証する必要があるすべてのユーザーのユーザー名とパスワードのハッシュの組み合わせを含める必要があります。
pgbouncer
ユーザーは使用しないでください。これは、基になるPgBouncerサービスを操作するための管理レベルのユーザーとしてHARPプロキシによって使用されます。
構成¶
HARPプロキシは、 dcs 、cluster 、およびproxy
構成スタンザを想定しています。以下は機能的な例です。
cluster:
name: mycluster
dcs:
driver: etcd
endpoints:
- host1:2379
- host2:2379
- host3:2379
proxy:
name: proxy1
``` 各プロキシはDCSに接続して、接続をリッスンするホストとポートを取得します。
### 使用法
これは、 HARPプロキシの基本的な使用法です。
```bash
Usage of ./harp-proxy:
-f string
Optional path to config file (shorthand)
--config string
Optional path to config file
harp-proxy
をフォークされたデーモンとして起動するための引数はありません。このソフトウェアは、systemdまたはコンテナ内でトップレベルプロセスとして起動されるように設計されています。これは、journaldまたは接続されたコンテナターミナルを介してキャプチャおよびアクセスするために、出力がSTDOUTおよびSTDERRに送られることも意味します。