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