LBaaSプラグイン Pattabi Ayyasami
シニア・マネージャ – OpenStack
2014年11月
© 2013 Brocade Communications Systems, Inc. CONFIDENTIAL—For Internal Use Only 1
ネットワーク
(Quantum)
ネットワーク
(Neutron)
Openstackの開発の進展
© 2014 Brocade Communications Systems, Inc. 2
コンピュート
(Nova) ストレージ
認証セキュリティ(Keystone)
Webインタフェース(Horizon)
オブ
ジェクト
(Swift)
ハイパー バイザ
イメージ
(Glance)
ブロック
(Cinder) ファイル スイッチ LB ルータ FW
機能拡張
OpenStackにおけるBrocade vADXサポート
• OpenStack環境で、vADX (バージョン3.1.01以降)のインスタンスを作成・管理
• vADX VMの必要条件
• 2 CPU
• 2048 MB RAM
• 20 GBディスク・スペース
• Brocade Openstack LBaaSプラグインを使って、OpenStack環境からvADXを設定
© 2014 Brocade Communications Systems, Inc. 3
Brocade LBaaSプラグイン&デバイス・ドライバ
• 対応ADX/vADXバージョン
• ハードウェアADX 12.5以降
• vADX 3.1.01以降
• コンポーネント
• OpenStack Brocade LBaaSプラグイン・ドライバ
• Brocade ADXデバイス・ドライバ(別にインストール)
• Brocade LBaaSプラグイン・ドライバがプラグイン・ドライバAPIの抽象化フレームワークを
実装/拡張
• コード提出ターゲット – Kiloリリース。承認後は、Brocade LBaaSプラグイン・ドライバがOpenStack
ディストリビューションに加わる
• Brocade ADXデバイス・ドライバ
• ADX/vADXのXML/SOAP APIを使って、ADXデバイスに構成設定を適用
• ファイル・ベースのデバイス・インベントリから、サブネットで区別してADX/vADXデバイスを識別
• JSON形式のデバイス情報を採用
© 2014 Brocade Communications Systems, Inc. 4
LBaaSのアーキテクチャ
© 2014 Brocade Communications Systems, Inc. 5
各ベンダの プラグイン・ドライバ
ファイル・ベースの デバイス・インベントリを ブロケードで実装
OpenStack LBaaS v1データ・モデル
© 2014 Brocade Communications Systems, Inc. 6
ポートポリシーに相当
実サーバとそのポートに相当
仮想サーバとそのポートに相当
© 2014 Brocade Communications Systems, Inc. 7
OpenStack LBaaS v2データ・モデル(ターゲット - Kiloリリース)
OpenStack Brocade LBaaSプラグイン
• Neutronサーバのサービスとして稼働
• プラグイン・ドライバAPIの抽象化フレームワークを実装/拡張
• 下のAPIを実装し、リクエストをBrocadeデバイス・ドライバに転送
• create_vip / update_vip / delete_vip
• create_pool / update_pool / delete_pool
• stats
• create_member / update_member / delete_member
• create_pool_health_monitor / update_pool_health_monitor / delete_pool_health_monitor
© 2014 Brocade Communications Systems, Inc. 8
処理フロー
© 2014 Brocade Communications Systems, Inc. 9
REST API
• REST APIのURL - http://<ip-address>:9696/v2.0/lb/
• 例
• http://<IP Address>:9696/v2.0/lb/vips --> VIPのリスト表示
• http://<IP Address>:9696/v2.0/lb/vips/<vip_id> --> VIPの情報表示
• HTTPヘッダ
• X-Auth-Token:<Keystone token for the tenant> / { user name / password }
• Content-Type: application/json
• Accept: application/json
© 2014 Brocade Communications Systems, Inc. 10
参考資料
• https://wiki.openstack.org/wiki/Neutron/LBaaS
• https://wiki.openstack.org/wiki/Neutron/LBaaS/API_1.0 - テナントREST API
• https://wiki.openstack.org/wiki/Neutron/LBaaS/CLI - Neutron LBaaS CLI
• https://github.com/openstack/neutron - Neutronソース・コード
• http://docs.openstack.org/api/openstack-
network/2.0/content/lbaas_ext.html - v2データ・モデルREST API
© 2014 Brocade Communications Systems, Inc. 11
OpenStack Brocade LBaaSプラグイン (v2データ・モデル)
• フレームワークで定義されている、下のマネージャAPIを実装
• LoadBalancerManager
• ListenerManager
• PoolManager
• MemberManager
• HealthMonitorManager
• Brocade ADXデバイス・ドライバは、v1、v2双方のLBaaSデータ・モデルに対応
© 2014 Brocade Communications Systems, Inc. 12
OpenStackにおけるvADXのインストールと設定
• vADXイメージのGlanceアップロード
• qcowイメージを一時ディレクトリにダウンロードして、下のコマンドでGlanceにアップロード
glance --os-username=<user> --os-password=<password> --os-tenant-name=<tenant> --os-auth-
url=http://<controller>:5000/v2.0 image-create --name=<vadx-image-name> --disk-format=qcow2 --container-format=bare --file
SSR*.qcow2
• vADXのフレーバの作成
• 最小条件:2 CPU / 2 GB RAM / 20 GBルート・ディスク
• CLIかHorizonダッシュボードからフレーバを作成
• 管理ネットワークとデータ・ネットワークを作成
• イメージと、フレーバ、ネットワーク(管理/データ)を指定して、vADXのVMインスタンスを起動
• vADXの管理インタフェースはDHCPをサポート。データ・インタフェースは、vADXの起動後にCLIからIP
アドレスをマニュアル設定
© 2014 Brocade Communications Systems, Inc. 13
OpenStackのBrocade LBaaSプラグイン/デバイス・ドライバのインストールと設定
• Brocade ADXデバイス・ドライバのインストール
• brocade_neutron_lbaas-1.0.tar.gzをダウンロード:https://github.com/brocade-vadx/downloads/tree/master/juno/
• tarファイルを展開:tar –zxvf brocade_neutron_lbaas-1.0.tar.gz
• デバイス・ドライバのPythonモジュールをdist-packagesディレクトリにインストール:sudo python setup.py install
• Brocade LBaaSプラグインのインストール
• brocade_lbaas_plugin.tar.gzをダウンロード:https://github.com/brocade-vadx/downloads/tree/master/juno/
• tarファイルを<NEUTRON_HOME>/services/loadbalancer/driversディレクトリに展開(<NEUTRON_HOME>は普通は
/usr/lib/python2.7/dist-packages/neutron)
• Brocade LBaaSプラグインの有効化
• neutron.confファイルで(普通は/etc/neutron/ディレクトリ)、サービス・プロバイダにBrocade LBaaSプラグインを追加
service_provider = LOADBALANCER:brocade:neutron.services.loadbalancer.drivers.brocade.plugin_driver_v1.BrocadePluginDriverV1:default
• vADX/ADXの情報を入れたデバイス構成ファイルの作成
/etc/neutron/services/loadbalancer/brocade/devices.json
© 2014 Brocade Communications Systems, Inc. 14
devices.json構成ファイルの例
[
{
"name" :“vADX Device 1",
"ip":“<management ip of the adx/vadx>",
"user":“<user name>",
"password":“<password>",
"subnet_id":[ “<List of comma separated subnet uuids>"]
}
]
• Brocade ADXデバイス・ドライバは、リクエストが指定するサブネットuuidに基づいてデバイスを選択
© 2014 Brocade Communications Systems, Inc. 15
デモ
© 2014 Brocade Communications Systems, Inc. 16
BROCADE INTERNAL
LBaaSデモの内容 1. 顧客Aは、数台のサーバでアプリケーションをホストして処理負荷を分散
Horizon UI/APIからOpenStackのテナントとテナント・ユーザを作成
アプリケーションをホストするイメージをGlanceにアップロード(CLI/API、Horizon UI)
インスタンスを作成(上のイメージを使用)
ネットワーク/サブネットを作成(テナント・ネットワークを使用する場合)
サブネットを指定して、ロード・バランサ・デバイスを追加
ADXのWeb UI/CLIからアウト・バンドで、テナント/ポート/IPアドレスをADXに設定
アプリケーションの負荷分散ルールを設定
プールを作成
メンバになるインスタンスをプールに追加
インスタンスの状態を調べるヘルス・モニターを作成
VIPを作成してプールにバインド
© 2014 Brocade Communications Systems, Inc. 17
THANK YOU
18 © 2014 Brocade Communications Systems, Inc.
本件に関するお問合せ
https://www.brocadejapan.com/form/contact
ブロケード コミュニケーションズ システムズ株式会社