第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 ファイルを参照してください。