Configuring haproxy

TPAは、role にhaproxy が含まれるインスタンスにhaproxyをインストールして構成します。

デフォルトでは、haproxyは127.0.0.1:5432 で同じインスタンスで実行されている Configuring pgbouncer によって転送された要求をリッスンします。要求を転送するhaproxy_backend_servers のリストを指定する必要があります。

TPAは、デフォルトでhaproxyの利用可能な最新バージョンをインストールします。 haproxy_package_version: 1.9.15* を設定することで、代わりに特定のバージョンをインストールできます(例)。

注: tpaexec-configure のpackage_versionでワイルドカードを使用する場合の制限を参照してください。

Haproxyパッケージは、アーキテクチャの種類に応じて選択されます。 EDB managed haproxyパッケージを使用できますが、サブスクリプションが必要です。必要に応じて、 PGDG extrasリポジトリのパッケージをインストールできます。

haproxy インスタンスで次の変数を設定できます。

Variable

Default value

Description

haproxy_bind_address

127.0.0.1

haproxyがバインドするアドレス

haproxy_port

5432 (5444 for EPAS)

TCPポートhaproxyはリッスンする必要があります

haproxy_read_only_port

5433 (5445 for EPAS)

読み取り専用ロードバランサーのTCPポート

haproxy_backend_servers

None

Postgresインスタンス名のリスト

haproxy_maxconn

`max_connections`×0.9

バックエンドサーバーごとに許可される接続の最大数。デフォルトはバックエンドの`max_connections`設定から導出されます

haproxy_peer_enabled

True*

既知のhaproxyホストを`peer`リストとして追加します。 <br/>*`False` `failover_manager`がハープまたはパトニーの場合。

読み取り専用ロードバランサー

Haproxyは、データベースへの読み取り専用アクセスのために追加のポートでリッスンするように構成できます。現時点では、これはPatroniフェールオーバーマネージャーでのみサポートされています。バックエンドヘルスチェックは、どのpostgresインスタンスが現在レプリカとして機能しているかを判断し、ラウンドロビン負荷分散アルゴリズムを使用してトラフィックを送信します。

読み取り専用ロードバランサーはデフォルトで無効になっていますが、 cluster_vars変数haproxy_read_only_load_balancer_enabled を使用してオンにできます。

サーバーオプション

TPAは、default-server 行とバックエンドサーバーごとに1行を持つバックエンドで/etc/haproxy/haproxy.cfg を生成します。最初のサーバーを除くすべてが「バックアップ」サーバーとしてマークされます。

haproxy_default_server_extra_options をhaproxyインスタンスのオプションのリストに設定して、オプションをdefault-server 行に追加します。 haproxy_server_options をバックエンドサーバー上のオプションのリストに設定して、オプション(デフォルトをオーバーライドします)を各バックエンドの個々のサーバー行に追加します。

例

instances:

- Name: one
  vars:
    haproxy_server_options:
    - maxconn 33

- Name: two
…

- Name: proxy
  role:
  - haproxy
  vars:
    haproxy_backend_servers:
    - one
    - two
    haproxy_default_server_extra_options:
    - on-error mark-down
    - on-marked-down shutdown-sessions