第6章 HAProxy を使用したトラフィック負荷の分散
HAProxy サービスは、トラフィックの負荷を高可用性クラスター内のコントローラーノードに分散する機能に加えて、ロギングおよびサンプル設定を提供します。
haproxy
パッケージに含まれる haproxy
デーモンは、同じ名前の systemd
サービスに対応します。Pacemaker は、HAProxy サービスを haproxy-bundle
と呼ばれる高可用性サービスとして管理します。
HAProxy についての詳細は、HAProxy 1.8 のドキュメント を参照してください。
HAProxy が正しく設定されていることを確認する方法は、KCS のアーティクル「haproxy.cfg がOpenStack のサービスをロードバランシングできるよう正しく設定されているかどうか、確認する方法はありますか?」を参照してください。
6.1. HAProxy の仕組み
director は、ほとんどの Red Hat OpenStack Platform サービスを HAProxy サービスを使用するように設定することができます。Director は、これらのサービスを /var/lib/config-data/haproxy/etc/haproxy/haproxy.cfg
ファイルで設定します。このファイルは、HAProxy が各オーバークラウドノードの専用のコンテナーで実行されるように指示します。
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 アドレスおよびポート -
8777
: 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
ファイルを参照してください。