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


Load Balancing-as-a-Service (LBaaS) は、受け取った要求を OpenStack Networking が指定のインスタンス間で均等に分散できるようにします。このガイドでは、Open vSwitch (OVS) プラグインで LBaas を使用するように OpenStack Networking を設定する方法を、ステップごとに説明します。

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

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

表 1: LBaaS の機能

表16.1 LBaaS の機能
機能説明

監視

LBaaS は、ping、TCP、HTTP、HTTPS GET メソッドを使用した可用性モニタリング機能を提供します。監視機能は、要求の処理にプールメンバーが利用可能かどうかを判断するために実装されます。

管理

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

接続制限

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

セッションの永続性

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

注記

LBaaS は現在 IPv4 アドレス設定でのみサポートされます。

注記

LBaaSv1 は Red Hat OpenStack Platform 10 (Newton) で削除され、LBaaSv2 に置き換えられました。

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

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

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

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

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

以下の図には、HTTPS トラフィックからプールメンバーへのフローを示しています。

lbaas

16.1.1. LBaaS のサポートステータス

  • LBaaS v1 API は Red Hat OpenStack Platform 9 で非推奨となり、バージョン 10 で削除されました。
  • LBaaS v2 API は Red Hat OpenStack Platform 7 で導入されました。これがバージョン 10 で提供されている唯一の LBaaS API です。
  • LBaaS デプロイメントは現在 Red Hat OpenStack Platform director ではサポートされていません。

16.1.2. サービスの配置

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

注記

Red Hat OpenStack Platform 10 では、コンポーザブルロールのサポートが追加され、ネットワークサービスをカスタムロール別に分類することができます。ただし、本ガイドでは、内容をわかりやすくするために、デプロイメントにはデフォルトの Controller ロールを使用することを前提とします。

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

注記

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

16.2. LBaaS の設定

本手順では、OpenStack Networking (neutron) が Open vSwitch (OVS) プラグインで LBaas を使用するように設定します。

注記

neutron-server サービスを実行しているノードで、以下の手順を実施します。

コントローラーノード (API サーバー) で、以下の操作を行います。

  1. LBaaS を有効にします。

    # yum install openstack-neutron-lbaas -y
  2. neutron データベースに LBaaS テーブルを追加します。

    $ neutron-db-manage --subproject neutron-lbaas --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head
  3. /etc/neutron/neutron_lbaas.conf でサービスプロバイダーを変更します。[service providers] セクションで、以下のエントリーを除くすべてのエントリーをコメントアウト (#) します。

    service_provider=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
  4. /etc/neutron/neutron.conf で、LBaaS v2 プラグインが service_plugins に設定されていることを確認します。

    service_plugins=neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2

    以前に追加した他のプラグインも表示されます。

    注記

    lbaasv1 を設定している場合は、lbaasv2 の上記設定に置き換えます。

  5. /etc/neutron/lbaas_agent.ini で、[DEFAULT] セクションに以下の設定を追加します。

    ovs_use_veth = False
    interface_driver =neutron.agent.linux.interface.OVSInterfaceDriver
  6. /etc/neutron/services_lbaas.conf で、[haproxy] セクションに以下の設定を追加します。

    user_group = haproxy
    1. 他の デバイスドライバー のエントリーをすべてコメントアウトします。

      注記

      l3-agent が failed モードにある場合は、l3_agent のログファイルを確認してください。ログファイルで説明されているように、/etc/neutron/neutron.conf を編集し、[DEFAULT] の特定の値をコメントアウトし、oslo_messaging_rabbit で対応する値をコメント解除しなければならない場合があります。

  7. LBaaS サービスを設定し、それらのステータスを確認します。

    1. lbaasv1 サービスを停止し、lbaasv2 を起動します。

      # systemctl disable neutron-lbaas-agent.service
      # systemctl stop neutron-lbaas-agent.service
      # systemctl mask neutron-lbaas-agent.service
      # systemctl enable neutron-lbaasv2-agent.service
      # systemctl start neutron-lbaasv2-agent.service
    2. lbaasv2 のステータスを確認します。

      # systemctl status neutron-lbaasv2-agent.service
    3. neutron-server を再起動し、ステータスを確認します。

      # systemctl restart neutron-server.service
      # systemctl status neutron-server.service
    4. Loadbalancerv2 エージェントを確認します。

      $ neutron agent-list
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.