OpenStackにF5アプリケーションデリバリーサービスを追加する方法
はじめに
Infrastructure as a Service(IaaS)を提供する主要なクラウドプラットフォームとして急速に普及しているOpenStackは、現在、プライベートクラウド、パブリッククラウド、マネージドプライベートクラウドを支えています。OpenStackクラウドでミッションクリティカルな本番アプリケーションをホストするケースが増えるにつれ、レイヤー4~7の高度なアプリケーションデリバリサービスが不可欠になっています。これらのサービスは、セキュリティ、スケーリング、最適化を強化し、ミッションクリティカルなアプリケーションのセキュリティ、速度、可用性の維持に貢献します。F5は、OpenStackを基盤とする環境を含め、データセンター、パブリッククラウド、プライベートクラウド全体に高度なアプリケーションデリバリサービスを提供する大手サプライヤーです。F5のアプリケーションデリバリサービスはOpenStackクラウドに組み込んで設計でき、利用可能な選択肢を事前に検討することで、OpenStackのアーキテクチャと導入を効率的に計画できます。
OpenStackとは
OpenStackは、クラウドコンピューティングの提供に使用されるオープンソースのソフトウェアプラットフォームです。NASAとRackSpace Hostingの共同プロジェクトとして始まったOpenStackは、現在、ソフトウェアとOpenStackコミュニティの普及促進を使命とするOpenStack Foundationによって管理されています。
現在では、複数の企業が独自のOpenStackディストリビューションを開発するか、サポート、コンサルティング、事前構成済みアプライアンスなどの追加サービスを提供しています。
OpenStackは、クラウドコンピューティング環境の構築に必要な各種サービスを提供する複数のコンポーネントで構成されています。これらのコンポーネントについては、別途十分なドキュメントが用意されています。ただし、F5 OpenStackのデプロイに直接関係するモジュールも複数あります。

OpenStackの基盤となる要素の1つがRESTful APIです。これにより、インフラストラクチャコンポーネントの構成と自動化が可能になります。マルチテナント型セルフサービスクラウドの構築や、DevOpsの実践を支えるインフラストラクチャの構築など、OpenStackの多くのユースケースでは、API駆動型のオーケストレーションが不可欠です。導入期間を数週間から数分に短縮したり、1日に数百のサービスを導入したりできることが、クラウドプラットフォームへの移行を後押しする主な要因となる場合が少なくありません。これを効果的に実現するには、インフラストラクチャのすべてのコンポーネントを自動化フレームワークに組み込む必要があります。多くのアプリケーションでは、本番環境で実際に運用できる状態にするために、アプリケーションセキュリティやアクセス制御などの高度なアプリケーションデリバリサービスが必要になります。そのため、アプリケーションデリバリサービスとOpenStackのオーケストレーションおよびプロビジョニングツールとの統合が極めて重要です。
プロジェクト、テナント、ネットワーク
マルチテナンシーは、OpenStackにおける重要な概念です。OpenStackでは、ユーザーのグループをプロジェクトまたはテナントと呼びます(この2つの用語は同じ意味で使用されます)。プロジェクトには、コンピューティング、ストレージ、イメージなどのリソースに対するクォータを割り当てることができます。マルチテナンシーのアーキテクチャを設計する際、特に重要な判断事項の1つは、テナント向けネットワークの設計方法です。F5® BIG-IP®プラットフォームでは、OpenStackのマルチテナンシーとの相互運用を可能にするため、さまざまなマルチテナンシーおよびネットワーク分離のオプションを提供しています。
プロバイダーネットワーク
プロバイダーネットワークでは、通常、フラット(タグなし)ネットワーク、またはより一般的にはVLAN(802.1Qタグ付き)ネットワークを使用します。これらは、従来のデータセンターネットワークにほぼ対応しています。OpenStackネットワークは管理者が定義および作成し、テナント間で共有されます。
場合によっては、テナントのコンピュートインスタンスがプロバイダーネットワークに直接接続するインターフェイスを持つことがあります。テナントは独自のネットワークを定義せず、プロバイダーの管理者が定義したIPアドレス範囲を使用して、構成済みのプロバイダーネットワークに接続するだけです。また、テナントがプロバイダーネットワーク内に仮想ネットワーク構成を作成する場合もあります。
テナントネットワーク
管理者は、テナントが固有のネットワークアーキテクチャを作成できるように設定できます。通常、このアーキテクチャは、コンピュートノード上のOpen vSwitchインスタンスを使用するOpenStack Neutronによって制御されますが、他のソフトウェア定義ネットワーキング(SDN)ソリューションも使用できます。VLAN、またはGREやVXLANテクノロジーを使用した透過的なイーサネットトンネルにより、テナントのコンピュートインスタンス間で通信できるとともに、他のテナントから分離できます。2016年初頭の時点では、GREトンネリングが最も一般的な導入方法です。テナントは独自のネットワークとIPアドレス範囲を作成でき、これらはテナント間で重複する場合があります。各テナントには、ネットワーク外との通信を可能にするOpenStackルーターを配置できます。これは、1つ以上のフローティングIPアドレスをテナントに割り当て、テナントルーターがそのアドレスを設定済みのテナントプライベートIPアドレスに変換することで実現します。(OpenStack NeutronのフローティングIPアドレスとBIG-IPのフローティングIPアドレスは異なるものです。BIG-IPプラットフォームによるテナント分離の管理方法については、後述します。)
F5アプリケーションデリバリサービス
F5製品は、拡張性、可用性、多層型セキュリティを提供するよう設計された、幅広い高度なアプリケーションデリバリサービスを提供します。主な例として、以下が挙げられます(これらに限定されません)。

BIG-IPプラットフォーム
The BIG-IPプラットフォームは、物理、仮想、クラウドの各エディションで提供されています。BIG-IPソフトウェアモジュールを通じてアプリケーションサービスを提供します。アプリケーションのニーズに応じて1つ以上のソフトウェアモジュールを実行でき、スタンドアロンユニットまたは高可用性クラスターとして導入できます。

BIG-IPプラットフォームは、極めて高性能なステートフル、双方向、ゼロコピーのプロキシです。この基本的なアーキテクチャ原則を理解することで、BIG-IPプラットフォームがサービスを提供する仕組みを把握し、アーキテクチャ上の選択肢を明確にできます。

クライアントはBIG-IPデバイスまたはインスタンスに接続し、そこからバックエンドサーバーに接続します(DNSサービスなどの場合には、アプリケーショントラフィックを処理し、クライアントに直接応答することもあります)。これにより、クライアントとサーバーの間でTCPセッションが完全に再生成され、TCPの「エアギャップ」が形成されます。この論理的なギャップ内で、BIG-IPプラットフォームがアプリケーションデリバリサービスを提供します。アプリケーショントラフィックがプラットフォームを通過する際に、検査、変更、制御が可能なため、BIG-IPプラットフォームでは、受信と送信の両方のアプリケーショントラフィックを完全に制御できます。
BIG-IPプラットフォームは、ネットワークファイアウォールとWebアプリケーションファイアウォールの両方について、ICSA Labs認定も取得しています。この認定では、トラフィックの分離とプラットフォームのセキュリティが厳格にテストされるため、プラットフォームのセキュリティに対する信頼性がさらに高まります。
F5とOpenStackの統合
OpenStackとF5のアプリケーションデリバリサービスおよびプラットフォームを組み合わせることで、OpenStack上でホストされるアプリケーションに本番環境レベルのサービスを提供できます。OpenStack内では、F5のアプリケーションデリバリサービスに、Neutron Load Balancing as a Service(LBaaS)version 2サービスとHeatオーケストレーションの2つの方法でアクセスできます。(F5はNeutronとLBaaS version 1の統合もサポートしていますが、OpenStackコミュニティはOpenStackのLibertyリリース以降、version 1 APIを非推奨としています)。
LBaaS
Neutron LBaaSは、コンピュートインスタンス(ひいてはアプリケーションインスタンス)向けの基本的な負荷分散サービスを提供します。これらのサービスは、幅広い負荷分散プラットフォームに共通する中核的な機能の一部に限定されています。
LBaaSサービス提供モデルでは、サービスを提供するリソースがサービス自体から抽象化されます。サービスを提供するリソースは、OpenStackテナントリソース内ではなく、OpenStackインフラストラクチャの一部として存在します。このモデルは「under the cloud」と呼ばれることもあります。

OpenStack LBaaSでは、複数の論理オブジェクトを使用してロードバランシング構成を作成します。

オブジェクトモデルを図3に示します。

すべてのOpenStack操作と同様に、LBaaSはRESTful APIを介して管理されます。このAPIにより、テナントはREST呼び出しを使用してLBaaSオブジェクトを作成、更新、削除できます。テナントによるAPI呼び出しからBIG-IPインスタンスで構成変更が行われるまでには、複数の処理ステップがあります。

LBaaSオブジェクトと、それらをBIG-IPインスタンス上の構成として作成または更新するAPI呼び出しとのマッピングは、F5 OpenStack LBaaS driverが処理します。LBaaS driverにより、BIG-IPインスタンスはOpenStackを基盤とするクラウド内で負荷分散サービスのプロバイダーとして機能できます。
F5 LBaaSドライバーは、実際には次の2つの独立したコンポーネントで構成されています。
- Neutron APIサービスを実行するサーバーにインストールされるF5 LBaaSプラグイン
- エージェントプロセスを実行するホストにインストールされるF5 LBaaSエージェントプロセス(ドライバーを含む)。デバイスサービスグループ(クラスター内のBIG-IPデバイスの集合)ごとに、個別のエージェントプロセスが必要です。
LBaaSドライバーは、テナントによるLBaaS API呼び出しに応じてタスクを受信し、BIG-IPデバイスまたはVirtual Edition上の構成オブジェクトを作成または更新するためのF5 iControl® API呼び出しに変換します。テナントが分離されたテナントネットワークと、ネットワークオーバーレイトンネルまたはVLANを使用している場合、LBaaSドライバーにより、単一のBIG-IPインスタンスまたは高可用性(HA)構成で複数のテナントにサービスを提供できます。F5 LBaaSプラグインは、BIG-IPインスタンスとNovaに対して必要なAPI呼び出しを作成し、テナントトラフィックが共有BIG-IPインスタンス上のテナントごとに分離されたリスナーオブジェクト(BIG-IPではVIP)にルーティングされるようにします。
テナントの分離
マルチテナント環境では、テナント間の分離を確保することがNovaの重要な役割の1つです。BIG-IP LBaaSコンポーネントは、BIG-IPの複数のマルチテナンシー機能を使用して、テナントごとのトラフィックを分離します。

これらのマルチテナンシー機能がどのように、またどのような場合に使用されるかについて詳しくは、F5 OpenStack LBaaS Driver and Agent Readmeを参照してください。
LBaaSは、OpenStack内にロードバランシングサービスを導入するためのシンプルなAPI駆動型システムであり、多数のクライアントに基本的なロードバランシング機能を提供します。ただし、このAPIで提供されるのは、包括的なApplication Delivery Controller(ADC)が備える機能の一部に限られます。次の表では、プロトコルのサポート、追加サービス、ヘルスモニターなど、アプリケーションデリバリに関する主な特性について、LBaaSとBIG-IPのネイティブサービスを比較します。

本格的なアプリケーションレイヤープロキシの高度な機能が必要な場合、OpenStack Heatオーケストレーションサービスと関連テンプレートを使用してF5アプリケーションデリバリサービスを導入することで、シンプルなサービスの自動作成と、より複雑なサービス構成を組み合わせることができます。
Heatオーケストレーションサービスとテンプレート
OpenStack Heatは、テンプレートに基づいて実行中のアプリケーションを生成するオーケストレーションサービスです。Heatテンプレートでは、1つ以上のテキストファイルにインフラストラクチャを記述します。Heatサービスは、必要なコンポーネントを作成するために適切なAPI呼び出しを実行します。カスタムプラグインを使用することで、Heatサービスをコアモジュールの範囲を超えて拡張できます。
The F5 Heatプラグインを使用すると、Heatテンプレートから、Heatサービスを実行するサーバーがネットワーク経由で到達可能な任意のBIG-IPデバイスまたはVirtual Edition上に、高度なアプリケーションデリバリー構成を作成できます。また、テナントインスタンスへの接続とルーティングはHeatプラグインでは構成されないため、BIG-IPインスタンス側でこれらを確保する必要があります。
Heatテンプレートでは、人が読みやすく扱いやすいように設計されたシンプルなマークアップ言語であるYAMLを使用します。Heatテンプレートは宣言型であるため、必要なインフラストラクチャコンポーネントを定義するだけで、基盤となるプロバイダーがその定義に基づいて構成を作成します。
Heatテンプレートを使用すると、より高度なアプリケーションデリバリシナリオを作成できます。特に、F5 iApps®テンプレートシステムと組み合わせると効果的です。iAppsテンプレートでは、必要なテンプレートとインスタンス固有の値を渡すだけで、アプリケーションデリバリ構成を繰り返し作成できます。Webアプリケーションファイアウォールサービス、アプリケーションアクセラレーション、高度な負荷分散アルゴリズムなどの高度な機能を使用する複雑なデリバリ構成も、シンプルなAPI呼び出しで実装できます。
Heatテンプレートは、個々のテナントネットワーク環境内(「クラウド上」)のBIG-IP Virtual Editionインスタンスだけでなく、基盤となる物理ネットワークに導入されたBIG-IPアプライアンスでも使用できます。BIG-IPデバイスはテナント内の他のコンピュートノードと同様に扱われるため、NeutronネットワーキングAPI呼び出しに関与する必要はありません。


F5 Heatプラグインは、F5 Githubリポジトリから入手できます。このリポジトリには、Heatエンジンを実行するサーバーにインストールするHeatプラグインと、サンプルのHeatテンプレートが含まれています。
柔軟なプラットフォームオプション
F5のアプリケーションデリバリサービスは複数のプラットフォームで利用できます。いずれも同じコアオペレーティングシステムとF5マイクロカーネル上で動作するため、同一のアプリケーションデリバリ機能を提供します。
F5アプライアンスとF5 VIPRION®シャーシ
F5ハードウェアプラットフォームは、多数のクライアントやテナントへの対応、または高スループットが求められるユースケースに、高いパフォーマンスと大規模な拡張性を提供します。1組のHAペアで、数百のテナントと数百万のクライアントにサービスを提供できます。F5ハードウェアデバイスは、SSL処理とTCP処理の両方に専用ハードウェアを使用することで、接続レートに関するサービスレベル契約(SLA)に対応し、基盤となるコンピューティング環境の処理を大幅にオフロードします。ネットワークセキュリティサービスと分散型サービス拒否(DDoS)攻撃の緩和が必要な場合、F5ハードウェアプラットフォームは優れたパフォーマンスと高水準の保護を提供します。重複する複数のアドレス空間とネットワークオーバーレイプロトコルをサポートしているため、ほとんどのマルチテナント環境でハードウェアデバイスを使用できます。
F5 BIG-IP Virtual Edition
F5 BIG-IP virtual editionsは、KVMを含むほとんどのハイパーバイザーに対応しており、Amazon AWSやMicrosoft Azureなど、パブリッククラウドのInfrastructure as a Service(IaaS)プロバイダーでも利用できます。BIG-IP virtual editions(VE)は、ラボ向けエディションから、25 Mb~10 Gbのスループットに対応し、利用拡大に応じてアップグレードできる本番環境向けバージョンまで、さまざまな処理能力で提供されています。ボリュームライセンスと柔軟なライセンスプールにより、テスト環境や開発環境にあるBIG-IPインスタンスのライフサイクルを動的に管理できます。パブリッククラウド環境では、従量課金も利用できます。BIG-IP virtual editionsは、ハードウェアプラットフォームと同じアプリケーションデリバリサービスを提供しますが、アプライアンスに搭載されている専用ハードウェアや同等の拡張性は備えていません。
BIG-IP Virtual Editionは、テナントネットワーク内に完全に収容できます。OpenStackからは単なる別のコンピュートインスタンスとして認識され、Heatテンプレートで構成することも、LBaaSのプロバイダーとして使用することもできます。

1詳細については、『F5 and OpenStack Integration Guide』を参照してください。
F5 LBaaSプラグインは複数のF5エージェントおよびドライバーインスタンスに対応しているため、同じLBaaS構成内でハードウェアデバイスとBIG-IP Virtual Editionを混在させることができます。
あらゆるアーキテクチャ上の意思決定と同様に、適切な選択肢は、ソリューション固有の要件に最も適したものです。BIG-IPのハードウェアまたは仮想エディションを使用して、高性能でスケーラブルなソリューションを構築できます。規模とサービスに関する全体的な要件を踏まえ、インフラストラクチャアーキテクトは、ハードウェア、ソフトウェア、またはその組み合わせを選択する必要があります。サービスのプロビジョニングのみを必要とする利用者やテナントにとっては、デリバリープラットフォーム自体よりも、LBaaSとHeatのどちらを選択するかの方が重要です。
高可用性
ミッションクリティカルなネットワークおよびアプリケーションスタックでは、高可用性が不可欠です。BIG-IPプラットフォームは、期待どおり堅牢なHAアーキテクチャを備えています。BIG-IPデバイスおよびVirtual Editionは、スタンドアロンデバイス(テスト環境や開発環境など)、高可用性ペア、または最大4台のデバイスで構成されるN-wayアクティブデバイスグループとして導入できます。OpenStackプラットフォームでは、これらすべての導入形態がサポートされています。
スケーラビリティ
LBaaSまたはテナントのBIG-IPリソースに容量を追加できるため、管理者やテナントは、アプリケーションのスループットやテナント数の増加に対応できます。サービスを中断せずにスケールアップまたはスケールアウトできることは、俊敏で拡張性の高いクラウドの構築に不可欠です。
BIG-IPプラットフォームは、スケールアップとスケールアウトの両方に対応できます。アプライアンスと仮想エディションはライセンスのアップグレードによってスケールアップでき、VIPRIONシャーシはハードウェアブレードの追加によってスケールアップできます。BIG-IP LBaaSプラグインは複数のエージェントとドライバー(それぞれが単一のBIG-IPインスタンスまたはクラスターを管理)を管理し、水平スケーリングを可能にします。複数のエージェントを使用する場合、F5 LBaaSプラグインはデフォルトで、特定のテナントのすべてのLBaaSロードバランサーオブジェクトを1台のBIG-IPデバイス(またはクラスター)に割り当てた状態に維持します。
テナント内でBIP-IP VEインスタンスを使用する場合も、ライセンスによってインスタンスをスケールアップするか、新たなワークロードに対応するためにインスタンスを追加できます。
まとめ
OpenStack環境でミッションクリティカルな本番アプリケーションをホストするケースが増えるにつれ、OpenStack内で堅牢かつ高品質なアプリケーションデリバリサービスの必要性が高まっています。F5のアプリケーションデリバリサービスは、こうした重要なアプリケーションに必要なキャパシティ、セキュリティ、高度な機能に加え、OpenStackを基盤とするクラウドならではの俊敏性と低い運用負荷を提供します。
