Transcript
Page 1: Building Virtual Infrastructure at Inter-Cloud system

柳田 誠也 高野 了成 中田 秀基 竹房 あつ子 工藤 知宏

産業技術総合研究所 情報技術研究部門

2013年3月22日 第12回CloudStackユーザー会@IDCフロンティア

インタークラウドにおける 仮想インフラ構築システムの提案

Page 2: Building Virtual Infrastructure at Inter-Cloud system

背景

• インタークラウドへの注目の高まり

– クラウド連携、ハイブリッドクラウドなど

• 新しいIT基盤サービスの登場

– クラウド間での柔軟な資源の融通

– 複数クラウドの資源を組み合わせたサービスの提供

2

インタークラウド環境における 仮想インフラ構築技術の開発

Page 3: Building Virtual Infrastructure at Inter-Cloud system

HaaS: Hardware as a Service

• IaaS利用者から無尽蔵な資源プールに見えても、IaaS事業者の資源は有限

– ピーク需要に対する設備投資は非効率

• HaaSはIaaSへ資源を提供するクラウドサービス

3

SaaS: Software as a Service

PaaS: Platform as a Service

IaaS: Infrastructure as a Service

HaaS: Hardware as a Service

Page 4: Building Virtual Infrastructure at Inter-Cloud system

HaaSにおける資源管理

• HaaSシステムでは計算機、ネットワーク共に 2段階の仮想化が必要

– 計算機:入れ子型仮想化

– ネットワーク:エッジオーバレイ

4

L0 L0 L0

L0 L0 L0

L2

VM

L2

VM

L2

VM

L1

VM

L1

VM

L1

VM

L1

VM

L1

VM

L1

VM

HaaS Provider

IaaS Provider

IaaS User

HaaS Data Center IaaS Data Center

ユーザネットワーク (VLAN)

仮想ネットワーク (OpenFlow、トンネル)

物理ネットワーク

計算資源の仮想化 ネットワーク資源の仮想化

Page 5: Building Virtual Infrastructure at Inter-Cloud system

Iris: HaaS資源管理システム (Inter-cloud Resource Integration System)

5

Irisはギリシャ神話で 「虹の女神」

Page 6: Building Virtual Infrastructure at Inter-Cloud system

Iris: HaaS資源管理システム

6

物理 計算機

DC内ネットワーク(データ網)

DC内ネットワーク(制御網)

資源 マネージャ

物理 計算機

DC内ネットワーク(データ網)

クラウド 資源管理

VM

VM

Data Center 1 (HaaS事業者) Data Center 2 (IaaS事業者)

クラウド 管理者

資源コーディネータ

VM

VM

VM

VM

資源 マネージャ

物理計算機を要求

物理計算機を要求 DC間ネットワークを要求

クラウド資源管理

システムで

計算機を管理

過負荷により

サービスレベル

低下の恐れ 物理計算機の

提供

DC間ネットワーク

GW GW

Page 7: Building Virtual Infrastructure at Inter-Cloud system

Iris: プロトタイプ概要

• アプリケーション・インタフェース

– Webサービスは未実装(GNS-WSIv3ベースを検討)

– CLIスクリプトのみ対応

• ゲートウェイ

– Open vSwitch 1.4.0ベースに実装

• 計算資源管理

– KVM on LXCとNested KVMに対応

• DC内ネットワーク資源管理

– GREトンネル(Open vSwitch利用) • ゲートウェイを頂点とするスター型で実装。メッシュ型を実装中

• DC間ネットワーク資源管理

– GREトンネル(Open vSwitch利用)

7

Page 8: Building Virtual Infrastructure at Inter-Cloud system

Iris: プロトタイプ構成

8

Cluster 1 (HaaS)

Cluster 2 (IaaS)

IP network (LAN)

head0 head3

control plane

data plane

host1 host2 host5 host4

HaaS UVM

LXC/KVM

HaaS UVM

LXC/KVM

IaaS UVM

IaaS UVM

• 計算サーバ

– Intel Core2 quad Q9550/2.83 GHz、メモリ8GB、GbE NIC

– Ubuntu 12.04 x86_64 (kernel 3.2.0-38)

– libvirtd 0.9.8、qemu 1.0、lxc 0.7.5

• IaaS

– CloudStack 4.0.0-beta (Advanced Network構成)

GW GW

Page 9: Building Virtual Infrastructure at Inter-Cloud system

動作確認

9

Cluster 1 (HaaS)

Cluster 2 (IaaS)

IP network (LAN)

head0 head3

control plane

data plane

host1 host2 host5 host4

HaaS UVM

LXC/KVM

HaaS UVM

LXC/KVM

IaaS UVM

IaaS UVM

• HaaS L1VMをCloudStackの計算ノードとして追加

– CloudStack内部ではPrivate・Public・Guestの各ネットワークに別々のVLANを割当て

• ユーザVMのデプロイ・ライブマイグレーション

• BYTE UNIX Benchmarkの実行

GW GW

Page 10: Building Virtual Infrastructure at Inter-Cloud system

L2VM比較

10

IaaS UVM (L1)

KVM on LXC

Nested KVM

VMデプロイ時間 (sec) 15.81 15.82 15.96

VM間通信速度 (Mbps) 930 934 621

Ping RTT (msec) 0.36 0.35 1.66

Dhrystone (BYTE index) 1317.4 1318.0 1061.1

Execl (BYTE index) 194.5 198.2 17.2

Page 11: Building Virtual Infrastructure at Inter-Cloud system

得られた知見(KVM on LXC)

• L2VMの性能オーバヘッドは無視できる

• LXCコンテナ(L1VM)間の隔離が不完全であるため、L1VMの一部サービスにおいて異常動作を観測

– カーネルモジュール+ユーザーデーモンの構成をとるサービスは基本的にL1VMで使用不可 (NFS、udev、Open vSwitch等、ただしNFSは回避策あり)

• 環境構築手順はNested KVMより複雑

• いったん環境構築できれば、L2VMは安定して動作する

11

Page 12: Building Virtual Infrastructure at Inter-Cloud system

得られた知見(Nested KVM)

• L2VMの性能オーバヘッドは大きい

– 特にアドレス空間切替のオーバヘッドが大

• VM間の隔離は完全なので、性能以外の制限事項はない

• KVM on LXCに比べて環境構築が容易

• L2VMの動作がやや不安定 (12.04の場合)

– BYTE UNIX Benchmarkが原因不明のSEGVで落ちることがあった。しかも再現性なし

– 12.10では今のところ問題なし

12

Page 13: Building Virtual Infrastructure at Inter-Cloud system

設定のポイント

• KVM on LXC

– LXCコンテナ(L1VM)内のlibvirtdのパーミッション

• オーナーroot:ttyかつSGIDビットONでないとL2VMの起動がEPERMで失敗

– NFS問題回避のため、Private Network用NICをL0ホストにも用意する

– LXC設定ファイルで、デバイスkvm、tun、loopがL1VMから見えるようにする

• Nested KVM

– 最新のカーネルを使用する(12.04の場合)

– L0ホストの/etc/default/qemu-kvmのパラメータKVM_NESTEDを有効にする

13

Page 14: Building Virtual Infrastructure at Inter-Cloud system

設定のポイント(ネットワーク)

• ゾーン追加時、全てのトラフィックタイプについて、トラフィックラベルを明示的に指定する

• L1VM用ブリッジおよびGREトンネルは、Open vSwitchで構築すると容易に構築可能

– Linux付属のモジュール(gre.ko等)を使うと、GREトンネルがうまく構築できない

– OpenFlowコントローラはパッケージ付属のものを利用可能

• ipコマンドとovs-vsctlコマンドで構築できる

• ただしDC内トンネルをメッシュ型にする場合は、Broadcast Stormを回避するために独自コントローラが必要

14

Page 15: Building Virtual Infrastructure at Inter-Cloud system

まとめ

• IaaS事業者からの要求に対して、ネットワーク越しにハードウェア資源を貸し出す、HaaS資源管理システムIrisのプロトタイプ実装を開発し、実証実験を実施

– 既存IaaSシステムに変更を加えることなく、ゲートウェイの設置だけで、HaaS資源を透過的に利用可能

– 2段階の仮想化によりユーザVMからHaaSの制御ネットワークを隠蔽可能

15

Page 16: Building Virtual Infrastructure at Inter-Cloud system

ありがとうございました

資料は後日CloudStackユーザー会のサイトにアップロードしていただく予定です。

関連論文:

高野了成、中田秀基、竹房あつ子、柳田誠也、工藤知宏:インタークラウドにおける仮想インフラ構築システムの提案、情報処理学会OS研究会、2013年2月28日

http://www.slideshare.net/oraccha/sigos124

16

Page 17: Building Virtual Infrastructure at Inter-Cloud system

補足:libvirtd

• /var/log/libvirt/libvirtd.log

• /var/log/cloud/agent/agent.log

17

2012-11-13 06:50:46.101+0000: 667: error : qemuProcessReadLogOutput:1006 : internal error Process exited while reading console log output: chardev: opening backend "pty" failed: Permission denied

2012-11-13 06:50:46,282 WARN [kvm.resource.LibvirtComputingResource] (agentRequ est-Handler-3:null) Failed to start domain: v-83-VM: internal error Process exited while reading console log output: chardev: opening backend "pty" failed: Permission denied

Page 18: Building Virtual Infrastructure at Inter-Cloud system

補足:NFS

• LXCコンテナ(L1VM)におけるマウント状態

• L0ホスト(GREトンネル手前)のパケットキャプチャ

18

0.001263 192.168.101.102 -> 192.168.101.1 NFS 218 V4 Call GETATTR FH:0x0cde7055 0.001566 192.168.101.1 -> 192.168.101.102 NFS 286 V4 Reply (Call In 8) GETATTR

192.168.101.1:/export/primary on /mnt/2a3c975c-5a26-331b-9a49-a3a85cd7b6bb type nfs (rw,vers=4,addr=192.168.101.1,clientaddr=192.168.101.5)

Page 19: Building Virtual Infrastructure at Inter-Cloud system

補足:DC間GREトンネル

ovs-vsctl add-br br0

ip addr add 10.1.1.1/16 dev br0

ip link set br0 up

ovs-vsctl add-port br0 eth0

ovs-vsctl add-port br0 gre0

ovs-vsctl set interface gre0 type=gre ¥

options:local_ip=xxx.xxx.xxx.xxx options:remote_ip=yyy.yyy.yyy.yyy

ovs-vsctl add-port br0 c111gre0

ovs-vsctl set interface c111gre0 type=gre ¥

options:local_ip=10.1.1.1 options:remote_ip=10.1.1.4

19

Page 20: Building Virtual Infrastructure at Inter-Cloud system

補足:DC内GREトンネル

ovs-vsctl add-br c112br

ovs-vsctl add-port c112br c112gre0

ovs-vsctl set interface c112gre0 type=gre ¥

options:local_ip=10.1.1.3 options:remote_ip=10.1.1.1

ip addr add 10.1.1.3/16 dev eth0

ip link set c112br up

20


Recommended