2015年1月26日 ネットワンシステムズ 株式会社 第2応用技術部 荒牧 大樹
Cisco ACIとOpenStack連携と今後の展望
0000-0000-0000今回の論文の要旨
CPU使用率が70% 超えたら仮想マシンを拡張ACIとOpenStackを利用してNWを
意識したクラウド基盤の構築
メモリ利用率が50%超えたら 仮想マシンのメモリを増やそう ストレージ容量が70%超えた らストレージを拡張しようNWの視点が抜け落ちている
クラウド基盤
2
今回の論文の概要
仮想マシンの
配置
仮想マシンの
再配置
仮想マシンの
拡張・縮小
OpenStack
Cisco ACI
L2/L3連携
ヘルススコアをクラウド基盤で利用するメリット
仮想マシンに信
頼性が必要とさ
れる場合はヘルス
スコアの高いホス
トを選択する
閾値以下の
ホストには
仮想マシンを
配置しない
ヘルススコアが
低下すると新規
仮想マシンを作
成して、トラフィッ
クをより良い仮想
マシンに振る
ホストの状況が
悪化した場合に
自動的に仮想マ
シンの再配置を
行う
仮想マシンの
配置
仮想マシンの
再配置
仮想マシンの
拡張・縮小
サービス品質の
確保
自動化
予防措置
4
OpenStackについて
OpenStackはオープンソースのIaaS/PaaS基盤を構築するソフトウェアです。OpenStack は各種モジュールが集まって構成されています。今回はNW(Neutron)、Compute(Nova)、 計測(Ceilometer)、自動化(Heat)を利用します。 ダッシュボード (Horizon) 自動化 (Heat) ネットワーク (Neutoron) コンピュート (Nova) 計測 (Ceilometer) 仮想化 ネットワーク 計測 テンプレート CPU Memory Disk NW HOT Cloud Formation Cisco NEC VMware BigSwitch KVM VMware Xen Hyper-V6
Neutronの機能
OpenStackでNW部分はNeutronが担当しています。ルーター機能やスイッチ機能等の 様々なNW機能を提供しています。 コンピュートノード ネットワークノード 仮想ルーター (qrouter) DHCPサーバー (qdhcp) br-tun br-int eth0 br-tun br-int eth0 br-ex eth1 Public Publicホスト
NeutronとML2
Neutronは3rd Partyと連携する場合はPluginを利用します。各種Pluginが提供されてい ましたが、復数のベンダードライバーを取り扱え無いため現在はML2の層を追加してACIは ML2のドライバーとして提供されています。 OVS Agent OVS Neutron APIC Leaf APIC Driver OVS Driver ML28
ACIとOpenStackの連携機能
OpenStackではCisco ACI用にML2のドライバーが提供されており、OpenStack上でNW を作成 、 Routerの作成を行うとACIファブリック上に対応したEPG/Contractが作成 さ れ ま す。
ACI連携現状の問題点
Floating IPの割り当てが出来ない
• ACI FabricがNAT対応していないため • OpFlexでNATの概念が無いため • 今後春に向けて対応予定との事Metadata Proxyへの対応がない
• OpenStackの仮想マシンは起動時にhttp://169.254.169.254へのアクセスを試みま すが、これをACI側でリダイレクトする必要があります。10
L2/L3機能への今後の期待
ACI連携時の現状のメ
リット
• Default GWの冗長性
確保
• HWによるトラフィックの
処理
今後の期待
• Group Policyの連携
• Service Graphの連携
(Service Chain)
• Floating IP/Metadata
Proxyへの対応
OpenStackとGroup Policyの連携
Group Policyで作成されたPolicyはACIに反映されます。仮想マシンは起動時にEPGに 紐付けられたNWに接続するとPolicyが適用されます。
© NetOneSystems Co., Ltd. All rights reserved. 12
Novaのスケジューラーとヘルススコア
Novaで仮想マシンを配置するときにはFilter Scheduler利用されます。これをホストが接続 されているLeafスイッチのポートのヘルススコアに従って配置が出来るか検討しました。 Leafスイッチ ホスト ホスト ヘルススコア(50) ヘルススコア(98) Nova Scheduler 優先的に 仮想マシンを 配置14
ヘルスコアを使った仮想マシン配置の利用例
信頼性が必要とされる場合はHealth
Scoreの高いホストを選択する
閾値以下のホストには仮想マシンを
配置しない
Leafスイッチ ホスト ホスト ヘルススコア (50) 信頼性が 必要な 仮想マシン ヘルススコア (98) Leafスイッチ ホスト ホスト ヘルススコア (50) ヘルススコア (98)ACIのヘルススコアについて
ACIはファブリック全体からポートに至るまでの様々な要素を加味して0-100のヘル
ススコアを付けます。
16
Novaのスケジューラーについて
Novaは仮想マシンの配置にFilter Schedulerを利用します。Filter Schedulerは
指定したフィルターをかけて必要なホストを絞ります。その後重み付けを行い最後の
一台を選んで仮想マシンを配置します。
Utilization Based Scheduling
Utilization Based SchedulingはIcehouseから導入された仕組みでホストの動的値を元 にスケジューリングを行うことが可能です。ホストは定期的に値をスケジューラーにレポートし て、スケジューラーはそれを元にホストを選択します。 ホスト A Filter スケジューラー ホスト B ホスト C Python Script ②レポートされた 値を元にフィルター/ Weight処理 ①指定のPython Scriptを 実行して定期的にホスト 情報をレポート
18
Utilization Based SchedulingとACIのヘルススコア
今回はAPICからホストが接続されているLeafポートからHealth Scoreを取得するPython のスクリプトを書いて、スケジューラに反映させました。
import json import requests
from nova.compute import monitors
class APICController(object):
def __init__(self, apic_ip):
self.base_url = 'https://' + apic_ip + '/api/'
def login(self, name, pwd): name_pwd = json.dumps(
{'aaaUser': {'attributes': {'name': name, 'pwd': pwd}}}) login_url = self.base_url + 'aaaLogin.json'
post_response = requests.post(login_url, data=name_pwd, verify=False) # get token from login response structure
結果
通常はメモリの空き容量が大きいホストが選択される所が、ACIのヘルススコアがより良いホ ストへ仮想マシンが優先的に配置された事が確認されました。
Filtered [(osp5com01.noslab.com, osp5com01.noslab.com) ram:38977 disk:8192 io_ops:0 instances:3, (osp5com02.noslab.com, osp5com02.noslab.com) ram:77769 disk:1878016 io_ops:0 instances:1]
Weighed [WeighedHost [host: osp5com01.noslab.com, weight: 1.50118941995], WeighedHost [host: osp5com02.noslab.com, weight: 1.0]] 通常はRAMが大きい OSP5com02が選択される ACIヘルススコアの良い OSP5com01が選択されている RAM 38977 RAM 77769 osp5com01 osp5com02 RAM 38977 RAM 77769 osp5com01 osp5com02 通常はメモリの 多いこちらを選択 Health Scoreが考慮 されてこちらを選択
© NetOneSystems Co., Ltd. All rights reserved. 20
Auto-Scalingとヘルススコア
ACIのヘルススコアが悪化した場合に仮想マシンのAuto-Scalingが出来ないか検討を行い ます。 Leafスイッチ ホストA ホストB ヘルススコア(98) ヘルススコアが(50)に低下 Ceilometer Heat Nova 自動的に 仮想マシンを 追加22
Heatについて
Heatは復数の仮想マシンの作成とアプリケーションのインストールの自動化を提供していま す。Ceilometerと連携する事でAuto Scaleを提供する事も出来ます。 ネットワーク (Neutoron) コンピュート (Nova) イメージ (Glance)自動化
(Heat)
HOTテンプレート Cloud Formation テンプレートCeilometerについて
Ceilometerは利用状況を各サービスから取得して、保存と統計情報の提供を行うサービス です。閾値を設定してWebHookで発報する事も出来ます。Heatと連携することでAuto Scalingを行うことも出来ます。 Ceilometer Nova Ceilometer- agent Database Neutron Ceilometer- agent Cinder Ceilometer- agent Glance Ceilometer- agent 保存 取り出し Web発報 Heat等24
HeatとAuto Scalingの機能
Heatはオーケストレーション機能提供します。Heatは事前に設定されたテンプレートでの設 定を元にCeilometerの値をからAuto Scalingを実行します。 ホスト ① 仮想マシンの CPU使用量が上昇 Ceilometer Heat Nova 自動的に 仮想マシンを 追加 ② Ceilometerから Heatに通知 ③ HeatからNovaに仮想マシンの 追加を指示Ceilometerへのヘルススコアのレポート
Ceilometerに対してポートのヘルススコアを定期的にレポートを行うPython Agentを作成 しました。 import json import requests class APICController(object):def __init__(self, apic_ip):
self.base_url = 'https://' + apic_ip + '/api/'
def login(self, name, pwd):
name_pwd = json.dumps({'aaaUser': {'attributes': {'name': name, 'pwd': pwd}}}) login_url = self.base_url + 'aaaLogin.json'
post_response = requests.post(login_url, data=name_pwd, verify=False) # get token from login response structure
auth = json.loads(post_response.text)
26
問題点
Heatではホストと仮想マシンをマッピング す る 手 段 を 持 た な い 為 Ceilometer の 値 を 元 に Auto Scalingをトリガー出来ないことがわかりました。 ACIの ヘルススコアが 低下 ホスト上の 仮想マシン/ システムを特定 別ホスト上に 仮想マシンを 作成 定期的に ヘルススコアを レポート28
仮想マシンの再配置とヘルススコア
ACIのヘルススコアが悪化した場合にLive Migrationで自動的に仮想マシンが移動出来な いか検討します。 Leafスイッチ ホスト ホスト ヘルススコア(98) ヘルススコアが(50)に低下 Ceilometer Congress Nova 自動的に 仮想マシンを 移動仮想マシンの再配置の機能
基本的に仮想マシンの再配置の自動化はまだOpenStackではサポートされていません。再 配置に関してはCongressが有望なプロジェクトとされています。Congress
ポリシーを
定義
自動的に
Remediation
を行う
ポリシー 違反 Congressは論文時点では実 装が始まったばかりだったため動 作の確認は出来ませんでした。 現在はDevStackを利用して試 す事が出来ます。30
苦労した点
• OpenStack連携のCCO Documentが間違っている
• ⇒ APICドライバー作成者をOpen Source Communityで探して直接連 絡を取ってやり方を教えてもらう
• 各種APIの詳細のDocumentが不足している
• ⇒ APICのAPI Inspectorを使って実際利用しているAPI Callから構文と仕 様を推測
ACIについて
• 仕様がDocument化されてない
• ⇒ Pyhtonコードを読んで機能を推測