Configuring haproxy#
TPAは、 role にhaproxy
が含まれるインスタンスにhaproxyをインストールおよび構成します。
デフォルトでは、 haproxyは127.0.0.1:5432
で、同じインスタンスで実行されている Repmgrリダイレクトpgbouncer によって転送された要求をリッスンします。要求を転送するhaproxy_backend_servers
のリストを指定する必要があります。
TPAは、デフォルトでhaproxyの最新バージョンをインストールします。
haproxy_package_version: 1.9.15*
たとえば、を設定することにより、特定のバージョンをインストールできます。
注 tpaexec-configure のpackage_versionでのワイルドカードの使用の制限を参照してください。
Haproxyパッケージは、アーキテクチャのタイプに応じて選択されます。 EDB管理対象haproxyパッケージを使用できますが、サブスクリプションが必要です。必要に応じて、 PGDGエクストラリポジトリからのパッケージをインストールできます。
haproxy インスタンスで次の変数を設定できます。
Variable |
Default value |
Description |
|---|---|---|
haproxy_bind_address |
127.0.0.1* |
`failover_manager`がパトロニの場合、haproxyが0.0.0.0をバインドするアドレス。 * ユーザーはこの値を、クラスターネットワーキングに適したより制限的なものに変更する必要があります** |
haproxy_port |
5432 (5444 for EPAS) |
TCPポートHAプロキシがリッスンする必要がある |
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* |
既知のハプロキシホストを`peer`リストとして追加します。 *`False` `failover_manager`がharpまたはpatroniの場合。 |
読み取り専用ロードバランサー#
データベースへの読み取り専用アクセスを追加ポートでリッスンするようにHaproxyを構成できます。現時点では、これはPatroniフェールオーバーマネージャーでのみサポートされています。バックエンドヘルスチェックは、どのpostgresインスタンスが現在レプリカとして機能し、ラウンドロビンロードバランシングアルゴリズムを使用してトラフィックを送信するかを判断します。
読み取り専用ロードバランサーはデフォルトで無効になっていますが、
cluster_vars変数 haproxy_read_only_load_balancer_enabled
を使用して有効にできます。
Patroni ヘルスチェック#
Patroniがフェールオーバーマネージャーとして使用される場合、 HAProxyはPatroni REST APIに対してヘルスチェックを実行します。 TPAは、Patroniのセキュリティ設定に基づいて、これらのチェックを自動的に構成します。
HTTP:
patroni_ssl_enabledがfalseの場合、標準のHTTPチェックoption httpchkがPatroni APIポートデフォルト8008に対して使用されます。HTTPS基本認証または認証なし
patroni_ssl_enabledがtrueで、patroni_authentication_modeがbasicの場合、 HAProxyはcheck-sslを使用し、クラスターのCA証明書を信頼してパトロニAPIサーバー証明書を検証するように構成されていますverify required ca-file <path>を使用します。HTTPS (mTLS)
patroni_authentication_modeがmtlsの場合、 HAProxyはcheck-sslを使用し、クラスターのCA証明書 および 認証用の一意のクライアント証明書/キーペアで構成されますverify required ca-file <path> crt <path>を使用します。 TPAは、 HAProxyのこれらのクライアント証明書を自動的に生成および展開します。
サーバーオプション#
TPAは、 default-server
行とバックエンドサーバーごとに1行があるバックエンドで/etc/haproxy/haproxy.cfg
を生成します。最初のサーバーを除くすべては「バックアップ」サーバーとしてマークされます。
haproxy_default_server_extra_options
をhaproxyインスタンスのオプションのリストに設定して、default-server
行にオプションを追加します。そして、 haproxy_server_options
をバックエンドサーバーのオプションのリストに設定して、各バックエンドの個々のサーバー行にオプションデフォルトをオーバーライドします。
TPAは、フェールオーバーマネージャー構成に基づいて、必要なcheck
およびcheck-ssl オプションを自動的に追加します。
ssl-dh-param-fileに使用されるRSAキーサイズは、 cluster_vars
セクションに変数ha_proxy_dhparams_key_size
を追加することにより変更できます。
例#
cluster_vars:
ha_proxy_dhparams_key_size: 4096
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