OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

3,109 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,109
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

  1. 1. 第4回 自作プライベートクラウド研究会 - Eucalyptus Deep Dive at GMO - 羽深 修 @habuka036 NTTデータ先端技術株式会社Japan Eucalyptus Users Group 2012/06/20
  2. 2. 自己紹介とか
  3. 3. 定番の自己紹介という名の宣伝●クラウドWatchにて「ユーカリプタス入 門」を連載中◇もう半年以上更新できてないけど...
  4. 4. 定番の自己紹介という名の宣伝●昨年5/25にImpress Japanから 「Eucalyptusで作るプ ライベートクラウド構 築」を出しました
  5. 5. 定番の自己紹介という名の宣伝●Eucalyptusのマシンイメージを配布する「マ シンイメージ工房」を運営しています ◇英語版を作成中...(っていうか翻訳が進んでない)●ちなみに... ◇CentOS 5.8/6.2, Ubuntu 11.10,12.04のイメージ が手元にありますが、更新できてません…。
  6. 6. Eucalyptusとは
  7. 7. 1) Eucayptusの現況● 本当にオープンソースなの? ◇ 誤解されているかもしれないれど、Eucalyptusはv1.0リリース後は 一環してオープンソース ◆ v3.0まではEnterprise版とOpenSource版の2系統があったのも事実 ◆ だけど、v3.1からは1本化するとのこと - ぶっちゃけ、リリース毎にマージするの大変だったらしい。v3系のリリースが約1年遅れ た理由の半分がマージの困難さっぽい。 ◇ v3系のOpenSource版は今度リリースされるv3.1● つまりv3系ってリリースされたの? ◇ Enterprise版(v3.0)はリリース済み ◆ Eucalyptus社のフォームで申し込んでメールか電話でやりとりすれば30日 体験版を貰えるよ。英語ができない私ですら貰えたよ。 ◇ OpenSource版(v3.1)はベータ版の状態 ◆ CommunityのVPであるGregさんが4月に「2、3ヶ月後には~」と言ってたの で、もうそろそろ● で、今日のDeep Diveの対象は? ◇ 一応v3.1βについて ◆ 一部v2系の頃の情報が混ってるかも…
  8. 8. 2) Eucayptusの概要 -1-● そもそも、どーゆー成り立ち? ◇ 大学の研究プロジェクトから生まれた ◆ 日本ではよく「学生コード」って言われてた。 - 他のIaaSのコードは学生コードじゃないと言い切れるの? (Wakame-VDCはイ イ) ◆ お世辞にも「綺麗」とか「読み易い」とは言えない - きっとEucalyptusは難読化が施されている ◇ Amazon EC2互換を目指して開発 ◆ EC2は2009-04-04版のAPIと互換を目指して - もちろん、今は一部2010-08-31とか2011-01-01とかとか ◆ S3とIAMはどのバージョンだろう? ◇ 現在はEucalyptus Systems Inc,という会社が開発 ◆ 当然ながら、最初の頃は会社の運営を軌道に乗せることが最優先で あったため、コミュニティ側へのサポートが十分ではなかった ◆ ビジネスもコミュニティもうまくやっていく必要があったので、 MartenをCEOに招聘 ◆ コミュニティの運営を活発にするためにGregをVPに招聘
  9. 9. 2) Eucayptusの概要 -2-● 一応「コンポーネントモデル」って昔言ってた● Eucalyptusの言う「コンポーネントモデル」って? ◇ 各コンポーネントは疎結合 ◇ つまり各コンポーネントはルールに従ってさえすれば別にEucalyptusじゃ なくても動くぜ ◆ 嘘じゃないよ ◇ じゃあ、その「ルール」って? ◆ DRY(違)だから、コードに書いてあるぜwww ◆ ソースコードのwsdlディレクトリ配下に定義があります。● つまりコンポーネントって? ◇ 後述するけど簡単に書くと以下があります ◇ ユーザからの命令を受け付けるクラウドコントローラ (CLC) ◇ ネットワーク機能を提供し、各ノード達に命令するクラスタコントローラ (CC) ◇ ハイパーバイザーを管理してインスタンスを起動するノードコントローラ (NC) ◇ EBS機能を提供するストレージコントローラ (SC) ◇ マシンイメージを管理するために必要なS3機能を提供するという重要な役 割の担っているのに、一人だけ略称がない Walrus
  10. 10. Eucalyptusのコンポーネント● Eucalyptusはメインとなる3つのコンポーネントとストレージ機 能を提供する2つのコンポーネントから構成されます● これら5つのコンポーネントをそれぞれの役割区分でFrontend, Zone, Nodeと表現します
  11. 11. クラウドコントローラ (CLC)●クラウドコントローラ(CLC)には主に以下 の役割があります ◇ ユーザアカウント の管理や認証 ◇ ユーザの要求を受 け付ける ◇ 受け付けた要求を クラスタコント ローラ(CC)に渡す ◇ 設定値やクラウド 内の情報をDBに格 納し管理 ◇ Web管理画面の提 供
  12. 12. クラスタコントローラ (CC)●クラスタコントローラ(CC)には主に以下の 役割があります ◇ CLCからの要求を受 けノードコント ローラ(NC)に処理 を要求する ◇ NCで起動している インスタンスの ネットワークを制 御 ◇ ユーザがインスタ ンスに接続する際 のPublicIPの提供 ◇ NCの空きリソース を監視
  13. 13. ノードコントローラ (NC)●ノードコントローラ(NC)には主に以下の役 割があります ◇ CCからの要求を受 け、Walrusからマ シンイメージを取 得 ◇ マシンイメージを キャッシュ ◇ インスタンスの起 動や停止、EBSボ リュームの取り付 けや取り外しなど の処理をハイパー バイザー(Xenおよ びKVM)に依頼
  14. 14. ストレージコントローラ (SC)●ストレージコントローラ(SC)には主に以下 の役割があります ◇ ボリュームの管 理 ◇ ボリュームから のスナップ ショットの管理 ◇ インスタンスに 対するボリュー ムの提供
  15. 15. Walrus●Walrusには主に以下の役割があります ◇ S3互換の大規模 ストレージ ◇ マシンイメージ の管理および提 供
  16. 16. 役割区分について● Frontendは、主にユーザからの要求を受け付ける機能を 持つコンポーネントの集合です ◇ そのため、CLC, CC, Walrusはユーザからアクセス可能なネッ トワークに配置されなければならない ◆ SCは直接はユーザと通信しない● Nodeは、その名のとおりノードコントローラの集合です● Zoneは、Nodeとそれらを管理するクラスタコントローラ とそのZoneに所属するストレージコントローラの集合で す ◇ マルチクラスタ構成が可能になったv1.6系からはクラスタ毎 にストレージコントローラを配置する構成が標準になりまし た ◇ ただし、アーキテクチャ的な仕様により、ストレージコント ローラはクラウドコントローラと通信可能なネットワークに 所属していなければなりません
  17. 17. ソースコードについて● 最新版はgithubにあります ◇ https://github.com/eucalyptus/eucalyptus`-- eucalyptus |-- clc CLCに関するコード |-- cluster CCに関するコード |-- devel 開発・デバッグ時のちょっとしたツール |-- extras 運用・監視系スクリプト(ganglia, nagios) |-- gatherlog ログ収集に関するコード…使ってる? |-- m4 autoconfのマクロ |-- net ネットワークまわりの関数(CCとNCが利用する) |-- node NCに関するコード |-- project eclipseのプロジェクトフォルダ? |-- storage ストレージやデータを扱う関数(NCが利用する) |-- tools 様々なスクリプト達 (仕分け前的な置き場) |-- util 様々な関数 (CC,NC,GLが利用する) `-- wsdl CC,NC,GLのWSDLファイル
  18. 18. ソースコードについて (余談)●よく「Eucalyptusってさー、節操なく色ん な言語のコードが混在しているよねー? m9(^Д ^)pgr」って言われるけど… ← Eucalyptus
  19. 19. ソースコードについて (余談)●よく「Eucalyptusってさー、節操なく色ん な言語のコードが混在しているよねー? m9(^Д ^)pgr」って言われるけど…●おっと、OpenNebulaの悪口はそこまでにし てもらおうか ← Eucalyptus OpenNebula →
  20. 20. 必要環境
  21. 21. まずはネットワークモード -1-●必要な環境は「ネットワークモード」と「どんな規 模を構築したいか?」によります●ネットワークモードには以下の4つがあります●SYSTEMモード ◇ 最小構成を作れるネットワークモードのうちの一つ ◇ 必要なハードウェアは最小で物理マシン1台のみ ◇ ただし、インスタンスに対するIPアドレスを付与する機 構がないため、DHCPサーバが必要●STATICモード ◇ 最小構成を作れるネットワークモードのうちの一つ ◇ 必要なハードウェアは最小で物理マシン1台のみ ◇ DHCPサーバは自前で起動するけども、事前にMACアドレ スとIPアドレスのペアを決めて設定ファイルに記述して おく必要あり
  22. 22. まずはネットワークモード -2-●MANAGEDモード ◇一番、Eucalyptusの機能を楽しめるネットワーク モード ◇必要なハードウェアは最小で物理マシン2台 ◇加えてこのネットワークモードの場合は、インテリ ジェンスなL2スイッチが必要 ◆ 無くてもこのモードは使えるけど、VLANの意味が…●MANAGED-NOVLANモード ◇ぶっちゃけて言うと、上のMANAGEDモードを使いた いけどVLANに対応したスイッチがないぜ、もしくは 「うちんとこのネットワーク、タグVLANを流せない ぜ」って人向け ◇今日の後半でのデモはこのモードでやります
  23. 23. マシンスペック -1-●CPUはXeonクラスで ◇ 「NC以外はそんなにCPU要らないんじゃないの?」って 言われるけど、CLCはユーザからの要求をさばくために CPUを使うし、CCはユーザとインスタンスの通信をさば くためにCPUを使うしで何だかんだ言ってどのコンポー ネントもCPUはあったほうがいい ◇ とは言え、動作確認や機能検証するだけならハイスペッ クなCPUじゃなくてもOK。ちなみに私はPentium Dとかで 動作確認することが多いです。 ◆ わが家はVT機能がついてるマシンは妻のウルトラブックのみで すよ●今日は(も)ターゲットは64bitです ◇ もちろん、Eucalyptusは32bitなマシンでも動くよ ◇ ちなみに「32bit環境のIaaSが欲しいの」っていう需要 あります?
  24. 24. マシンスペック -2-●メモリも積んでおこうね◇昔、CLCやCCを2GBytesなマシンで動かしたことある けど、息切れしちゃうから、まともに運用したかっ たらせめてCLCは4GBytes以上、CCは8GBytes以上 あったほうがいい。Walrusはマシンイメージの登録 時とかにガッツリとメモリを消費しちゃうから、ケ チっちゃ駄目よ。●ハードディスクが必要なのは以下◇NCはインスタンスで消費するし、マシンイメージの キャッシュでも消費する◇SCはEBSボリュームとスナップショットの利用具合◇Walrusはマシンイメージとキャッシュで消費◇実際に運用しだすと1桁TBじゃ足りな~いってなる
  25. 25. OS (Linux Distro) -1-●Eucalyptus社のサイトでバイナリが提供されて いるディストリビューションは以下 ◇RHEL/CentOS 5.x/6.x → 3.1 beta ◆ /etc/yum.repo.d/配下に設定すればyumでインストール可 能 ◆ 今日の後半のデモはこのyumでインストールする方法を紹 介します ◆ もしくはFastStartで (6/27提供予定らしい) ◆ http://www.eucalyptus.com/download/eucalyptus/centos ◇Ubuntu 10.04/12.04 → 3.1 beta ◆ add-apt-repositoryコマンドでレポジトリを追加したら apt-getでインストール可能 ◆ http://www.eucalyptus.com/download/eucalyptus/ubuntu
  26. 26. OS (Linux Distro) -2-◇Debian 6 → 2.0.x ◆ /etc/apt/sources.listにレポジトリを追加したらapt-get でインストール可能 ◆ http://www.eucalyptus.com/download/eucalyptus/debian◇Fedora 12~ → 2.0.x ◆ RHEL/CentOSと同じ ◆ http://www.eucalyptus.com/download/eucalyptus/fedora◇openSUSE 11.2 → 2.0.x ◆ zypperコマンドでレポジトリを追加したらzypperコマンド でインストール可能 (らしい) ◆ http://www.eucalyptus.com/download/eucalyptus/opensu se
  27. 27. そーいや Ubuntu と言えば…●Ubuntu 12.04 にはバイナリが含まれてない けど、オワコンだから? ◇Eucalyptusのサイトで提供されてるし、一方で 「Eucalyptus3のパッケージを12.10に入れよう ぜ」って提案があるし、オ、オワコンじゃない んじゃないかな~ (;´Д`)y─┛~~ ◆ https://blueprints.launchpad.net/ubuntu/+spec/se rvercloud-q-eucalyptus
  28. 28. ら、LiveDVD... ____________ ヾミ || || || || || || || ,l,,l,,l 川〃彡| V~~-山┴""~ ヾニニ彡| 出す・・・・・・! / 二ー―二 ヾニニ┤ 出すが・・・ <-.,  ̄ ̄ _,,,..-‐、 〉ニニ| 今回 まだ その時と場所の /"-ニ,‐l l`__ニ-‐""` /ニ二| 指定まではしていない | ===、! `=====、 l =lべ=|. | `ー゚‐/ `ー‐゚― l.=lへ|~| そのことを |`ー‐/ `ー―― H<,〉|=| どうか諸君らも | / 、 l|__ノー| 思い出していただきたい. | /`ー ~ ′ \ .|ヾ.ニ|ヽ |l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・. | ≡ | `l \__ 我々がその気になれば !、 _,,..-′ /l | ~ LiveDVDのリリースは‐" ̄| `iー-..,,,_,,,,,....-‐" / | | 10年後 20年後ということも -―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・! | | \ / | |
  29. 29. 今日の構成
  30. 30. コンポーネントの配置上の注意点● 利用者から届く場所へ配置するもの ◇ CLC → 利用者がAPIを発呼する ◇ CC → インスタンスにアクセスする ◇ Walrus → 利用者がマシンイメージを登録する● コンポーネント間の通信 ◇ CLC <-> CC → 利用者からのAPI伝達/各CCのリソース報告 ◇ CC <-> NC → CLCからのAPI伝達/NCのリソース報告 ◇ NC <-> Walrus → マシンイメージの取得 ◇ CC <-> SC → EBS機能に対する命令など ◇ NC <-> SC → EBS ボリュームの操作● コンポーネントの同居 ◇ CLCとWalrus → EC2 APIの発呼とS3機能の利用度がマシンス ペック的にさばける範囲ならば同居でも大丈夫 ◇ CCとSC → ネットワークの転送量とEBS機能の利用度がマシン スペック的にさばける範囲ならば同居でも大丈夫
  31. 31. 今日の構成大風呂敷を広げると畳めなくなるので…●以下の3台で構成◇CLCとWalrus同居 ... 1台◇CCとSC同居 ........ 1台◇NC ................ 1台 eth0 euca-clc euca-cc euca-nc1 eth1HA構成やマルチクラスタ構成はまたいつか…
  32. 32. 今日のゴール今日のインストールデモを見た皆さんに「今日帰宅してから、もしくは明日にでも『GMOクラウド』上にEucalyptusをインストール『してみたいなぁと思わせる』」ことが今日の目的です
  33. 33. 今日のゴール今日のインストールデモを見た皆さんに「今日帰宅してから、もしくは明日にでも『GMOクラウド』上にEucalyptusをインストール『してみたいなぁと思わせる』」ことが今日の目的です
  34. 34. 今日のゴール今日のインストールデモを見た皆さんに「今日帰宅してから、もしくは明日にでも『GMOクラウド』上にEucalyptusをインストール『してみたいなぁと思わせる』」ことが今日の目的です
  35. 35. 今日のゴール今日のインストールデモを見た皆さんに「今日帰宅してから、もしくは明日にでも『GMOクラウド』上にEucalyptusをインストール『してみたいなぁと思わせる』」ことが今日の目的です浜田さんから「思わせるだけじゃ駄目なんだよ」って怒られる… ((( ;゚Д゚)))
  36. 36. インストールから動作確認まで Step by Step
  37. 37. 注意!●これ以降のデモですが、当日は失敗しまし た。もちろん色々な要因があるのですが、 とりあえず情報の一つとして公開します。 というのも、以降の方法で動く環境を構築 できる可能性があるためです。●それとは別に、GMOクラウド上で環境を作る ためには、もうひと工夫必要かもしれない ことが判明しています。その方法について はいつかどこかでリベンジ編として公開し ます。
  38. 38. インストールと設定 -1-●レポジトリの設定 ◇以下の内容を /etc/yum.repos.d/eucalyptus.repoとして保存[eucalyptus]name=Eucalyptus 3.1 betabaseurl=http://downloads.eucalyptus.com/software/eucalyptus/nightly /3.1/centos/$releasever/$basearchgpgcheck=0[euca2ools]name=Euca2ools 2.1baseurl=http://downloads.eucalyptus.com/software/euca2ools/2.1/cent os/$releasever/$basearchgpgcheck=0
  39. 39. インストールと設定 -2-●epelの追加 ◇ 以下を実行してepelのレポジトリを追加rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/5/i386/epel-release- 5-4.noarch.rpm●Xenのインストール ◇ NCで以下を実行し、Xen関連のパッケージをインストー ルyum install kernel-xen.x86_64 xen.x86_64 xen-libs.x86_64●ループバックデバイスの追加 ◇ SCとNCで以下を実行し、ループバックデバイスの数を増 やしておくecho options loop max_loop=256 > /etc/modprobe.d/loopfor i in `seq 8 255`; do echo loop${i} >> /etc/udev/makedev.d/50- udev.nodes; donemodprobe loop
  40. 40. インストールと設定 -3-●Xenの設定 ◇以下を実行してNCのXenをlibvirtから利用でき るようにするsed -i -e s/#(xend-http-server no)/(xend-http-server yes)/ /etc/xen/xend-config.sxpsed -i -e s/#(xend-address localhost)/(xend-address localhost)/ /etc/xen/xend-config.sxp
  41. 41. インストールと設定 -4-● CLCとWalrusのインストール ◇ 以下を実行してCLC役のマシンにCLCとWalrusをインストールyum install eucalyptus-cloud eucalyptus-walrus● CCとSCのインストール ◇ 以下を実行してCC役のマシンにCCとSCをインストールyum install eucalyptus-cc eucalyptus-sc● NCのインストール ◇ 以下を実行してNC役のマシンにNCをインストールyum install eucalyptus-ncchkconfig libvirtd offreboot
  42. 42. インストールと設定 -5-● CCのeucalyptus.confで以下のパラメータを設定VNET_MODE="MANAGED-NOVLAN"VNET_PRIVINTERFACE="eth1"VNET_PUBINTERFACE="eth0"VNET_PUBLICIPS="10.100.100.100-10.100.100.200"VNET_SUBNET="192.168.0.0"VNET_NETMASK="255.255.0.0"VNET_ADDRSPERNET="64"VNET_DNS="8.8.8.8"● NCのeucalyptus.confで以下のパラメータを設定VNET_MODE="MANAGED-NOVLAN"VNET_PUBINTERFACE="eth1"
  43. 43. インストールと設定 -6-● CLCでDBの初期化を実施してCLCとWalrusを起動euca_conf --initialize/etc/init.d/eucalyptus-cloud start● CCでCCとSCを起動/etc/init.d/eucalyptus-cc start/etc/init.d/eucalyptus-cloud start● NCを起動/etc/init.d/eucalyptus-nc start
  44. 44. インストールと設定 -7-● Walrusの登録 (以下をCLCで実行)euca_conf --register-walrus --partition walrus --host 157.7.160.191 --component walrus● CCの登録 (以下をCLCで実行)euca_conf --register-cluster --partition jp-east-1a --host 172.16.6.193 --component cc-172.16.6.193● SCの登録 (以下をCLCで実行)euca_conf --register-sc --partition jp-east-1a --host 172.16.6.193 --component sc-172.16.6.193● NCの登録 (以下をCCで実行)euca_conf --register-nodes "172.16.6.194"
  45. 45. 動作確認 -1-● 証明書類の取得mkdir -p .euca/admin/keypairseuca_conf --get-credentials .euca/euca2-admin-x509.zipcd .euca/admin/unzip ../euca2-admin-x509.zip● AZの確認. eucarceuca-describe-availability-zones verbose● マシンイメージの登録wget http://eucalyptus.machine-image.com/downloads/CentOS-5.6- x86_64-Mini-20110829.tar.bz2tar -xjvf CentOS-5.6-x86_64-Mini-20110829.tar.bz2cd CentOS-5.6-x86_64-Mini-20110829/./register.sh
  46. 46. 動作確認 -2-● キーペアの登録euca-add-keypair key01 > ~/.euca/admin/keypairs/key01.pemchmod 400 ~/.euca/admin/keypairs/key01.pem● インスタンスの起動euca-run-instances -k key01 emi-598530F1watch -d euca-describe-instances i-96A240E5● セキュリティグループの設定euca-authorize -P tcp -p 22 -s 0.0.0.0/0 default● 接続ssh -i ~/.euca/admin/keypairs/key01.pem 10.100.100.100
  47. 47. トラブルシューティング
  48. 48. 構成や設定でのチェックポイント● 混乱しがちなのはCCとNCでのVNET_PUBINTERFACEと VNET_PRIVINTERFACEの値 ◇ CCではクラウド外へ通信できるNIC──つまり、インスタンスの PublicIPのアドレスを持つNICがVNET_PUBINTERFACEとなり、NCと通 信するNICがVNET_PRIVINTERFACEになります。 ◇ 一方NCではCCと通信するNICがVNET_PUBINTERFACEとなり、 VNET_PRIVINTERFACEの設定値は使いません。 ◆ eucalyptus.confのVNET_PUBINTERFACEのコメントには「CCと同じ値を設定 してね」とか紛らわしいことが書いてあるけど…● 「SCはCCおよびNCとだけ通信できればいい」と思われがちだが、 v2.0.xまではCLCとも通信できないと駄目です ◇ DBからのデータの読み書きを実はDBと直接やっているっぽい ◇ v3.xで改善されたのかしら?● eucalyptus.confのほとんどのパラメータはCCやNC向けで、CLC が参照する値はほとんどないです ◇ たまに、VNET_PUBLICIPSの値をCLCのeucalyptus.confで設定してし まう間違いがあるが、設定すべきなのはCCのeucalyptus.conf
  49. 49. OS設定での留意点●SELinuxはoffってね ◇getenforceの結果がDisabledじゃなかったら setenforce 0を実行●iptablesはoffってね ◇Eucalyptusが設定/起動するiptables以外はなるべ く止めてね●時刻同期は必須 ◇今日みたいに仮想化の上で構築するのではなく、普 通は物理上で構築すると思うけど、時刻同期は忘れ ちゃダメ●MTAは使えるように設定してね ◇今日は時間の都合で省いたけど、本当はCLC上にMTA を起動させたほうがいいです
  50. 50. トラブル時の解決方法● ディスクの空き容量を確認する ◇ 各物理マシンにログインしたら、まず先にこれを見たほうがいい。(中井さんの書籍にも 書いてある)● 各コンポーネントのプロセスが動いているか確認する● 各コンポーネントのポートがListenになっているか確認する● ログを見る ◇ 各コンポーネントの/var/log/eucalyptus/配下のログファイルを見る ◇ 各マシンのsyslogを見る● 以下のコマンドを実行して各種情報を確認する ◇ euca-describe-availability-zones verbose ◇ euca_conf --list-nodes ◇ euca-describe-availability-zones coredump ◇ ifconfig -a ◇ ip addr show ◇ brctl show ◇ iptables-save -t nat ◇ iptables-save -t filter● tcpdumpでパケットキャプチャも (後日追記) ◇ というのも当日のデモでCCとNC間の通信が疎通できているかを確かめるために、息を吐く ようにtcpdumpを叩いてましたwww
  51. 51. Eucalyptus Q&A
  52. 52. 当日の質問の様子 -1-●tagVLANのついたパケットってEucalyptusの 外に流れたりします? ◇いえ、tagVLANのついたパケットはCC<->NC間し か流れません。 ◇というのも、あくまでもCC<->NC(インスタンス) 間のネットワークを、セキュリティグループお よびユーザ毎に分離するために使っているから です。
  53. 53. 当日の質問の様子 -2-●HW構成でネットワークの帯域について言及が無かっ たけど、1Gbpsでも足りますか? ◇ あ…、すっかり忘れてました。経験則では、CLC1台、 CC1台、NC15台ぐらいの構成で、NWの帯域が1Gbpsでも何 とかなってます。 ◇ ただし、それ以上の台数で構成した場合は心許ないかも です…。●bondingとかで束ねたほうがいいですか? ◇ もちろん、そうできるのであれば、そのほうが良いです。 もっとも1Gbpsを10Gbpsにするほうが楽でいいですよ。 あとは構成を工夫するとか──例えばNCはWalrusからマ シンイメージをダウンロードするときに帯域を圧迫する けど、NC<->Walrus間を独立セグメントにするという方 法で負荷を分散できます。(まぁ、構成がややこしくな るので、ちょっとシンドイですけどね)
  54. 54. 当日の質問の様子 -3-●色々なIaaSを管理するのってどんなのがあ ります?◇あまり詳しくはないですが、個人的に気にして いるものとしては以下の2つです。◇Aeolus ◆ http://www.aeolusproject.org/◇Scalr ◆ http://scalr.net/
  55. 55. フリートーク
  56. 56. 参考情報
  57. 57. 使っているフォント●タイトルとか◇しねきゃぷしょん ◆ http://chiphead.jp/font/htm/cinecaption.htm●本文とか◇ゆたぽん(コーディング) ◆ http://net2.system.to/pc/font.html●箇条書きの記号◇こくばん ◆ http://falseorfont.web.fc2.com/●図形の中とか◇たぬき油性マジック
  58. 58. 参考情報 -1-●Eucalyptus Systems, Inc. ◇http://www.eucalyptus.com●オープンソース版のサイト ◇http://open.eucalyptus.com●日本 Eucalyptus ユーザ会 ◇http://eucalyptus-users.jp●日本 Eucalyptus ユーザ会の ML ◇http://ml.eucalyptus- users.jp/mailman/listinfo/eucalyptus-users ◆ 気軽に質問してください●Twitter ◇@eucalyptuscloud ◇@jEucalyptusUG
  59. 59. 参考情報 -2-● Eucalyptusではじめるプライベートクラウド構築 ◇ http://www.impressjapan.jp/books/3025 ◇ 正誤表 http://bit.ly/qvGZAP● ユーカリプタス入門 (クラウドWatchで連載中) ◇ 日本語版 http://cloud.watch.impress.co.jp/docs/column/eucalyptus ◇ 英訳版 http://bit.ly/qr4gFH● データセンター完全ガイド 2011年 冬号 ◇ http://t.co/5UFCdN0● tAWS Tanacasino (利用者用GUIクライアント) ◇ http://sourceforge.jp/projects/eclipse-aws/ ◆ Amazon EC2やOpenStackでも使えます● マシンイメージ工房 ◇ http://eucalyptus.machine-image.com/
  60. 60. 参考情報 -3-●中井さんの名著◇プロのための Linuxシステム構築・運用技術◇プロのための Linuxシステム・ネットワーク管 理技術◇プロのための Linuxシステム・10年効く技術
  61. 61. v2.0.x系の Deep Dive● 以降の情報は2011/11/21に行なわれた、国立情報学研究所のトップエ スイー教育センターのセミナーで使用した資料を一部書き換えたもの です。● 本資料をよりよく理解したい方は以下を参照してください。(アカウン トの登録が必要ですが、無料です) ◇ IaaSクラウドを支えるサーバ・インフラ技術を学ぶハンズオンセミナー 第 一部(その1)「Eucalyptusとedubase Cloud」 ◆ http://stream.edubase.jp/contents/view/571# ◇ IaaSクラウドを支えるサーバ・インフラ技術を学ぶハンズオンセミナー 第 一部(その2)「edubase CloudによるIaaSインフラ活用演習」 ◆ http://stream.edubase.jp/contents/view/572# ◇ IaaSクラウドを支えるサーバ・インフラ技術を学ぶハンズオンセミナー 第 二部(その1)「IaaSクラウドを支えるサーバ・インフラ技術(講義)」 ◆ http://stream.edubase.jp/contents/view/598# ◇ IaaSクラウドを支えるサーバ・インフラ技術を学ぶハンズオンセミナー第 二部(その2)「IaaSクラウドを支えるサーバ・インフラ技術(講義)」 ◆ http://stream.edubase.jp/contents/view/599#
  62. 62. ユーザの登録● Eucalyptusを利用するためには何よりも最初にユーザを登録しないといけません ◇ もちろん、最初にシステムが作成するユーザ「admin」で利用し続けることも可能ですが、複数の利用者 で利用する場合に単一ユーザを共有するのは好ましくありません● ユーザを登録するには以下の3つの方法があります ◇ CLC上で管理コマンド「euca-add-user」で登録 ◇ Eucalyptusの管理者がWeb管理画面で登録 ◇ Eucalyptusを利用したいユーザがWeb管理画面でユーザ登録を申請 ◇ IAMを利用して管理するコマンドで登録管理者が登録利用者が申請
  63. 63. イメージの作成 -1-● Eucalyptusでインスタンスを起動するためには、まずマシンイ メージを作成して登録する必要があります ◇ 一般ユーザはカーネルイメージやRAMディスクイメージを登録でき ないため、一般的には管理者が登録したマシンイメージを利用しま す● 登録するためのマシンイメージを作成する方法は色々な方法が ありますが、手っ取り早い方法は以下の2つのサイトから入手す る方法があります ◇ Eucalyptusの公式サイトから入手 http://open.eucalyptus.com/wiki/EucalyptusUserImageCreatorGu ide ◇ マシンイメージ工房から入手 http://eucalyptus.machine-image.com● 入手したマシンイメージはEuca2oolsのコマンドeuca-bundle- imageとeuca-upload-bundleとeuca-registerを実行して登録し ます ◇ もちろんEuca2oolsを使わずに他のツールやAPIを直接叩いて登録す ることも可能です
  64. 64. イメージの作成 -2-●マシンイメージのバンドルの仕組み 「バンドル」にはイメージファイルをバンドルする euca-bundle-imageコマンドと、稼動しているLinux をバンドルする──つまりインスタンスを保存する euca-bundle-volコマンドの2つがあります
  65. 65. イメージの作成 -3-● euca-bundle-imageはイメージファイルをtar+gzで圧縮し、X509 証明書で暗号化し、10MB毎に分割し、マシンイメージに関する 情報を記述したマニフェストファイルを生成します ◇ euca-bundle-volは空のイメージファイル(ext3フォーマット)を作 成し、物理ディスクのデータをイメージファイルにコピーし、 euca-bundle-imageと同じ処理を行ないます ◇ 作成できるイメージファイルは最大で10GBまでです ◇ Euca-bundle-volは--no-inheritオプションが指定されない限り、 メタデータからインスタンス情報を取得します。これはマニフェス トを生成する際にインスタンスの情報を継承するためです。そのた めインスタンスでない環境、たとえば物理マシン上でeuca-bundle- volを実行する場合は—no-inheritオプションを指定します ◇ 暗号化処理では圧縮されたイメージファイルをAES-128-CBCという 方式で暗号化します ◇ バンドルではインスタンスがメタデータを取得する場合を除き、 Eucalyptusにはアクセスしません
  66. 66. イメージ登録 -1-●マシンイメージのアップロードの仕組み マシンイメージをeuca-upload-bundleでWalrusに アップロードする際は、まずeuca-upload-bundleの オプションで指定されたバケット名が既にWalrusに 存在するか否かをチェックします。指定されたバ ケットが既に存在し、アクセス権限があれば処理を 継続しますが、アクセス権限がない場合はエラーに なり処理が中断します。なお、指定されたバケット が存在しない場合はバケットを作成します。 バケットの準備が整ったら、まずマニフェスト ファイルをアップロードし次に分割されたファイル をアップロードします。 ちなみに、マシンイメージのアップロードではEC2 APIは使わず、S3 APIのみ使用します。
  67. 67. イメージ登録 -2-● マシンイメージの登録の仕組み マシンイメージの登録にはeuca-registerコマンドを使用しEC2 APIのRegisterImageを発呼します。Eucalyptusは指定されたマ ニフェストに従って、アップロードされている分割マシンイ メージの整合性チェックを行ないます。チェックの結果に問題 がなければ分割マシンイメージを結合→複号→展開という処理 を行ない、キャッシュファイルとして素のマシンイメージを Walrusに保持します。 なお、このキャッシュファイルを作成する際に、Web管理画面 の「Walrus Configuration」の項目「Space reserved for unbundling images (MB)」に設定されている値(デフォルト値 は30720MB)をチェックし、キャッシュファイルが消費している ディスクサイズがその値以上であれば古いキャッシュファイル を削除します。 ちなみに、Walrusがキャッシュファイルを作成/保持するタイ ミングには、このRegisterImageが発呼された場合やもしくはイ ンスタンス起動時にWalrusにキャッシュファイルが存在しない 場合などがあります。
  68. 68. インスタンスの起動処理 -概要-● インスタンスの起動処理の流れ ユーザがインスタンスを起動した際の各 コンポーネント間の処理のおおまかな流れ は以下のようになっています。 1. ユーザがCLCにインスタンスの起動を要求 2. CLCがCCにインスタンスの起動を要求 3. CCは起動スケジュールと空きリソース具合によっ てインスタンスを起動するNCを選定し、選定した NCにインスタンスの起動を要求 4. NCは自身のキャッシュを確認し、キャッシュが存 在しない場合はWalrusからマシンイメージを取得。 キャッシュが存在する場合はキャッシュをコピー 5. NCはマシンイメージからインスタンスを起動 6. 起動したインスタンスはCCで起動しているDHCP サーバからIPアドレスを取得 この流れに沿って、各コンポーネント上 での処理を説明していきます。
  69. 69. インスタンスの起動処理 -1-● ユーザがCLCにインスタンスの起動を要求 CLCはユーザからのインスタンス起動の要 求を受けつけると以下のチェックを行ない ます。 ◇ ユーザの正当性をチェック ◇ 起動要求の内容の正当性をチェック ◇ 起動するインスタンスに見合ったリソースの空 きに関するチェック リソースの空きは、指定されたVM Types の空きがあるか、利用可能なPublicIPの空 きがあるかなどをチェックします。チェッ クした結果がエラーの場合はユーザにエ ラーを返し、問題がなければ次の処理へと 進みます。 CLCは自身のクラウドにおけるリソースの 空き状況を把握するために20秒毎に各CCに リソース情報の問い合わせを行っており、 CCは自身のクラスタにおけるリソースの空 き状況を把握するために6秒毎に各NCに対し てリソース状況の確認を行なっています。
  70. 70. インスタンスの起動処理 -2-● CLCがCCにインスタンスの起動を要求 CLCがCCにインスタンスの起動を要求する際に以下の情報を渡します。 ◇ マシンイメージなどの情報 ◇ インスタンスタイプ ◇ キーペアの情報 ◇ セキュリティグループなどの情報 CCは各NCのリソース状況やEucalyptusの設定値に従いインスタンスを起動するNCを選択し、CLCにはプライ ベートIPとMACアドレスとNCの情報などを返します。CCから情報を受け取ったCLCはパブリックIPの割り当て をCCに要求します。 なお、CCがNCを選択する際にはeucalyptus.confに設定されているSCHEDPOLICYに従います。SCHEDPOLICYに 設定できる値はGREEDYとROUNDROBINとPOWERSAVEがあります。 GREEDYは1つめのNCのリソースが枯渇するまでそのNCでインスタンスを起動し、リソースが枯渇したら次の NCを使うようなスケジュールポリシーです。ROUNDROBINは各NCで順番にインスタンスを起動していくスケ ジュールポリシーで、Eucalyptusではこれがデフォルト値です。POWERSAVEはインスタンスが起動していない NCを停止させ、リソースが必要になったらWake-on-LANでNCを起動させるスケジュールポリシーですが、これ はUbuntuでのみ動作します。
  71. 71. インスタンスの起動処理 -3-● CCがNCにインスタンスの起動を要求 CCはNCにインスタンスの起動要求を行なう 前処理として、当該セキュリティグループに 関する仮想ネットワークが存在するか否かを チェックし、もし該当する仮想ネットワーク が存在しない場合は以下のように仮想ブリッ ジやVLANデバイスを作成します。VLANについ ては中井さん書籍「プロのためのLinuxシス テム構築・運用技術」を参考にしてください。 仮想ネットワークを作成し、CCがNCにイン スタンスの起動を要求する際には以下の情報 を渡します。 ◇マシンイメージに関する情報 ◇インスタンスタイプ ◇キーペアの情報 ◇タグVLANのIDとPrivateIP用のMACアドレス NCにインスタンス起動要求が受け入れられ たら、CCはCLCから受け取ったPublicIPを PrivateIPと関連付けるルールをiptablesに 設定します。一方、命令を受け取ったNCは起 動するインスタンス分のリソースを自身の空 きリソースから減じて次の処理に進みます。
  72. 72. インスタンスの起動処理 -4-● NC上でのマシンイメージ処理 NCはインスタンスの起動要求を受け付けたら、要求され たマシンイメージが自身のキャッシュに存在するかチェッ クします。マシンイメージがキャッシュ上に存在しない場 合はWalrusから以下のデータをダウンロードします。 ◇マシンイメージ(EMI,EKI,ERI)のマニフェストファイル ◇マシンイメージ(EMI,EKI,ERI) Walrusからマシンイメージをダウンロードする際、 Walrus上に復号されたマシンイメージがキャッシュされて いない場合はWalrus上で復号処理が実施され、NCは復号処 理が終るまでダウンロード処理を(10回まで)リトライし続 けます。 マシンイメージがダウンロードされたら、NCはインスタ ンスを起動する前にダウンロードしたマシンイメージをNC 上のキャッシュに登録します。もしNC上のキャッシュが eucalyptus.confのNC_CACHE_SIZEで指定した値に達した場 合は古いキャッシュファイルから削除され、新しいマシン イメージがキャッシュに加えられます。 もしマシンイメージがNCのキャッシュ上に存在する場合 は、Walrusからはマニフェストファイルのみダウンロード され、NC上のキャッシュファイルの完全性をチェックしま す。キャッシュファイルが破損および改竄されていない場 合はキャッシュからインスタンスデータの格納場所にコ ピーされます。
  73. 73. インスタンスの起動処理 -5-● NCでのインスタンス起動処理 NCはマシンイメージの処理が終ったのち、キーペアのSSH公開鍵をマ シンイメージ(EMI)の/root/.ssh/authorized_keysに追加します。 次に、NCはswapディスクとephemeralディスクの準備を行ないます。 このときNCはswapおよびephemeralディスクをddコマンドでraw形式な ファイルとして作成を行ないます。なお、このときにephemeralディス クは数GBから数十GBのサイズになるため、処理に時間がかかります。 インスタンスデータの格納場所にこれら各種ファイルが準備できた ら、NCはlibvirtで起動するためのxmlファイル(libvirt.xml)を生成し、 それを以ってlibvirtにインスタンスの起動を命令します。● インスタンス上での起動処理 インスタンス上で起動処理が始まる頃にはCLCは既にインスタンスの 状態をpendingからrunningに遷移させています なお、このときインスタンス自身はまだ起動処理中ですので、CLC上 でrunningに遷移した直後にインスタンスに接続しようとするとコネク ションエラーなどになる場合があります。 インスタンスは自身の起動処理の中でCCのDHCPサーバからPrivateIP のアドレスを取得します。
  74. 74. セキュリティグループ ~1~ インスタンスに対するアクセス制御はセキュリティグループで設定します。セキュリティグループは「タグVLANによるプライベートネットワークセグメントの分離」と「iptablesによるパケットフィルタリング」によって実装されています。● タグVLANによるネットワーク分離 タグVLANによるプライベートネットワークセグメントの設定はeucalyptus.confに記述され た値に従って、Eucalyptusが計算に基いて設定を自動的に行なうため一般利用者が勝手自由に 設定を変更したりできないようになっています。 よって、セキュリティグループ1つあたりのIPアドレス数などはEucalyptusの環境を構築す る際にあらかじめ決めておくことが重要です。もちろんあとでも変更は可能ですが、これらの 設定を変更した場合はインスタンスを停止しCCを再起動する必要があるため、稼働中の Eucalyptusでおいそれと変更すべきではありません。
  75. 75. セキュリティグループ ~2~● iptablesによるフィルタリングとNAT iptablesによるパケットフィルタリングは、利用者がEuca2oolsのeuca-authorizeやeuca- revokeを使用して柔軟に設定することが可能です。前述のタグVLANがインスタンスのプライ ベートネットワークを分離する機能であるのに対し、パケットフィルタリングは外部からイン スタンスにアクセスするためのPublicIPに対するアクセス制御の機能になります。 Eucalyptusの場合、PublicIPはCCのVNET_PUBINTERFACEに設定され、CC上のiptablesで制御 されます。パケットフィルタリングは、設定対象としてプロトコルとポートの組み合わせを指 定し、制御対象として接続元のネットワークか他のセキュリティグループを指定します。 なお、iptablesのパケットフィルタリングの詳細な仕組みについても中井さんの書籍「プロ のためのLinuxシステム・ネットワーク管理技術」を参考にしてください。 EucalyptusではPublicIPは全て CCに付与され、CCのiptableseの NAT機能により各NC上のインスタ ンスに付与されているPrivateIP に対して転送されます。
  76. 76. EBSボリューム● EBSボリュームの作成と取り付け インスタンスのディスクは揮発性のディスクであり、インスタンスが停止すると全てのデー タが削除されます(S3インスタンスの場合のみ)。そのため、永続化したいデータを扱う場合は EBSボリュームを作成してインスタンスで利用します。 Eucalyptusでは、EBSボリュームを実現するためにATA over Ethernet(AoE)かiSCSIのどちら かを使用します。 どちらを使用する場合でも、SC上にEBSボリュームのデータを格納するためのファイルが作 成され、そのファイルにLVMパーティションやLVMの管理構造体を作成し、AoEやiSCSIによって インスタンスが起動しているNCに提供されます。 作成したEBSボリュームは、コマンド「euca-attach-volume」「euca-detach-volume」やAPI 「AttachVolume」「DetachVolume」を使用してインスタンスに取り付け/取り外しを行ないま す。AoEでもiSCSIでもEBSボリュームはインスタンスに直接取り付けられるわけではなく、イ ンスタンスが起動しているNCに渡されてNCのハイパーバイザーの機能によってインスタンスに 取り付けられます。 なお、インスタンスにEBSボリュームを取り付ける際には/dev/sdbや/dev/xvdbのようなデバ イス名を指定します。
  77. 77. EBSボリュームのスナップショット● EBSボリュームからのスナップショット作成 EBSボリュームをバックアップする場合、取り付けられているインスタンス 上で──例えばバックアップツールを利用してバックアップを取得することも 可能ですが、簡単な方法としてEBSボリュームからスナップショットを作成す る方法があります。このEBSスナップショットは、当然のことですがEBSボ リュームを利用している最中でもスナップショットを作成することが可能です。 ただし、インスタンスやNCの管理下で行なわれるわけではなくSC上で実施さ れるため、EBSボリュームに高負荷なI/Oが発生している状況下ではデータ不整 合が発生する可能性がゼロではありません。よってEBSスナップショットを作 成する際はインスタンス上で発生している負荷に注意を払う必要があります。 なお、EBSスナップショットはEBSボリュームのLVM管理構造体の中身だけを 取り出して、SCには生のファイルとして格納し、Walrusにはgzip圧縮したファ イルとして格納します。
  78. 78. インスタンスの停止処理● S3インスタンスを停止した際の処理 インスタンスを停止すると、CLC→CC→NCの順番で停止命令が発呼されます。 CCは当該インスタンスが起動しているNCに対して停止命令が発呼できなかっ たり、発呼した停止命令に対するレスポンスが得られないなどの場合には管理 下の全NCに対して当該インスタンスの停止命令を発呼し、停止命令を受け取っ たNCはCCに対して停止命令を受け付けたことを返信します。 そのあとNCはハイパーバイザーに停止命令を送り、インスタンスを停止しま す。ここまでの間、インスタンスのステータスはrunningからshutting-downに 遷移します。 NCはインスタンスが停止したのち、インスタンスデータ (/var/lib/eucalyptus/instances/ユーザID/インスタンスID)を削除します。 その後、NCはCCからの6秒毎のリソース問い合わせでインスタンスの情報を 返し、CCは20秒毎のCLCからのリソース問い合わせでインスタンスの情報を返 し、インスタンスが停止したことをCLCが把握した時点でインスタンスのス テータスはshutting-downからterminatedに遷移します。 インスタンスのステータスがterminatedに遷移したあとは一般利用者に対す るインスタンスのリスト上では当該インスタンスは消えますが、CLC上ではそ れから10分後に内部情報をTERMINATEDからBURIEDに遷移させ、完全にインスタ ンス情報を消去します。

×