opencloudcampus privatecloudstudy eucalyptus deep-dive at gmo

78
4自作プライベートクラウド研究会 - Eucalyptus Deep Dive at GMO - 羽深 @habuka036 NTTデータ先端技術株式会社 Japan Eucalyptus Users Group 2012/06/20

Upload: osamu-habuka

Post on 28-May-2015

2.676 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

第4回 自作プライベートクラウド研究会 - Eucalyptus Deep Dive at GMO -

羽深 修

@habuka036

NTTデータ先端技術株式会社

Japan Eucalyptus Users Group

2012/06/20

Page 2: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

自己紹介とか

Page 3: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

定番の自己紹介という名の宣伝

●クラウドWatchにて「ユーカリプタス入門」を連載中

◇もう半年以上更新できてないけど...

Page 4: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

定番の自己紹介という名の宣伝

●昨年5/25にImpress Japanから「Eucalyptusで作るプライベートクラウド構築」を出しました

Page 5: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

定番の自己紹介という名の宣伝

●Eucalyptusのマシンイメージを配布する「マシンイメージ工房」を運営しています ◇英語版を作成中...(っていうか翻訳が進んでない)

●ちなみに... ◇CentOS 5.8/6.2, Ubuntu 11.10,12.04のイメージ

が手元にありますが、更新できてません…。

Page 6: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

Eucalyptusとは

Page 7: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

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系の頃の情報が混ってるかも…

Page 8: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

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に招聘

Page 9: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

2) Eucayptusの概要 -2-

● 一応「コンポーネントモデル」って昔言ってた

● Eucalyptusの言う「コンポーネントモデル」って? ◇ 各コンポーネントは疎結合

◇ つまり各コンポーネントはルールに従ってさえすれば別にEucalyptusじゃなくても動くぜ ◆ 嘘じゃないよ

◇ じゃあ、その「ルール」って? ◆ DRY(違)だから、コードに書いてあるぜwww

◆ ソースコードのwsdlディレクトリ配下に定義があります。

● つまりコンポーネントって? ◇ 後述するけど簡単に書くと以下があります

◇ ユーザからの命令を受け付けるクラウドコントローラ (CLC)

◇ ネットワーク機能を提供し、各ノード達に命令するクラスタコントローラ (CC)

◇ ハイパーバイザーを管理してインスタンスを起動するノードコントローラ (NC)

◇ EBS機能を提供するストレージコントローラ (SC)

◇ マシンイメージを管理するために必要なS3機能を提供するという重要な役割の担っているのに、一人だけ略称がない Walrus

Page 10: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

Eucalyptusのコンポーネント

● Eucalyptusはメインとなる3つのコンポーネントとストレージ機能を提供する2つのコンポーネントから構成されます

● これら5つのコンポーネントをそれぞれの役割区分でFrontend, Zone, Nodeと表現します

Page 11: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

クラウドコントローラ (CLC)

●クラウドコントローラ(CLC)には主に以下の役割があります ◇ ユーザアカウント

の管理や認証 ◇ ユーザの要求を受

け付ける ◇ 受け付けた要求を

クラスタコントローラ(CC)に渡す

◇ 設定値やクラウド内の情報をDBに格納し管理

◇ Web管理画面の提供

Page 12: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

クラスタコントローラ (CC)

●クラスタコントローラ(CC)には主に以下の役割があります ◇ CLCからの要求を受

けノードコントローラ(NC)に処理を要求する

◇ NCで起動しているインスタンスのネットワークを制御

◇ ユーザがインスタンスに接続する際のPublicIPの提供

◇ NCの空きリソースを監視

Page 13: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

ノードコントローラ (NC)

●ノードコントローラ(NC)には主に以下の役割があります ◇ CCからの要求を受

け、Walrusからマシンイメージを取得

◇ マシンイメージをキャッシュ

◇ インスタンスの起動や停止、EBSボリュームの取り付けや取り外しなどの処理をハイパーバイザー(XenおよびKVM)に依頼

Page 14: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

ストレージコントローラ (SC)

●ストレージコントローラ(SC)には主に以下の役割があります

◇ ボリュームの管理

◇ ボリュームからのスナップショットの管理

◇ インスタンスに対するボリュームの提供

Page 15: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

Walrus

●Walrusには主に以下の役割があります

◇ S3互換の大規模ストレージ

◇ マシンイメージの管理および提供

Page 16: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

役割区分について

●Frontendは、主にユーザからの要求を受け付ける機能を持つコンポーネントの集合です ◇そのため、CLC, CC, Walrusはユーザからアクセス可能なネッ

トワークに配置されなければならない ◆ SCは直接はユーザと通信しない

●Nodeは、その名のとおりノードコントローラの集合です ●Zoneは、Nodeとそれらを管理するクラスタコントローラ

とそのZoneに所属するストレージコントローラの集合です ◇マルチクラスタ構成が可能になったv1.6系からはクラスタ毎

にストレージコントローラを配置する構成が標準になりました

◇ただし、アーキテクチャ的な仕様により、ストレージコントローラはクラウドコントローラと通信可能なネットワークに所属していなければなりません

Page 17: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

ソースコードについて

● 最新版は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ファイル

Page 18: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

ソースコードについて (余談)

●よく「Eucalyptusってさー、節操なく色んな言語のコードが混在しているよねー?m9(^Д ^)pgr」って言われるけど…

← Eucalyptus

Page 19: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

ソースコードについて (余談)

●よく「Eucalyptusってさー、節操なく色んな言語のコードが混在しているよねー?m9(^Д ^)pgr」って言われるけど…

●おっと、OpenNebulaの悪口はそこまでにしてもらおうか

← Eucalyptus OpenNebula →

Page 20: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

必要環境

Page 21: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

まずはネットワークモード -1-

●必要な環境は「ネットワークモード」と「どんな規模を構築したいか?」によります

●ネットワークモードには以下の4つがあります ●SYSTEMモード ◇最小構成を作れるネットワークモードのうちの一つ ◇必要なハードウェアは最小で物理マシン1台のみ ◇ただし、インスタンスに対するIPアドレスを付与する機

構がないため、DHCPサーバが必要

●STATICモード ◇最小構成を作れるネットワークモードのうちの一つ ◇必要なハードウェアは最小で物理マシン1台のみ ◇ DHCPサーバは自前で起動するけども、事前にMACアドレ

スとIPアドレスのペアを決めて設定ファイルに記述しておく必要あり

Page 22: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

まずはネットワークモード -2-

●MANAGEDモード ◇一番、Eucalyptusの機能を楽しめるネットワーク

モード

◇必要なハードウェアは最小で物理マシン2台

◇加えてこのネットワークモードの場合は、インテリジェンスなL2スイッチが必要 ◆無くてもこのモードは使えるけど、VLANの意味が…

●MANAGED-NOVLANモード ◇ぶっちゃけて言うと、上のMANAGEDモードを使いた

いけどVLANに対応したスイッチがないぜ、もしくは「うちんとこのネットワーク、タグVLANを流せないぜ」って人向け

◇今日の後半でのデモはこのモードでやります

Page 23: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

マシンスペック -1-

●CPUはXeonクラスで ◇「NC以外はそんなにCPU要らないんじゃないの?」って

言われるけど、CLCはユーザからの要求をさばくためにCPUを使うし、CCはユーザとインスタンスの通信をさばくためにCPUを使うしで何だかんだ言ってどのコンポーネントもCPUはあったほうがいい

◇とは言え、動作確認や機能検証するだけならハイスペックなCPUじゃなくてもOK。ちなみに私はPentium Dとかで動作確認することが多いです。 ◆ わが家はVT機能がついてるマシンは妻のウルトラブックのみで

すよ

●今日は(も)ターゲットは64bitです ◇もちろん、Eucalyptusは32bitなマシンでも動くよ ◇ちなみに「32bit環境のIaaSが欲しいの」っていう需要

あります?

Page 24: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

マシンスペック -2-

●メモリも積んでおこうね ◇昔、CLCやCCを2GBytesなマシンで動かしたことある

けど、息切れしちゃうから、まともに運用したかったらせめてCLCは4GBytes以上、CCは8GBytes以上あったほうがいい。Walrusはマシンイメージの登録時とかにガッツリとメモリを消費しちゃうから、ケチっちゃ駄目よ。

●ハードディスクが必要なのは以下 ◇NCはインスタンスで消費するし、マシンイメージの

キャッシュでも消費する

◇SCはEBSボリュームとスナップショットの利用具合

◇Walrusはマシンイメージとキャッシュで消費

◇実際に運用しだすと1桁TBじゃ足りな~いってなる

Page 25: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

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

Page 26: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

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/opensuse

Page 27: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

そーいや Ubuntu と言えば…

●Ubuntu 12.04 にはバイナリが含まれてないけど、オワコンだから?

◇Eucalyptusのサイトで提供されてるし、一方で「Eucalyptus3のパッケージを12.10に入れようぜ」って提案があるし、オ、オワコンじゃないんじゃないかな~ (;´Д`)y─┛~~

◆ https://blueprints.launchpad.net/ubuntu/+spec/servercloud-q-eucalyptus

Page 28: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

ら、LiveDVD...

____________

ヾミ || || || || || || || ,l,,l,,l 川〃彡|

V~~''-山┴''''""~ ヾニニ彡| 出す・・・・・・!

/ 二ー―''二 ヾニニ┤ 出すが・・・

<'-.,  ̄ ̄ _,,,..-‐、 〉ニニ| 今回 まだ その時と場所の

/"''-ニ,‐l l`__ニ-‐'''""` /ニ二| 指定まではしていない

| ===、! `=====、 l =lべ=|

. | `ー゚‐'/ `ー‐゚―' l.=lへ|~| そのことを

|`ー‐/ `ー―― H<,〉|=| どうか諸君らも

| / 、 l|__ノー| 思い出していただきたい

. | /`ー ~ ′ \ .|ヾ.ニ|ヽ

|l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・

. | ≡ | `l \__ 我々がその気になれば

!、 _,,..-'′ /l | ~''' LiveDVDのリリースは

‐''" ̄| `iー-..,,,_,,,,,....-‐'''" / | | 10年後 20年後ということも

-―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・!

| | \ / | |

Page 29: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

今日の構成

Page 30: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

コンポーネントの配置上の注意点

●利用者から届く場所へ配置するもの ◇ 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機能の利用度がマシン

スペック的にさばける範囲ならば同居でも大丈夫

Page 31: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

今日の構成

大風呂敷を広げると畳めなくなるので…

●以下の3台で構成 ◇CLCとWalrus同居 ... 1台

◇CCとSC同居 ........ 1台

◇NC ................ 1台

HA構成やマルチクラスタ構成はまたいつか…

euca-clc euca-cc euca-nc1

eth0

eth1

Page 32: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

今日のゴール

今日のインストールデモを見た皆さんに

「今日帰宅してから、もしくは明日にでも『GMOクラウド』上にEucalyptusをインストール『してみたいなぁと思わせる』」ことが今

日の目的です

Page 33: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

今日のゴール

今日のインストールデモを見た皆さんに

「今日帰宅してから、もしくは明日にでも『GMOクラウド』上にEucalyptusをインストール『してみたいなぁと思わせる』」ことが今

日の目的です

Page 34: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

今日のゴール

今日のインストールデモを見た皆さんに

「今日帰宅してから、もしくは明日にでも『GMOクラウド』上にEucalyptusをインストール『してみたいなぁと思わせる』」ことが今

日の目的です

Page 35: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

今日のゴール

今日のインストールデモを見た皆さんに

「今日帰宅してから、もしくは明日にでも『GMOクラウド』上にEucalyptusをインストール『してみたいなぁと思わせる』」ことが今

日の目的です

浜田さんから「思わせるだけじゃ駄目なんだよ」って怒られる… ((( ;゚Д゚)))

Page 36: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インストールから動作確認まで Step by Step

Page 37: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

注意!

●これ以降のデモですが、当日は失敗しました。もちろん色々な要因があるのですが、とりあえず情報の一つとして公開します。というのも、以降の方法で動く環境を構築できる可能性があるためです。

●それとは別に、GMOクラウド上で環境を作るためには、もうひと工夫必要かもしれないことが判明しています。その方法についてはいつかどこかでリベンジ編として公開します。

Page 38: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インストールと設定 -1-

●レポジトリの設定

◇以下の内容を/etc/yum.repos.d/eucalyptus.repoとして保存

[eucalyptus] name=Eucalyptus 3.1 beta baseurl=http://downloads.eucalyptus.com/software/eucalyptus/nightly/3.1/centos/$releasever/$basearch

gpgcheck=0 [euca2ools] name=Euca2ools 2.1 baseurl=http://downloads.eucalyptus.com/software/euca2ools/2.1/centos/$releasever/$basearch

gpgcheck=0

Page 39: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インストールと設定 -2-

●epelの追加 ◇以下を実行してepelのレポジトリを追加

●Xenのインストール ◇ NCで以下を実行し、Xen関連のパッケージをインストー

●ループバックデバイスの追加 ◇ SCとNCで以下を実行し、ループバックデバイスの数を増

やしておく

rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/5/i386/epel-release-5-4.noarch.rpm

yum install kernel-xen.x86_64 xen.x86_64 xen-libs.x86_64

echo 'options loop max_loop=256' > /etc/modprobe.d/loop for i in `seq 8 255`; do echo loop${i} >> /etc/udev/makedev.d/50-udev.nodes; done

modprobe loop

Page 40: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インストールと設定 -3-

●Xenの設定

◇以下を実行してNCのXenをlibvirtから利用できるようにする

sed -i -e 's/#(xend-http-server no)/(xend-http-server yes)/' /etc/xen/xend-config.sxp

sed -i -e 's/#(xend-address localhost)/(xend-address localhost)/' /etc/xen/xend-config.sxp

Page 41: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インストールと設定 -4-

●CLCとWalrusのインストール ◇以下を実行してCLC役のマシンにCLCとWalrusをインストール

●CCとSCのインストール ◇以下を実行してCC役のマシンにCCとSCをインストール

●NCのインストール ◇以下を実行してNC役のマシンにNCをインストール

yum install eucalyptus-cloud eucalyptus-walrus

yum install eucalyptus-cc eucalyptus-sc

yum install eucalyptus-nc chkconfig libvirtd off reboot

Page 42: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インストールと設定 -5-

● CCのeucalyptus.confで以下のパラメータを設定

● NCの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"

VNET_MODE="MANAGED-NOVLAN" VNET_PUBINTERFACE="eth1"

Page 43: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インストールと設定 -6-

● CLCでDBの初期化を実施してCLCとWalrusを起動

● CCでCCとSCを起動

● NCを起動

euca_conf --initialize /etc/init.d/eucalyptus-cloud start

/etc/init.d/eucalyptus-nc start

/etc/init.d/eucalyptus-cc start /etc/init.d/eucalyptus-cloud start

Page 44: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インストールと設定 -7-

● Walrusの登録 (以下をCLCで実行)

● CCの登録 (以下をCLCで実行)

● SCの登録 (以下をCLCで実行)

● NCの登録 (以下をCCで実行)

euca_conf --register-walrus --partition walrus --host 157.7.160.191 --component walrus

euca_conf --register-nodes "172.16.6.194"

euca_conf --register-cluster --partition jp-east-1a --host 172.16.6.193 --component cc-172.16.6.193

euca_conf --register-sc --partition jp-east-1a --host 172.16.6.193 --component sc-172.16.6.193

Page 45: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

動作確認 -1-

● 証明書類の取得

● AZの確認

● マシンイメージの登録

mkdir -p .euca/admin/keypairs euca_conf --get-credentials .euca/euca2-admin-x509.zip cd .euca/admin/ unzip ../euca2-admin-x509.zip

wget http://eucalyptus.machine-image.com/downloads/CentOS-5.6-x86_64-Mini-20110829.tar.bz2

tar -xjvf CentOS-5.6-x86_64-Mini-20110829.tar.bz2 cd CentOS-5.6-x86_64-Mini-20110829/ ./register.sh

. eucarc euca-describe-availability-zones verbose

Page 46: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

動作確認 -2-

● キーペアの登録

● インスタンスの起動

● セキュリティグループの設定

● 接続

euca-add-keypair key01 > ~/.euca/admin/keypairs/key01.pem chmod 400 ~/.euca/admin/keypairs/key01.pem

euca-authorize -P tcp -p 22 -s 0.0.0.0/0 default

euca-run-instances -k key01 emi-598530F1 watch -d euca-describe-instances i-96A240E5

ssh -i ~/.euca/admin/keypairs/key01.pem 10.100.100.100

Page 47: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

トラブルシューティング

Page 48: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

構成や設定でのチェックポイント

●混乱しがちなのは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

Page 49: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

OS設定での留意点

●SELinuxはoffってね ◇getenforceの結果がDisabledじゃなかったら

setenforce 0を実行

●iptablesはoffってね ◇Eucalyptusが設定/起動するiptables以外はなるべ

く止めてね

●時刻同期は必須 ◇今日みたいに仮想化の上で構築するのではなく、普

通は物理上で構築すると思うけど、時刻同期は忘れちゃダメ

●MTAは使えるように設定してね ◇今日は時間の都合で省いたけど、本当はCLC上にMTA

を起動させたほうがいいです

Page 50: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

トラブル時の解決方法

● ディスクの空き容量を確認する ◇ 各物理マシンにログインしたら、まず先にこれを見たほうがいい。(中井さんの書籍にも

書いてある)

● 各コンポーネントのプロセスが動いているか確認する

● 各コンポーネントのポートが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

Page 51: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

Eucalyptus Q&A

Page 52: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

当日の質問の様子 -1-

●tagVLANのついたパケットってEucalyptusの外に流れたりします?

◇いえ、tagVLANのついたパケットはCC<->NC間しか流れません。

◇というのも、あくまでもCC<->NC(インスタンス)間のネットワークを、セキュリティグループおよびユーザ毎に分離するために使っているからです。

Page 53: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

当日の質問の様子 -2-

●HW構成でネットワークの帯域について言及が無かったけど、1Gbpsでも足りますか? ◇あ…、すっかり忘れてました。経験則では、CLC1台、

CC1台、NC15台ぐらいの構成で、NWの帯域が1Gbpsでも何とかなってます。

◇ただし、それ以上の台数で構成した場合は心許ないかもです…。

●bondingとかで束ねたほうがいいですか? ◇もちろん、そうできるのであれば、そのほうが良いです。

もっとも1Gbpsを10Gbpsにするほうが楽でいいですよ。あとは構成を工夫するとか──例えばNCはWalrusからマシンイメージをダウンロードするときに帯域を圧迫するけど、NC<->Walrus間を独立セグメントにするという方法で負荷を分散できます。(まぁ、構成がややこしくなるので、ちょっとシンドイですけどね)

Page 54: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

当日の質問の様子 -3-

●色々なIaaSを管理するのってどんなのがあります?

◇あまり詳しくはないですが、個人的に気にしているものとしては以下の2つです。

◇Aeolus

◆ http://www.aeolusproject.org/

◇Scalr

◆ http://scalr.net/

Page 55: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

フリートーク

Page 56: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

参考情報

Page 57: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

使っているフォント

●タイトルとか ◇しねきゃぷしょん ◆ http://chiphead.jp/font/htm/cinecaption.htm

●本文とか ◇ゆたぽん(コーディング) ◆ http://net2.system.to/pc/font.html

●箇条書きの記号 ◇こくばん ◆ http://falseorfont.web.fc2.com/

●図形の中とか ◇たぬき油性マジック

Page 58: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

参考情報 -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

Page 59: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

参考情報 -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/

Page 60: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

参考情報 -3-

●中井さんの名著

◇プロのための Linuxシステム構築・運用技術

◇プロのための Linuxシステム・ネットワーク管理技術

◇プロのための Linuxシステム・10年効く技術

Page 61: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

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#

Page 62: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

ユーザの登録

● Eucalyptusを利用するためには何よりも最初にユーザを登録しないといけません

◇ もちろん、最初にシステムが作成するユーザ「admin」で利用し続けることも可能ですが、複数の利用者で利用する場合に単一ユーザを共有するのは好ましくありません

● ユーザを登録するには以下の3つの方法があります

◇ CLC上で管理コマンド「euca-add-user」で登録

◇ Eucalyptusの管理者がWeb管理画面で登録

◇ Eucalyptusを利用したいユーザがWeb管理画面でユーザ登録を申請

◇ IAMを利用して管理する

コマンドで登録

管理者が登録

利用者が申請

Page 63: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

イメージの作成 -1-

● Eucalyptusでインスタンスを起動するためには、まずマシンイメージを作成して登録する必要があります ◇ 一般ユーザはカーネルイメージやRAMディスクイメージを登録でき

ないため、一般的には管理者が登録したマシンイメージを利用します

● 登録するためのマシンイメージを作成する方法は色々な方法がありますが、手っ取り早い方法は以下の2つのサイトから入手する方法があります ◇ Eucalyptusの公式サイトから入手

http://open.eucalyptus.com/wiki/EucalyptusUserImageCreatorGuide

◇ マシンイメージ工房から入手 http://eucalyptus.machine-image.com

● 入手したマシンイメージはEuca2oolsのコマンドeuca-bundle-imageとeuca-upload-bundleとeuca-registerを実行して登録します ◇ もちろんEuca2oolsを使わずに他のツールやAPIを直接叩いて登録す

ることも可能です

Page 64: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

イメージの作成 -2-

●マシンイメージのバンドルの仕組み 「バンドル」にはイメージファイルをバンドルするeuca-bundle-imageコマンドと、稼動しているLinuxをバンドルする──つまりインスタンスを保存するeuca-bundle-volコマンドの2つがあります

Page 65: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

イメージの作成 -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にはアクセスしません

Page 66: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

イメージ登録 -1-

●マシンイメージのアップロードの仕組み マシンイメージをeuca-upload-bundleでWalrusに

アップロードする際は、まずeuca-upload-bundleのオプションで指定されたバケット名が既にWalrusに存在するか否かをチェックします。指定されたバケットが既に存在し、アクセス権限があれば処理を継続しますが、アクセス権限がない場合はエラーになり処理が中断します。なお、指定されたバケットが存在しない場合はバケットを作成します。 バケットの準備が整ったら、まずマニフェスト

ファイルをアップロードし次に分割されたファイルをアップロードします。 ちなみに、マシンイメージのアップロードではEC2

APIは使わず、S3 APIのみ使用します。

Page 67: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

イメージ登録 -2-

●マシンイメージの登録の仕組み マシンイメージの登録にはeuca-registerコマンドを使用しEC2

APIのRegisterImageを発呼します。Eucalyptusは指定されたマニフェストに従って、アップロードされている分割マシンイメージの整合性チェックを行ないます。チェックの結果に問題がなければ分割マシンイメージを結合→複号→展開という処理を行ない、キャッシュファイルとして素のマシンイメージをWalrusに保持します。 なお、このキャッシュファイルを作成する際に、Web管理画面

の「Walrus Configuration」の項目「Space reserved for unbundling images (MB)」に設定されている値(デフォルト値は30720MB)をチェックし、キャッシュファイルが消費しているディスクサイズがその値以上であれば古いキャッシュファイルを削除します。 ちなみに、Walrusがキャッシュファイルを作成/保持するタイ

ミングには、このRegisterImageが発呼された場合やもしくはインスタンス起動時にWalrusにキャッシュファイルが存在しない場合などがあります。

Page 68: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インスタンスの起動処理 -概要-

● インスタンスの起動処理の流れ

ユーザがインスタンスを起動した際の各コンポーネント間の処理のおおまかな流れは以下のようになっています。

1. ユーザがCLCにインスタンスの起動を要求

2. CLCがCCにインスタンスの起動を要求

3. CCは起動スケジュールと空きリソース具合によってインスタンスを起動するNCを選定し、選定したNCにインスタンスの起動を要求

4. NCは自身のキャッシュを確認し、キャッシュが存在しない場合はWalrusからマシンイメージを取得。キャッシュが存在する場合はキャッシュをコピー

5. NCはマシンイメージからインスタンスを起動

6. 起動したインスタンスはCCで起動しているDHCPサーバからIPアドレスを取得

この流れに沿って、各コンポーネント上での処理を説明していきます。

Page 69: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

● ユーザがCLCにインスタンスの起動を要求

CLCはユーザからのインスタンス起動の要求を受けつけると以下のチェックを行ないます。 ◇ ユーザの正当性をチェック

◇ 起動要求の内容の正当性をチェック

◇ 起動するインスタンスに見合ったリソースの空きに関するチェック

リソースの空きは、指定されたVM Typesの空きがあるか、利用可能なPublicIPの空きがあるかなどをチェックします。チェックした結果がエラーの場合はユーザにエラーを返し、問題がなければ次の処理へと進みます。

CLCは自身のクラウドにおけるリソースの空き状況を把握するために20秒毎に各CCにリソース情報の問い合わせを行っており、CCは自身のクラスタにおけるリソースの空き状況を把握するために6秒毎に各NCに対してリソース状況の確認を行なっています。

インスタンスの起動処理 -1-

Page 70: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インスタンスの起動処理 -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でのみ動作します。

Page 71: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インスタンスの起動処理 -3-

● CCがNCにインスタンスの起動を要求

CCはNCにインスタンスの起動要求を行なう前処理として、当該セキュリティグループに関する仮想ネットワークが存在するか否かをチェックし、もし該当する仮想ネットワークが存在しない場合は以下のように仮想ブリッジやVLANデバイスを作成します。VLANについては中井さん書籍「プロのためのLinuxシステム構築・運用技術」を参考にしてください。

仮想ネットワークを作成し、CCがNCにインスタンスの起動を要求する際には以下の情報を渡します。

◇マシンイメージに関する情報

◇インスタンスタイプ

◇キーペアの情報

◇タグVLANのIDとPrivateIP用のMACアドレス

NCにインスタンス起動要求が受け入れられたら、CCはCLCから受け取ったPublicIPをPrivateIPと関連付けるルールをiptablesに設定します。一方、命令を受け取ったNCは起動するインスタンス分のリソースを自身の空きリソースから減じて次の処理に進みます。

Page 72: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インスタンスの起動処理 -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上のキャッシュファイルの完全性をチェックします。キャッシュファイルが破損および改竄されていない場合はキャッシュからインスタンスデータの格納場所にコピーされます。

Page 73: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インスタンスの起動処理 -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のアドレスを取得します。

Page 74: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

セキュリティグループ ~1~

インスタンスに対するアクセス制御はセキュリティグループで設定します。セキュリティグループは「タグVLANによるプライベートネットワークセグメントの分離」と「iptablesによるパケットフィルタリング」によって実装されています。

● タグVLANによるネットワーク分離

タグVLANによるプライベートネットワークセグメントの設定はeucalyptus.confに記述された値に従って、Eucalyptusが計算に基いて設定を自動的に行なうため一般利用者が勝手自由に設定を変更したりできないようになっています。

よって、セキュリティグループ1つあたりのIPアドレス数などはEucalyptusの環境を構築する際にあらかじめ決めておくことが重要です。もちろんあとでも変更は可能ですが、これらの設定を変更した場合はインスタンスを停止しCCを再起動する必要があるため、稼働中のEucalyptusでおいそれと変更すべきではありません。

Page 75: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

セキュリティグループ ~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に対して転送されます。

Page 76: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

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のようなデバイス名を指定します。

Page 77: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

EBSボリュームのスナップショット

● EBSボリュームからのスナップショット作成

EBSボリュームをバックアップする場合、取り付けられているインスタンス上で──例えばバックアップツールを利用してバックアップを取得することも可能ですが、簡単な方法としてEBSボリュームからスナップショットを作成する方法があります。このEBSスナップショットは、当然のことですがEBSボリュームを利用している最中でもスナップショットを作成することが可能です。

ただし、インスタンスやNCの管理下で行なわれるわけではなくSC上で実施されるため、EBSボリュームに高負荷なI/Oが発生している状況下ではデータ不整合が発生する可能性がゼロではありません。よってEBSスナップショットを作成する際はインスタンス上で発生している負荷に注意を払う必要があります。

なお、EBSスナップショットはEBSボリュームのLVM管理構造体の中身だけを取り出して、SCには生のファイルとして格納し、Walrusにはgzip圧縮したファイルとして格納します。

Page 78: OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO

インスタンスの停止処理

● 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に遷移させ、完全にインスタンス情報を消去します。