第5章 HAProxy を使用したトラフィック負荷の分散
HAProxy サービスは、トラフィックの負荷を高可用性クラスター内のコントローラーノードに分散する機能に加えて、ロギングおよびサンプル設定を提供します。haproxy パッケージに含まれる haproxy デーモンは、同じ名前の systemd サービスに対応します。Pacemaker は、HAProxy サービスを haproxy-bundle と呼ばれる高可用性サービスとして管理します。
5.1. HAProxy の仕組み
director は、ほとんどの Red Hat OpenStack Platform サービスを HAProxy サービスを使用するように設定することができます。Director は、これらのサービスを /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg ファイルで設定します。このファイルは、HAProxy が各オーバークラウドノードの専用のコンテナーで実行されるように指示します。
HAProxy が管理するサービスの一覧を以下の表に示します。
表5.1 HAProxy が管理するサービス
| aodh | cinder | glance_api | gnocchi |
| haproxy.stats | heat_api | heat_cfn | horizon |
| keystone_admin | keystone_public | mysql | neutron |
| nova_metadata | nova_novncproxy | nova_osapi | nova_placement |
haproxy.cfg ファイル内の各サービスで、以下の属性が設定されます。
- listen: 要求をリッスンするサービスの名前
- bind: サービスがリッスンする IP アドレスおよび TCP ポート番号
- server: HAProxy を使用する各コントローラーノードサーバーの名前、IP アドレスおよびリッスンするポート、ならびにサーバーに関する追加情報
以下の例は、haproxy.cfg ファイル内の OpenStack Block Storage (cinder) サービスの設定を示しています。
listen cinder
bind 172.16.0.10:8776
bind 192.168.1.150:8776
mode http
http-request set-header X-Forwarded-Proto https if { ssl_fc }
http-request set-header X-Forwarded-Proto http if !{ ssl_fc }
option httpchk
server overcloud-controller-0 172.16.0.13:8777 check fall 5 inter 2000 rise 2
server overcloud-controller-1 172.16.0.14:8777 check fall 5 inter 2000 rise 2
server overcloud-controller-2 172.16.0.15:8777 check fall 5 inter 2000 rise 2この出力例は、OpenStack Block Storage (cinder) サービスに関する以下の情報を示しています。
-
172.16.0.10:8776: オーバークラウド内で使用する内部 API ネットワーク (VLAN201) 上の仮想 IP アドレスおよびポート -
192.168.1.150:8776: オーバークラウド外から API ネットワークへのアクセスを提供する外部ネットワーク (VLAN100) 上の仮想 IP アドレスおよびポート -
8776: OpenStack Block Storage (cinder) サービスがリッスンしているポート番号 -
server: コントローラーノード名および IP アドレス。HAProxy は、これらの IP アドレスに送信された要求をserverの出力に一覧表示されるコントローラーノードのいずれかに転送することができます。 -
httpchk: コントローラーノードサーバーでのヘルスチェックを有効にします。 -
fall 5: サービスがオフラインであると判断されるヘルスチェックの失敗回数 -
inter 2000: 連続する 2 回のヘルスチェックの間隔 (ミリ秒単位) -
rise 2: サービスが動作中であると判断されるヘルスチェックの成功回数
haproxy.cfg ファイルで使用できる設定の詳細は、haproxy パッケージがインストールされている任意のノードの /usr/share/doc/haproxy-[VERSION]/configuration.txt ファイルを参照してください。