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




               Kazuhisa Hara
                           1
Agenda



 アジェンダ

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

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



                      2
Virtualization…?


おさらい
   – そもそもサーバ仮想化とは?
      • 1台のサーバコンピュータを、あたかも複数台のコンピュータである
        かのように論理的に分割し、それぞれに別のOSやアプリケーション...
Virtualization Products

主なサーバ仮想化製品
   – VMWare
      • 市場を牽引
      • vSphere(ESX)
   – Hyper-V
      • Microsoft Windows2...
Main




       今回のメインはXenです。




                       5
Story




        Story


                6
Delusion

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




                                7
For example

Why ?
    – 例えば…
       • 社内で新しいプロジェクトが走り出した!
       • 検証/開発用にサーバが必要
       • 物理的にサーバを発注したら最低数日、決済とか
        ...
Model answers



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

                 コスト下がるよ!

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




 ...
It tend to do…




      ここまでありがちな話



                   10
Problem

課題
  – もちろん簡単に仮想マシンを払いだす仕組みが必要
     • 1個ずつ作成するのは非効率
          – 例え作れても管理が大変
             » 自動化できるものは自動化しよう



管理
...
Necessary

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

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


    – ある程度狭い範囲とはいえ、アクセス権を配慮した
...
Will

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


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

...
Topic:1




          今日のお話し
            その1




                   14
Means

何を使えば作れる?
   – Xen、KVMのツールはコマンドラインでも叩ける
   – xmlでゲストマシンの情報を定義
        • Webサーバの裏でShellexecさせる?
          – それなら言語は特...
libvirt

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

    – 沢山の仮想マシンに対応
          • Xen, QEMU, KVM, open...
Range

libvirtで出来る範囲
    – ホスト(Dom-0)の情報取得
    – ゲスト一覧
    – ゲストの操作
        • 作る、消す、編集する、などなど
    – ネットワークの操作
    – ストレージの...
virt-manager

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




                                ...
libvirt’s Version

バージョンによってできる事がすごく左右される
   – リモートホストを管理をするなら、0.4.x以上が必須
      • 最新は現在0.6.4
      • RHEL5.3は0.3.3, SLES11...
libvirt xen driver(local)

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


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



                      lib...
libvirt xen driver(remote)

libvirt xenドライバ(リモート)
                                                 SSH, SASL…

      C, C#...
Sample

 libvirt Python API Bindings


import libvirt

conn = libvirt.open(‘xen+ssh://root@remote.domain/’)

dom0 = conn.l...
Future



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

  – ポイント
     • ゲストOSのテンプレートを用意する
         – 1らかインストールするのは面倒
 ...
Existing product


機能面で参考になるプロダクト
    – Karesansui
       • 日本製のWebベース仮想マシン管理ツール
          – CentOS5.3に対応
          – 自動プロ...
etc…

他には
   – Oracle VM    (ちょっと毛色が違うけど)
       • Webベースの管理マネージャが秀逸
       • テンプレート管理/ストレージ/ネットワークの設定
       • システムとしては理想...
Topic:2




          今日のお話し
            その2




                   26
MultiNetwork


Xenで複雑なネットワークを構築してみる
    – Bonding
       • 「チーミング」とも言う
       • 複数のNICを1つのNICで束ねる
       • 主に信頼性の確保
    – ...
MultiNetwork



参考
    – 検証環境
       • CentOS5.3 x86-64
       • Xen 3.1.2-128.1.10.el5
          – Xen 3.2/3.3系ではネットワークの設...
Bonding(Normal)

Bonding(普通の考え方)
     Application




                   マシン   - 物理的な配線
                         - 論理的な配線
...
Bonding(Xen)

Bonding(Xenで使う場合)
    Domain-U




                xenbr0




                         pbond0
              ...
Merit


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


   – xenbrの前でbondingを組む...
TagVLAN(Normal)

TagVLAN(普通の考え方)


                  VLAN10   20   30




                                     VLAN10,
   ...
TagVLAN(Xen)

TagVLAN(Xenで繋ぐ場合)




Domain-Uはタグをまった
         く
  意識しないで繋げる

                    でも物理NICから
                ...
TagVLAN(Xen)

TagVLAN(Xenで使う場合)
                                          eth0.10




                                 xen...
Merit


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



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

解決策の例
  – 決め打ちで凌ぐ
      • ゲストマシンを作り出すタイミングで、ゲストのMACアドを控えておく
      • 控えた値をDHCPサーバに送り、MAC縛りでDHCPを払い出す
    ...
brings it together.

まとめ

• 自動化を効率よく実現するために
   – libvirtを巧く使う
      • 段々成熟してきた
      • バージョンには十分注意
          – 何が出来る/出来ないか...
Thanks!!




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

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




                             39
Upcoming SlideShare
Loading in …5
×

Osc2009 Do Xen Hara

3,680 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,680
On SlideShare
0
From Embeds
0
Number of Embeds
152
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Osc2009 Do Xen Hara

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

×