第14章 Load Balancing-as-a-Service (LBaaS) の設定

Load Balancing-as-a-Service (LBaaS) は、OpenStack Networking が指定のインスタンス間で受信要求を均等に分散できるようにします。このステップバイステップのガイドでは、OpenStack Networking が Open vSwitch (OVS) または Linux Bridge プラグインのいずれかで LBaas を使用するように設定します。

Red Hat OpenStack Platform 5 で導入された Load Balancing-as-a-Service (LBaaS) は、OpenStack Networking が指定のインスタンス間で受信要求を均等に分散できるようにします。これにより、インスタンス間でのワークロードが予測可能な方法で共有されるようになり、システムリソースのより効率的な使用が可能となります。受信要求は、以下の負荷分散メソッドの 1 つを使用して分散されます。

  • ラウンドロビン: 複数のインスタンス間で要求を均等にローテーションします。
  • 送信元 IP アドレス: 同じ送信元 IP アドレスからの要求は常に一定のインスタンスへ送信されます。
  • 最小コネクション: アクティブな接続が最も少ないインスタンスに要求が割り当てられます。

表 1: LBaaS の機能

表14.1 LBaaS の機能

機能説明

監視機能

LBaaS は、ping、TCP、HTTP、HTTPS の GET メソッドで可用性の監視を行います。監視機能は、プールメンバーが要求を処理できる状態かどうかを判断するために実装されています。

管理

LBaaS は、さまざまなツールセットを使用して管理されます。REST API は、プログラムベースの管理およびスクリプト作成に使用できます。ユーザーは、CLI (neutron) または OpenStack Dashboard のいずれかを使用して、ロードバランサーの管理タスクを行います。

接続制限

接続制限を使用して、受信トラフィックのシェーピングを行うことができます。この機能は、ワークロードを制御することも可能で、DoS (Denial of Service) 攻撃の緩和にも有効です。

セッションの永続化

LBaaS は、複数のインスタンスで構成されるプール内で同じインスタンスに受信要求がルーティングされるようにすることで、セッションの永続化をサポートします。LBaaS は、クッキーや送信元 IP アドレスに基づいたルーティングの決定をサポートします。

注記

LBaaS は現在 IPv4 アドレスのみサポートします。

14.1. OpenStack Networking および LBaaS トポロジー

OpenStack Networking (neutron) サービスは、大きく 2 つのカテゴリーに分類することができます。

1. Neutron API server: このサービスは、エンドユーザーとサービスが OpenStack Networking と対話できるように、主に API を提供する OpenStack Networking API サーバーを実行します。またこのサービスは、基盤のデータベースと対話して、テナントネットワーク、ルーター、ロードバランサーの詳細などを保存する役割も果たします。

2. Neutron エージェント: OpenStack Networking のさまざまな機能を提供するサービスです。

  • neutron-dhcp-agent: テナントプライベートネットワークの DHCP IP アドレスを管理します。
  • neutron-l3-agent: テナントプライベートネットワーク、外部ネットワークなどの間のレイヤー 3 ルーティングを容易化します。
  • neutron-lbaas-agent: テナントにより作成された LBaaS ルーターをプロビジョニングします。
14.1.1. サービスの配置

OpenStack Networking Service は、同じ物理サーバーまたは別の専用サーバーで実行することができます。

API サーバーを実行するサーバーは通常、コントローラーノード と呼ばれ、OpenStack Networking エージェントを実行するサーバーは Network node と呼ばれます。理想的な実稼動環境では、パフォーマンスやスケーラビリティーの理由により、コンポーネントを専用のノードに分類しますが、テストまたは PoC デプロイメントではすべてのコンポーネントを 1 つの同じノードで実行します。本章では、どちらのシナリオにも対応しますが、コントローラーノードの設定のセクションは API サーバーで、ネットワークノードのセクションは LBaaS エージェントを実行するサーバーで行う必要があります。

注記

コントローラーおよびネットワークロールの両方が同じ物理ノードに存在する場合には、この物理ノード (サーバー) で手順を実行する必要があります。

14.2. LBaaS の設定

以下の手順では、OpenStack Networking が Open vSwitch (OVS) または Linux Bridge のいずれかのプラグインとともに LBaaS を使用するように設定します。BigSwitch、Floodlight、NEC、NSX、Ryu などの OVS ベースのプラグイン向けに LBaaS を有効化する場合には Open vSwitch LBaaS ドライバーが必要です。

注記

デフォルトでは、Red Hat OpenStack Plaftform は LBaas 用の HAProxy ドライバーをサポートしています。その他のサポート対象のサービスプロバイダーのドライバーは https://access.redhat.com/certification で確認することができます。

neutron-server サービスを実行するノードで以下のステップを実行します。

コントローラーノード (API サーバー) の場合:

1. /etc/neutron/neutron_lbaas.conf ファイルの service_provider パラメーターを使用して、HAProxy プラグインを有効にします。

service_provider = LOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default

2. /etc/neutron/neutron.conf ファイルで service_plugin を設定して、LBaaS プラグインを有効化します。

service_plugins = lbaas

3. _neutron-server サービスを再起動して、新規設定を適用します。

# systemctl restart neutron-server.service
14.2.1. Dashboard への LBaaS 統合の有効化

通常、Horizon Dashboard は、neutron API サービスが実行される同じノード上で実行します。Dashboard ユーザーインターフェースのプロジェクトのセクションの負荷分散機能を有効にすることができます。Dashboard (Horizon) サービスを実行するノードで以下のステップを実行します。

1. /etc/openstack-dashboard/local_settings ファイルで、enable_lb オプションを True に変更します。

OPENSTACK_NEUTRON_NETWORK = {'enable_lb': True,

2. httpd サービスを再起動して新規設定を適用します。

# systemctl restart httpd.service

Dashboard のプロジェクトビューにある ネットワーク のドロップダウンリストに、ロードバランサー管理のオプションが表示されるようになりました。

14.3. (LBaaS Agent が実行されている) ネットワークノードの場合

1. /etc/neutron/lbaas_agent.ini ファイルで HAProxy ロードバランサーを有効化します。

device_driver = neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver

2. /etc/neutron/lbaas_agent.iniuser_group オプションを設定します。

# The user group
# user_group = nogroup
user_group = haproxy

3. /etc/neutron/lbaas_agent.ini ファイルで必要なドライバーを選択します。

  • Open vSwitch プラグインを使用する場合:
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
  • Linux Bridge プラグインを使用する場合:
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

4. neutron-lbaas-agent サービスを再起動して、新規設定を適用します。

# systemctl restart neutron-lbaas-agent.service