第5章 HAProxy の使用

HAProxy は、トラフィックの負荷を複数のコントローラーに分散することによって、OpenStack に高可用性機能を提供します。haproxy パッケージには、ロギング機能やサンプルの設定以外に、systemd サービスから起動される haproxy デーモンが含まれています。前述したように、Pacemaker は HAProxy サービス自体を、haproxy-bundle と呼ばれる高可用性サービスとして管理します 。

注記

HAProxy の設定を検証する方法については、「haproxy.cfg がOpenStack のサービスをロードバランシングできるよう正しく設定されているかどうか、確認する方法はありますか?」の KCS ソリューションを参照してください。

Red Hat OpenStack Platform では、director により複数の OpenStack サービスが haproxy サービスを有効活用できるように設定されます。HAProxy は各オーバークラウドノード上の専用のコンテナー内で実行されるため、director はそれらの OpenStack サービスを /var/lib/config-data/haproxy/etc/haproxy/haproxy.cfg ファイルで構成することによって設定します。

そのファイル内の各サービスで、以下のプロパティーを確認できます。

  • listen: 要求をリッスンするサービス名
  • bind: サービスがリッスンする IP アドレスおよび TCP ポート番号
  • server: サービスを提供する各サーバー名、サーバーの IP アドレス、リッスンするポート、その他の情報

director での Red Hat OpenStack Platform のインストール時に作成される haproxy.cfg ファイルにより、HAProxy が管理する 19 の異なるサービスが特定されます。 haproxy.cfg ファイルでの cinder listen サービスの設定方法の例を以下に示します。

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

上記の Cinder サービスの HAProxy 設定例では、Cinder サービスが提供されている IP アドレスとポートを特定できます (ポート 8777 は 172.16.0.10 と 192.168.1.150)。

172.16.0.10 アドレスは、オーバークラウド内で使用するための内部 API ネットワーク (VLAN201) 上の仮想 IP アドレスです。192.168.1.150 は、オーバークラウドの外部からの API ネットワークへのアクセスを提供する外部ネットワーク (VLAN100) 上の仮想 IP アドレスです。

HAProxy は、これらの 2 つのアドレスに対する要求を overcloud-controller-0 (172.16.0.13:8777)、overcloud-controller-1 (172.16.0.14:8777)、overcloud-controller-2 (172.16.0.15:8777) のいずれかに転送することができます。

これらのサーバーに設定されたオプションでは、ヘルスチェック (check) が有効になり、ヘルスチェックに 5 回失敗すると (fall 5)、サービスは停止されていると見なされます。ヘルスチェックの実行する間隔は、inter 2000 (2000 ミリ秒または 2 秒) に設定されます。また、ヘルスチェックに 2 回成功すると (rise 2)、サーバーは稼働していると見なされます。

コントローラーノードで 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

5.1. HAProxy Stats

director により、HA デプロイメントではすべて、HAProxy Stats もデフォルトで有効になります。この機能により、データ転送、接続、サーバーの状態などについての詳細情報を HAProxy Stats のページで確認することができます。

また、director は、HAProxy Stats ページにアクセスするための IP:Port アドレスも設定します。このアドレスを確認するには、HAProxy がインストールされている任意のノードで /var/lib/config-data/haproxy/etc/haproxy/haproxy.cfg ファイルを開くと、listen haproxy.stats セクションにこの情報が記載されています。以下に例を示します。

listen haproxy.stats
  bind 10.200.0.6:1993
  mode http
  stats enable
  stats uri /
  stats auth admin:<haproxy-stats-password>

この場合は、ブラウザーで 10.200.0.6:1993 にナビゲートして、stats auth の行から認証情報を入力すると、HAProxy Stats のページが表示されます。

5.2. 参考資料

HAProxy に関する詳しい情報は、「HAProxy の設定」 (『ロードバランサーの管理』)を参照してください。

haproxy.cfg ファイルで使用可能な設定に関する詳しい情報は、haproxy パッケージがインストールされている任意のシステム (例: コントローラーノードなど) の /usr/share/doc/haproxy-_VERSION/configuration.txt_ のドキュメントを参照してください。