Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置...
-
Upload
hoangduong -
Category
Documents
-
view
233 -
download
0
Transcript of Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置...
2015年1月26日
ネットワンシステムズ 株式会社 第2応用技術部 荒牧 大樹
Cisco ACIとOpenStack連携と今後の展望
0000-0000-0000
1
今回の論文の要旨
CPU使用率が70%
超えたら仮想マシンを拡張
ACIとOpenStackを利用してNWを
意識したクラウド基盤の構築
メモリ利用率が50%超えたら
仮想マシンのメモリを増やそう
ストレージ容量が70%超えたらストレージを拡張しよう
NWの視点が抜け落ちている
クラウド基盤
2
今回の論文の概要
仮想マシンの
配置
仮想マシンの
再配置
仮想マシンの
拡張・縮小
OpenStack
Cisco ACI
L2/L3連携
3
ヘルススコアをクラウド基盤で利用するメリット
仮想マシンに信頼性が必要とされる場合はヘルススコアの高いホストを選択する
閾値以下の
ホストには
仮想マシンを
配置しない
ヘルススコアが
低下すると新規仮想マシンを作成して、トラフィックをより良い仮想マシンに振る
ホストの状況が悪化した場合に自動的に仮想マシンの再配置を
行う
仮想マシンの
配置
仮想マシンの
再配置
仮想マシンの
拡張・縮小
サービス品質の
確保 自動化 予防措置
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-V
© NetOneSystems Co., Ltd. All rights reserved.
5
ACIとL2/L3連携
6
Neutronの機能
OpenStackでNW部分はNeutronが担当しています。ルーター機能やスイッチ機能等の様々なNW機能を提供しています。
コンピュートノード ネットワークノード
仮想ルーター
(qrouter)
DHCPサーバー
(qdhcp)
br-tun
br-int
eth0
br-tun
br-int
eth0
br-ex
eth1
Public
Public
7
ホスト
NeutronとML2
Neutronは3rd Partyと連携する場合はPluginを利用します。各種Pluginが提供されていましたが、復数のベンダードライバーを取り扱え無いため現在はML2の層を追加してACIはML2のドライバーとして提供されています。
OVS Agent
OVS
Neutron
APIC
Leaf
APIC
Driver
OVS
Driver
ML2
8
ACIとOpenStackの連携機能
OpenStackではCisco ACI用にML2のドライバーが提供されており、OpenStack上でNW
を作成、Routerの作成を行うとACIファブリック上に対応したEPG/Contractが作成されます。
9
ACI連携現状の問題点
Floating IPの割り当てが出来ない
• ACI FabricがNAT対応していないため
• OpFlexでNATの概念が無いため
• 今後春に向けて対応予定との事
Metadata Proxyへの対応がない
• OpenStackの仮想マシンは起動時にhttp://169.254.169.254へのアクセスを試みますが、これをACI側でリダイレクトする必要があります。
• ACIのDefault GatewayはMetadata Proxy機能が無い
10
L2/L3機能への今後の期待
ACI連携時の現状のメリット
• Default GWの冗長性確保
• HWによるトラフィックの処理
今後の期待
• Group Policyの連携
• Service Graphの連携(Service Chain)
• Floating IP/Metadata Proxyへの対応
11
OpenStackとGroup Policyの連携
Group Policyで作成されたPolicyはACIに反映されます。仮想マシンは起動時にEPGに紐付けられたNWに接続するとPolicyが適用されます。
© NetOneSystems Co., Ltd. All rights reserved.
12
Novaスケジューラーとヘルススコア連携
13
Novaのスケジューラーとヘルススコア
Novaで仮想マシンを配置するときにはFilter Scheduler利用されます。これをホストが接続されているLeafスイッチのポートのヘルススコアに従って配置が出来るか検討しました。
Leafスイッチ
ホスト ホスト
ヘルススコア(50) ヘルススコア(98)
Nova
Scheduler
優先的に
仮想マシンを
配置
14
ヘルスコアを使った仮想マシン配置の利用例
信頼性が必要とされる場合はHealth Scoreの高いホストを選択する
閾値以下のホストには仮想マシンを配置しない
Leafスイッチ
ホスト ホスト
ヘルススコア
(50)
信頼性が
必要な
仮想マシン
ヘルススコア
(98)
Leafスイッチ
ホスト ホスト
ヘルススコア
(50) ヘルススコア
(98)
15
ACIのヘルススコアについて
ACIはファブリック全体からポートに至るまでの様々な要素を加味して0-100のヘルススコアを付けます。
16
Novaのスケジューラーについて
Novaは仮想マシンの配置にFilter Schedulerを利用します。Filter Schedulerは指定したフィルターをかけて必要なホストを絞ります。その後重み付けを行い最後の一台を選んで仮想マシンを配置します。
17
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
auth = json.loads(post_response.text)
19
結果
通常はメモリの空き容量が大きいホストが選択される所が、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
21
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
テンプレート
23
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に仮想マシンの
追加を指示
25
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)
login_attributes = auth['imdata'][0]['aaaLogin']['attributes']
return login_attributes['token']
26
問題点
Heatではホストと仮想マシンをマッピングする手段を持たない為Ceilometerの値を元にAuto Scalingをトリガー出来ないことがわかりました。
ACIの
ヘルススコアが
低下
ホスト上の
仮想マシン/
システムを特定
別ホスト上に
仮想マシンを
作成
定期的に
ヘルススコアを
レポート
© NetOneSystems Co., Ltd. All rights reserved.
27
仮想マシンの再配置とACI
28
仮想マシンの再配置とヘルススコア
ACIのヘルススコアが悪化した場合にLive Migrationで自動的に仮想マシンが移動出来ないか検討します。
Leafスイッチ
ホスト ホスト
ヘルススコア(98) ヘルススコアが(50)に低下
Ceilometer
Congress Nova
自動的に
仮想マシンを
移動
29
仮想マシンの再配置の機能
基本的に仮想マシンの再配置の自動化はまだOpenStackではサポートされていません。再配置に関してはCongressが有望なプロジェクトとされています。
Congress
ポリシーを
定義
自動的に
Remediation
を行う
ポリシー
違反
Congressは論文時点では実
装が始まったばかりだったため動作の確認は出来ませんでした。
現在はDevStackを利用して試す事が出来ます。
30
苦労した点
• OpenStack連携のCCO Documentが間違っている
• ⇒ APICドライバー作成者をOpen Source Communityで探して直接連絡を取ってやり方を教えてもらう
• 各種APIの詳細のDocumentが不足している
• ⇒ APICのAPI Inspectorを使って実際利用しているAPI Callから構文と仕様を推測
ACIについて
• 仕様がDocument化されてない
• ⇒ Pyhtonコードを読んで機能を推測
OpenStackについて
31
まとめ
クラウド基盤
OpenStackとACIを組み合わせてより良い
クラウド基盤へ