第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) サービスの設定を示しています。
この出力例は、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 ファイルを参照してください。