Osc2009 Do Xen Hara

  • 3,226 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,226
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
24
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 仮想マシンの動的プロビジョニング& 複雑なネットワーク構築 Kazuhisa Hara 1
  • 2. Agenda アジェンダ 1. 仮想マシン提供自動化/管理するシステム を組むには? 1. 複雑なネットワークを構築する 2
  • 3. Virtualization…? おさらい – そもそもサーバ仮想化とは? • 1台のサーバコンピュータを、あたかも複数台のコンピュータである かのように論理的に分割し、それぞれに別のOSやアプリケーション ソフトを動作させる事 Linux Windows Windows Solaris 仮想化 3
  • 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… 4
  • 5. Main 今回のメインはXenです。 5
  • 6. Story Story 6
  • 7. Delusion 仮想化を使ってプライベートクラウドな環境を構築したいね – もっと言ってしまえば、AmazonEC2みたいなの 7
  • 8. For example Why ? – 例えば… • 社内で新しいプロジェクトが走り出した! • 検証/開発用にサーバが必要 • 物理的にサーバを発注したら最低数日、決済とか 色々考えると最悪数週間掛かることも… 8
  • 9. Model answers 仮想サーバのプールがあれば、数分~数時 間で簡単に提供できるよ コスト下がるよ! 仮想化いいよ!仮想化しよう!! 仮想化かわいいよ仮想化 9
  • 10. It tend to do… ここまでありがちな話 10
  • 11. Problem 課題 – もちろん簡単に仮想マシンを払いだす仕組みが必要 • 1個ずつ作成するのは非効率 – 例え作れても管理が大変 » 自動化できるものは自動化しよう 管理 • 特にOSS仮想化ソリューションはここが弱い – ロール管理 – 統合的な管理 – 容易なアクセス – ユーザアクション直結のソリューション – その他その他… 11
  • 12. Necessary 課題をクリアする為には? – 仮想マシン提供自動化/管理するシステムがまず必要 • 使えるものは使う • ないなら作る – ある程度狭い範囲とはいえ、アクセス権を配慮した ネットワーク構築が不可欠 • 『ネットワークの仮想化』とかどうなのよ • 仮想マシンのネットワークは、どうなっているのか? 12
  • 13. Will 自動化できるポータルが欲しい ポータル 利用者 所属  ▼ 利用者メールアドレス 利用期間 リソース確認 2009 ▼ 年 05 ▼ 月 20 ▼ 日 - 2009 ▼ 年 05 ▼ 月 30 ▼ 日 必要リソース OS 台数 メモリ ディスク 利用テンプレート CentOS5.3   ▼ 2 台 1000 M 10 G WebServer 選択       ▼ 台 1000 M 10 G 選択   ▼ 台 1000 M 10 G 選択 申請 ※プロビジョニング完了後に利用者/管理者にメール通知   (利用期間、アカウント名、中間サーバIPアドレス、ゲストOSのIPアドレス等) 13
  • 14. Topic:1 今日のお話し その1 14
  • 15. Means 何を使えば作れる? – Xen、KVMのツールはコマンドラインでも叩ける – xmlでゲストマシンの情報を定義 • Webサーバの裏でShellexecさせる? – それなら言語は特に問わない。Perl, PHP, Ruby ,Java… – でもShellexecは正直美しくない – 何よりホストマシンとWebサーバの切り分けが出来ない 実は標準ライブラリがある! – libvirt • これを使って自動プロビジョニング/管理ツールを作る 15
  • 16. libvirt libvirt – 平たく言うと、仮想化ホスト(≒ハイパーバイ ザ)とやり取りが出来るAPIライブラリ – 沢山の仮想マシンに対応 • Xen, QEMU, KVM, openVZ, VirtualBox etc… – 言語バインディング • C, C#, Python, Java, Perl, Ruby etc… • 標準APIはCとPython – セキュリティ認証 16 • SSH, TSL & X.509, SASL & kerberos
  • 17. Range libvirtで出来る範囲 – ホスト(Dom-0)の情報取得 – ゲスト一覧 – ゲストの操作 • 作る、消す、編集する、などなど – ネットワークの操作 – ストレージの操作 – virt-managerはこのライブラリを使っている – virshコマンドもこのライブラリを使っている 17
  • 18. virt-manager virt-manager – 確かに便利だけど、かゆいところに手が届かない – VirtualCenterほどの機能はまだない 18
  • 19. libvirt’s Version バージョンによってできる事がすごく左右される – リモートホストを管理をするなら、0.4.x以上が必須 • 最新は現在0.6.4 • RHEL5.3は0.3.3, SLES11は0.4.6 – ローカルマシンの管理だけなら0.4以下でも何とかなる • 接続の問題 • リモートの場合、SSHやTSL等で認証(ここの実装具合) 19
  • 20. libvirt xen driver(local) libvirt xenドライバ(ローカル) C, C#, Python, Java, Perl, Ruby etc… libvirt xend xenstored hypervisor 20
  • 21. libvirt xen driver(remote) libvirt xenドライバ(リモート) SSH, SASL… C, C#, Python, Java, Perl, Ruby etc… libvirt libvirt xend xenstored hypervisor 21
  • 22. Sample libvirt Python API Bindings import libvirt conn = libvirt.open(‘xen+ssh://root@remote.domain/’) dom0 = conn.lookupByName("Domain-0") print dom0.info() 22
  • 23. Future このlibvirtを使って開発していけば 俺々仮想マシン管理ツールが作れます – ポイント • ゲストOSのテンプレートを用意する – 1らかインストールするのは面倒 – 出来合いのものを用意してコピーするのが王道 » (ライセンスには注意) • 出来れば共有ストレージは欲しい – マイグレーションやネットワーク構成を考えると必要になってくる – 最悪普通のサーバをiSCSI専用サーバに仕立て上げても良い • ある程度以上の規模(ゲスト10台以上、とか)を想定するならVLAN 23 を切れるSWが欲しいところ
  • 24. Existing product 機能面で参考になるプロダクト – Karesansui • 日本製のWebベース仮想マシン管理ツール – CentOS5.3に対応 – 自動プロビジョニングまではできない – libvirt使ってます » 独自に0.4系をパッケージングしている – Enomaly • 同じくWebベースの管理ツール – 対応ホストのバージョンが若干古い » Ubuntu8.0.4, CentOS5.2 – libvirt0.4系を自前で入れる必要あり 24
  • 25. etc… 他には – Oracle VM (ちょっと毛色が違うけど) • Webベースの管理マネージャが秀逸 • テンプレート管理/ストレージ/ネットワークの設定 • システムとしては理想に近い • Oracle Enterprise Linuxが無償で使える – RHEL,CentOSも使える – 別にOracleDBを使わなくても、純粋に仮想化ソリューショ ンとして使える – Eucalyptus • まさにEC2を自前でもてるソリューション – ただし、まだ複数クラスタを持てないなど制約がある 25
  • 26. Topic:2 今日のお話し その2 26
  • 27. MultiNetwork Xenで複雑なネットワークを構築してみる – Bonding • 「チーミング」とも言う • 複数のNICを1つのNICで束ねる • 主に信頼性の確保 – TagVLAN • IEEE 802.1Qで標準規格化されている • LANのMACフレームにVLAN番号(タグを挿入)し、論 理的にネットワークの切り離し/接続を行える • 複数のSWをまたがったVLANを設定できる • 物理的なポートの節約も出来る 27
  • 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でごにょごにょ出来るので多少楽が出来る 28
  • 29. Bonding(Normal) Bonding(普通の考え方) Application マシン - 物理的な配線 - 論理的な配線 29
  • 30. Bonding(Xen) Bonding(Xenで使う場合) Domain-U xenbr0 pbond0 bond0 Domain-0 Xen環境ではbond0 にあたるインタ フェースは pbond0 に変更される 30
  • 31. Merit 仮想化でBondingを使うメリット – 考え方は物理マシンで組むときと基本同じ – 冗長/信頼性 – 勿論Domain-U内でBondingすることも出来る – xenbrの前でbondingを組むと… • Domain-Uは、自分のNICがbondingの線であることを知らない – つまり、極端な話modprobeする必要がない – 特殊なカーネルモジュールや設定が不要 なんか良く知らないけど、 ネットワークが冗長構成らしいです 31 Domain-U
  • 32. TagVLAN(Normal) TagVLAN(普通の考え方) VLAN10 20 30 VLAN10, VLAN20 VLAN10 20 32
  • 33. TagVLAN(Xen) TagVLAN(Xenで繋ぐ場合) Domain-Uはタグをまった く 意識しないで繋げる でも物理NICから 出るパケットには タグがついている 33
  • 34. TagVLAN(Xen) TagVLAN(Xenで使う場合) eth0.10 xenbr0 eth0 eth0.20 Domain-U xenbr1 eth0.30 xenbr3 Domain-0 仮想的に作り出し たVLANにブリッジ を割り振ってやる 34
  • 35. Merit 仮想化でTagVLANを使うメリット – 考え方は物理マシンで組むときと基本同じ – 柔軟なネットワーク体系の構築 – 使用者にVLANを意識させなくとも制御できる – 独立したネットワークを任意に増やすことが出来る – xenbrの前でTagVLANを組むと… • Dom-Uは、自分のNICがVLANの線であることを知らない – つまり、極端な話modprobeする必要がない – 特殊なカーネルモジュールや設定が不要 なんか良く知らないけど、 ネットワークがVLANになってるらしい です 35 Domain-U
  • 36. Demon's gate 課題 – 管理/自動プロビジョニング環境開発で、一番 の鬼門はネットワーク • DHCPで適当に払いだせる環境なら、まぁなんとか – ゲストOSのIP/ホスト名は、ゲストOSが立ち上がった後で しか編集できない • ゲストOSは雨の後のタケノコのように増えて行く… • そのうち追いきれなくなる • やっぱ管理が重要 – ネットワーク体系を色々切り離そうとすると、物理NICが 足りなくなってくる 36
  • 37. How should I do? 解決策の例 – 決め打ちで凌ぐ • ゲストマシンを作り出すタイミングで、ゲストのMACアドを控えておく • 控えた値をDHCPサーバに送り、MAC縛りでDHCPを払い出す – ここまで頑張って自動化する – VLANを使って良しなに振り分ける • ただしVLANのトランクポート追加や変更はネットワークの再起動が必 要なので、設計段階から気をつける • Domain-UレベルでのVLANはなるべくしない – 管理が更に煩雑になる – プラスアルファ:信頼性を求められるケースはBondingを使う • ただしBondingもDomain-Uレベルではしない – 問題があったときの切り分けが難しい 37
  • 38. brings it together. まとめ • 自動化を効率よく実現するために – libvirtを巧く使う • 段々成熟してきた • バージョンには十分注意 – 何が出来る/出来ないかを理解する – もしくは既にあるものを流用する/hackする • 動的プロビジョニングをするだけじゃ意味がない – 管理超重要 • 自分が楽をするためにがんばる – ネットワーク • 悩みどころ • ポリシー次第 38
  • 39. Thanks!! ご静聴ありがとうございました。 質問等あれば是非どうぞ! 39