Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置...

33
2015126ネットワンシステムズ 株式会社 2応用技術部 荒牧 大樹 Cisco ACIOpenStack連携と今後の展望 0000-0000-0000

Transcript of Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置...

Page 1: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

2015年1月26日

ネットワンシステムズ 株式会社 第2応用技術部 荒牧 大樹

Cisco ACIとOpenStack連携と今後の展望

0000-0000-0000

Page 2: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

1

今回の論文の要旨

CPU使用率が70%

超えたら仮想マシンを拡張

ACIとOpenStackを利用してNWを

意識したクラウド基盤の構築

メモリ利用率が50%超えたら

仮想マシンのメモリを増やそう

ストレージ容量が70%超えたらストレージを拡張しよう

NWの視点が抜け落ちている

クラウド基盤

Page 3: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

2

今回の論文の概要

仮想マシンの

配置

仮想マシンの

再配置

仮想マシンの

拡張・縮小

OpenStack

Cisco ACI

L2/L3連携

Page 4: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

3

ヘルススコアをクラウド基盤で利用するメリット

仮想マシンに信頼性が必要とされる場合はヘルススコアの高いホストを選択する

閾値以下の

ホストには

仮想マシンを

配置しない

ヘルススコアが

低下すると新規仮想マシンを作成して、トラフィックをより良い仮想マシンに振る

ホストの状況が悪化した場合に自動的に仮想マシンの再配置を

行う

仮想マシンの

配置

仮想マシンの

再配置

仮想マシンの

拡張・縮小

サービス品質の

確保 自動化 予防措置

Page 5: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 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-V

Page 6: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

© NetOneSystems Co., Ltd. All rights reserved.

5

ACIとL2/L3連携

Page 7: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco 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

Page 8: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

7

ホスト

NeutronとML2

Neutronは3rd Partyと連携する場合はPluginを利用します。各種Pluginが提供されていましたが、復数のベンダードライバーを取り扱え無いため現在はML2の層を追加してACIはML2のドライバーとして提供されています。

OVS Agent

OVS

Neutron

APIC

Leaf

APIC

Driver

OVS

Driver

ML2

Page 9: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

8

ACIとOpenStackの連携機能

OpenStackではCisco ACI用にML2のドライバーが提供されており、OpenStack上でNW

を作成、Routerの作成を行うとACIファブリック上に対応したEPG/Contractが作成されます。

Page 10: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

9

ACI連携現状の問題点

Floating IPの割り当てが出来ない

• ACI FabricがNAT対応していないため

• OpFlexでNATの概念が無いため

• 今後春に向けて対応予定との事

Metadata Proxyへの対応がない

• OpenStackの仮想マシンは起動時にhttp://169.254.169.254へのアクセスを試みますが、これをACI側でリダイレクトする必要があります。

• ACIのDefault GatewayはMetadata Proxy機能が無い

Page 11: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

10

L2/L3機能への今後の期待

ACI連携時の現状のメリット

• Default GWの冗長性確保

• HWによるトラフィックの処理

今後の期待

• Group Policyの連携

• Service Graphの連携(Service Chain)

• Floating IP/Metadata Proxyへの対応

Page 12: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

11

OpenStackとGroup Policyの連携

Group Policyで作成されたPolicyはACIに反映されます。仮想マシンは起動時にEPGに紐付けられたNWに接続するとPolicyが適用されます。

Page 13: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

© NetOneSystems Co., Ltd. All rights reserved.

12

Novaスケジューラーとヘルススコア連携

Page 14: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

13

Novaのスケジューラーとヘルススコア

Novaで仮想マシンを配置するときにはFilter Scheduler利用されます。これをホストが接続されているLeafスイッチのポートのヘルススコアに従って配置が出来るか検討しました。

Leafスイッチ

ホスト ホスト

ヘルススコア(50) ヘルススコア(98)

Nova

Scheduler

優先的に

仮想マシンを

配置

Page 15: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

14

ヘルスコアを使った仮想マシン配置の利用例

信頼性が必要とされる場合はHealth Scoreの高いホストを選択する

閾値以下のホストには仮想マシンを配置しない

Leafスイッチ

ホスト ホスト

ヘルススコア

(50)

信頼性が

必要な

仮想マシン

ヘルススコア

(98)

Leafスイッチ

ホスト ホスト

ヘルススコア

(50) ヘルススコア

(98)

Page 16: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

15

ACIのヘルススコアについて

ACIはファブリック全体からポートに至るまでの様々な要素を加味して0-100のヘルススコアを付けます。

Page 17: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

16

Novaのスケジューラーについて

Novaは仮想マシンの配置にFilter Schedulerを利用します。Filter Schedulerは指定したフィルターをかけて必要なホストを絞ります。その後重み付けを行い最後の一台を選んで仮想マシンを配置します。

Page 18: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

17

Utilization Based Scheduling

Utilization Based SchedulingはIcehouseから導入された仕組みでホストの動的値を元

にスケジューリングを行うことが可能です。ホストは定期的に値をスケジューラーにレポートして、スケジューラーはそれを元にホストを選択します。

ホスト A

Filter

スケジューラー

ホスト B ホスト C Python

Script

②レポートされた

値を元にフィルター/

Weight処理

①指定のPython Scriptを

実行して定期的にホスト

情報をレポート

Page 19: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

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)

Page 20: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

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が考慮

されてこちらを選択

Page 21: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

© NetOneSystems Co., Ltd. All rights reserved.

20

Auto-ScalingとACI

Page 22: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

21

Auto-Scalingとヘルススコア

ACIのヘルススコアが悪化した場合に仮想マシンのAuto-Scalingが出来ないか検討を行います。

Leafスイッチ

ホストA ホストB

ヘルススコア(98) ヘルススコアが(50)に低下

Ceilometer

Heat Nova

自動的に

仮想マシンを

追加

Page 23: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

22

Heatについて

Heatは復数の仮想マシンの作成とアプリケーションのインストールの自動化を提供しています。Ceilometerと連携する事でAuto Scaleを提供する事も出来ます。

ネットワーク

(Neutoron)

コンピュート

(Nova)

イメージ

(Glance)

自動化

(Heat)

HOTテンプレート

Cloud Formation

テンプレート

Page 24: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

23

Ceilometerについて

Ceilometerは利用状況を各サービスから取得して、保存と統計情報の提供を行うサービスです。閾値を設定してWebHookで発報する事も出来ます。Heatと連携することでAuto

Scalingを行うことも出来ます。

Ceilometer

Nova

Ceilometer-

agent

Database

Neutron

Ceilometer-

agent

Cinder

Ceilometer-

agent

Glance

Ceilometer-

agent

保存

取り出し

Web発報

Heat等

Page 25: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

24

HeatとAuto Scalingの機能

Heatはオーケストレーション機能提供します。Heatは事前に設定されたテンプレートでの設定を元にCeilometerの値をからAuto Scalingを実行します。

ホスト

① 仮想マシンの

CPU使用量が上昇

Ceilometer

Heat Nova

自動的に

仮想マシンを

追加

② Ceilometerから

Heatに通知

③ HeatからNovaに仮想マシンの

追加を指示

Page 26: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

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']

Page 27: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

26

問題点

Heatではホストと仮想マシンをマッピングする手段を持たない為Ceilometerの値を元にAuto Scalingをトリガー出来ないことがわかりました。

ACIの

ヘルススコアが

低下

ホスト上の

仮想マシン/

システムを特定

別ホスト上に

仮想マシンを

作成

定期的に

ヘルススコアを

レポート

Page 28: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

© NetOneSystems Co., Ltd. All rights reserved.

27

仮想マシンの再配置とACI

Page 29: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

28

仮想マシンの再配置とヘルススコア

ACIのヘルススコアが悪化した場合にLive Migrationで自動的に仮想マシンが移動出来ないか検討します。

Leafスイッチ

ホスト ホスト

ヘルススコア(98) ヘルススコアが(50)に低下

Ceilometer

Congress Nova

自動的に

仮想マシンを

移動

Page 30: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

29

仮想マシンの再配置の機能

基本的に仮想マシンの再配置の自動化はまだOpenStackではサポートされていません。再配置に関してはCongressが有望なプロジェクトとされています。

Congress

ポリシーを

定義

自動的に

Remediation

を行う

ポリシー

違反

Congressは論文時点では実

装が始まったばかりだったため動作の確認は出来ませんでした。

現在はDevStackを利用して試す事が出来ます。

Page 31: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

30

苦労した点

• OpenStack連携のCCO Documentが間違っている

• ⇒ APICドライバー作成者をOpen Source Communityで探して直接連絡を取ってやり方を教えてもらう

• 各種APIの詳細のDocumentが不足している

• ⇒ APICのAPI Inspectorを使って実際利用しているAPI Callから構文と仕様を推測

ACIについて

• 仕様がDocument化されてない

• ⇒ Pyhtonコードを読んで機能を推測

OpenStackについて

Page 32: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携

31

まとめ

クラウド基盤

OpenStackとACIを組み合わせてより良い

クラウド基盤へ

Page 33: Cisco ACI OpenStack連携と今後の展望 今回の論文の概要 仮想マシンの 配置 仮想マシンの 再配置 仮想マシンの 拡張・縮小 OpenStack Cisco ACI L2/L3連携