osc2009 do xen hara

39
1 仮想マシンの動的プロビジョニング& 複雑なネットワーク構築 Kazuhisa Hara

Upload: kazuhisa-hara

Post on 24-May-2015

3.276 views

Category:

Technology


1 download

DESCRIPTION

09/06/20 OSC2009-Hokkaidoにて発表したプレゼン資料です。

TRANSCRIPT

Page 1: Osc2009 Do Xen Hara

1

仮想マシンの動的プロビジョニング&複雑なネットワーク構築

Kazuhisa Hara

Page 2: Osc2009 Do Xen Hara

2

Agenda

アジェンダ

1. 仮想マシン提供自動化/管理するシステムを組むには?

1. 複雑なネットワークを構築する

Page 3: Osc2009 Do Xen Hara

3

Virtualization…?

おさらい– そもそもサーバ仮想化とは?

• 1台のサーバコンピュータを、あたかも複数台のコンピュータであるかのように論理的に分割し、それぞれに別のOSやアプリケーションソフトを動作させる事

Windows

Solaris

Linux

Windows

仮想化

Page 4: Osc2009 Do Xen Hara

4

Virtualization Products

主なサーバ仮想化製品– VMWare

• 市場を牽引• vSphere(ESX)

– Hyper-V• Microsoft Windows2008• Windows 2008R2(Windows7相当)で Hyper-V2.0が搭載予定

– Xen• Citrix XenServer• Oracle VM• Sun xVM• OSS Xen.org

– KVM• RedHat

– Other• Solalis LDoms• openVZ etc…

Page 5: Osc2009 Do Xen Hara

5

Main

今回のメインはXenです。

Page 6: Osc2009 Do Xen Hara

6

Story

Story

Page 7: Osc2009 Do Xen Hara

7

Delusion

仮想化を使ってプライベートクラウドな環境を構築したいね– もっと言ってしまえば、AmazonEC2みたいなの

Page 8: Osc2009 Do Xen Hara

8

For example

Why ?–例えば…

•社内で新しいプロジェクトが走り出した!•検証/開発用にサーバが必要•物理的にサーバを発注したら最低数日、決済とか色々考えると最悪数週間掛かることも…

Page 9: Osc2009 Do Xen Hara

9

Model answers

仮想サーバのプールがあれば、数分~数時間で簡単に提供できるよ

コスト下がるよ!

仮想化いいよ!仮想化しよう!!

仮想化かわいいよ仮想化

Page 10: Osc2009 Do Xen Hara

10

It tend to do…

ここまでありがちな話

Page 11: Osc2009 Do Xen Hara

11

Problem

課題– もちろん簡単に仮想マシンを払いだす仕組みが必要

• 1個ずつ作成するのは非効率– 例え作れても管理が大変

» 自動化できるものは自動化しよう

管理•特にOSS仮想化ソリューションはここが弱い

– ロール管理– 統合的な管理– 容易なアクセス– ユーザアクション直結のソリューション– その他その他…

Page 12: Osc2009 Do Xen Hara

12

Necessary

課題をクリアする為には?

– 仮想マシン提供自動化/管理するシステムがまず必要• 使えるものは使う• ないなら作る

– ある程度狭い範囲とはいえ、アクセス権を配慮したネットワーク構築が不可欠• 『ネットワークの仮想化』とかどうなのよ• 仮想マシンのネットワークは、どうなっているのか?

Page 13: Osc2009 Do Xen Hara

13

Will

自動化できるポータルが欲しいポータル

WebServer

利用期間

2009 ▼ 05 ▼年 月 20 ▼ 日 - 2009 ▼ 05 ▼年 月 30 ▼

必要リソース

CentOS5.3   ▼

      ▼

OS 台数 メモリ ディスク 利用テンプレート

2 台 1000 M 10 G 選択

台 1000 M 10 G

リソース確認

申請

  ▼ 台 1000 M 10 G 選択

利用者

 ▼所属 利用者メールアドレス

※プロビジョニング完了後に利用者/管理者にメール通知  (利用期間、アカウント名、中間サーバIPアドレス、ゲストOSのIPアドレス等)

選択

Page 14: Osc2009 Do Xen Hara

14

Topic:1

今日のお話しその1

Page 15: Osc2009 Do Xen Hara

15

Means

何を使えば作れる?– Xen、KVMのツールはコマンドラインでも叩ける– xmlでゲストマシンの情報を定義

• Webサーバの裏でShellexecさせる?– それなら言語は特に問わない。Perl, PHP, Ruby ,Java…– でもShellexecは正直美しくない– 何よりホストマシンとWebサーバの切り分けが出来ない

実は標準ライブラリがある!– libvirt

• これを使って自動プロビジョニング/管理ツールを作る

Page 16: Osc2009 Do Xen Hara

16

libvirt

libvirt–平たく言うと、仮想化ホスト(≒ハイパーバイザ)とやり取りが出来るAPIライブラリ

–沢山の仮想マシンに対応• Xen, QEMU, KVM, openVZ, VirtualBox etc…

–言語バインディング• C, C#, Python, Java, Perl, Ruby etc…•標準APIはCとPython

–セキュリティ認証• SSH, TSL & X.509, SASL & kerberos

Page 17: Osc2009 Do Xen Hara

17

Range

libvirtで出来る範囲–ホスト(Dom-0)の情報取得–ゲスト一覧–ゲストの操作

•作る、消す、編集する、などなど–ネットワークの操作–ストレージの操作

– virt-managerはこのライブラリを使っている– virshコマンドもこのライブラリを使っている

Page 18: Osc2009 Do Xen Hara

18

virt-manager

virt-manager– 確かに便利だけど、かゆいところに手が届かない– VirtualCenterほどの機能はまだない

Page 19: Osc2009 Do Xen Hara

19

libvirt’s Version

バージョンによってできる事がすごく左右される– リモートホストを管理をするなら、0.4.x以上が必須

• 最新は現在0.6.4• RHEL5.3は0.3.3, SLES11は0.4.6

– ローカルマシンの管理だけなら0.4以下でも何とかなる• 接続の問題• リモートの場合、SSHやTSL等で認証(ここの実装具合)

Page 20: Osc2009 Do Xen Hara

20

libvirt xen driver(local)

libvirt xenドライバ(ローカル)

libvirt

xend xenstored hypervisor

C, C#, Python, Java, Perl, Ruby etc…

Page 21: Osc2009 Do Xen Hara

21

libvirt xen driver(remote)

libvirt xenドライバ(リモート)

libvirt

xend xenstored hypervisor

C, C#, Python, Java, Perl, Ruby etc…

SSH, SASL…

libvirt

Page 22: Osc2009 Do Xen Hara

22

Sample

libvirt Python API Bindings

import libvirt

conn = libvirt.open(‘xen+ssh://[email protected]/’)

dom0 = conn.lookupByName("Domain-0")

print dom0.info()

Page 23: Osc2009 Do Xen Hara

23

Future

このlibvirtを使って開発していけば俺々仮想マシン管理ツールが作れます

– ポイント• ゲストOSのテンプレートを用意する

– 1らかインストールするのは面倒– 出来合いのものを用意してコピーするのが王道

» (ライセンスには注意)

• 出来れば共有ストレージは欲しい– マイグレーションやネットワーク構成を考えると必要になってくる– 最悪普通のサーバをiSCSI専用サーバに仕立て上げても良い

• ある程度以上の規模(ゲスト10台以上、とか)を想定するならVLANを切れるSWが欲しいところ

Page 24: Osc2009 Do Xen Hara

24

Existing product

機能面で参考になるプロダクト

– Karesansui•日本製のWebベース仮想マシン管理ツール

– CentOS5.3に対応– 自動プロビジョニングまではできない– libvirt使ってます

» 独自に0.4系をパッケージングしている

– Enomaly•同じくWebベースの管理ツール

– 対応ホストのバージョンが若干古い» Ubuntu8.0.4, CentOS5.2

– libvirt0.4系を自前で入れる必要あり

Page 25: Osc2009 Do Xen Hara

25

etc…

他には

– Oracle VM (ちょっと毛色が違うけど)

• Webベースの管理マネージャが秀逸•テンプレート管理/ストレージ/ネットワークの設定•システムとしては理想に近い• Oracle Enterprise Linuxが無償で使える

– RHEL,CentOSも使える– 別にOracleDBを使わなくても、純粋に仮想化ソリューションとして使える

– Eucalyptus•まさにEC2を自前でもてるソリューション

– ただし、まだ複数クラスタを持てないなど制約がある

Page 26: Osc2009 Do Xen Hara

26

Topic:2

今日のお話しその2

Page 27: Osc2009 Do Xen Hara

27

MultiNetwork

Xenで複雑なネットワークを構築してみる– Bonding

•「チーミング」とも言う•複数のNICを1つのNICで束ねる•主に信頼性の確保

– TagVLAN• IEEE 802.1Qで標準規格化されている• LANのMACフレームにVLAN番号(タグを挿入)し、論理的にネットワークの切り離し/接続を行える

•複数のSWをまたがったVLANを設定できる•物理的なポートの節約も出来る

Page 28: Osc2009 Do Xen Hara

28

MultiNetwork

参考–検証環境

• CentOS5.3 x86-64• Xen 3.1.2-128.1.10.el5

– Xen 3.2/3.3系ではネットワークの設定が若干異なる– 最新は3.4.x– 正直古い

– SLES11だと Xen3.3系が使える» 設定方法が異なる» YaSTでごにょごにょ出来るので多少楽が出来る

Page 29: Osc2009 Do Xen Hara

29

Bonding(Normal)

Bonding(普通の考え方)

Applic ation

マシン - 物理的な配線- 論理的な配線

Page 30: Osc2009 Do Xen Hara

30

Bonding(Xen)

Bonding(Xenで使う場合)

Domain -U

xenbr0

Domain-0

pbond0

bond0

Xen環境ではbond0 にあたるインタフェースは pbond0 に変更される

Page 31: Osc2009 Do Xen Hara

31

Merit

仮想化でBondingを使うメリット– 考え方は物理マシンで組むときと基本同じ– 冗長/信頼性– 勿論Domain-U内でBondingすることも出来る

– xenbrの前でbondingを組むと…• Domain-Uは、自分のNICがbondingの線であることを知らない

– つまり、極端な話modprobeする必要がない– 特殊なカーネルモジュールや設定が不要

Domain-U

なんか良く知らないけど、ネットワークが冗長構成らしいです

Page 32: Osc2009 Do Xen Hara

32

TagVLAN(Normal)

TagVLAN(普通の考え方)

VLAN10

20

20

30VLAN10

VLAN10, VLAN20

Page 33: Osc2009 Do Xen Hara

33

TagVLAN(Xen)

TagVLAN(Xenで繋ぐ場合)

Domain-Uはタグをまったく

意識しないで繋げる

でも物理NICから出るパケットにはタグがついている

Page 34: Osc2009 Do Xen Hara

34

TagVLAN(Xen)

TagVLAN(Xenで使う場合)

Domain -U

xenbr0

Domain-0

xenbr1xenbr3

eth0.10

eth0.20

eth0.30

eth0

仮想的に作り出したVLANにブリッジを割り振ってやる

Page 35: Osc2009 Do Xen Hara

35

Merit

仮想化でTagVLANを使うメリット– 考え方は物理マシンで組むときと基本同じ– 柔軟なネットワーク体系の構築– 使用者にVLANを意識させなくとも制御できる– 独立したネットワークを任意に増やすことが出来る

– xenbrの前でTagVLANを組むと…• Dom-Uは、自分のNICがVLANの線であることを知らない

– つまり、極端な話modprobeする必要がない– 特殊なカーネルモジュールや設定が不要

Domain-U

なんか良く知らないけど、ネットワークがVLANになってるらしい

です

Page 36: Osc2009 Do Xen Hara

36

Demon's gate

課題–管理/自動プロビジョニング環境開発で、一番の鬼門はネットワーク• DHCPで適当に払いだせる環境なら、まぁなんとか

– ゲストOSのIP/ホスト名は、ゲストOSが立ち上がった後でしか編集できない

•ゲストOSは雨の後のタケノコのように増えて行く…•そのうち追いきれなくなる

•やっぱ管理が重要– ネットワーク体系を色々切り離そうとすると、物理NICが足りなくなってくる

Page 37: Osc2009 Do Xen Hara

37

How should I do?

解決策の例– 決め打ちで凌ぐ

• ゲストマシンを作り出すタイミングで、ゲストのMACアドを控えておく• 控えた値をDHCPサーバに送り、MAC縛りでDHCPを払い出す

– ここまで頑張って自動化する

– VLANを使って良しなに振り分ける• ただしVLANのトランクポート追加や変更はネットワークの再起動が必要なので、設計段階から気をつける

• Domain-UレベルでのVLANはなるべくしない– 管理が更に煩雑になる

– プラスアルファ:信頼性を求められるケースはBondingを使う• ただしBondingもDomain-Uレベルではしない

– 問題があったときの切り分けが難しい

Page 38: Osc2009 Do Xen Hara

38

brings it together.

まとめ

• 自動化を効率よく実現するために– libvirtを巧く使う

• 段々成熟してきた• バージョンには十分注意

– 何が出来る/出来ないかを理解する– もしくは既にあるものを流用する/hackする

• 動的プロビジョニングをするだけじゃ意味がない– 管理超重要

• 自分が楽をするためにがんばる– ネットワーク

• 悩みどころ• ポリシー次第

Page 39: Osc2009 Do Xen Hara

39

Thanks!!

ご静聴ありがとうございました。

質問等あれば是非どうぞ!