Eucalyptus で Ubuntu Enterprise Cloud を始めてみましょう

メモ:Ubuntu 9.04 向けの文章は、Eucalyptus-Jaunty? を御覧ください。

概要

Eucalyptus クラウド・コンピューティングは、システムが多種多様な環境で動作するように、とても柔軟なカスタマイズが可能です。このチュートリアルでは、Eucalyptus を使ってプライベート・クラウドを構築することを取り扱います。

チュートリアルの目標

チュートリアルでは、インストール方法・設定変更の仕方・実行のさせかたを学びます。ステップ1~3では "front-end"(フロントエンド) の基本的なセットアップを行います。これは、Eucalyptus で仮想マシン(VM)のインスタンスを操作する唯一のコントローラです。

ステップ4~6では、自分自身のプライベート・クラウド環境を構築する方法を取り扱います。オプションとして、RightScale (ライトスケール) というクラウド管理プラットフォームへ、自分のプライベート・クラウドを登録する方法も取り扱います。

  1. 準備
  2. インストールと設定
  3. Eucalyptus コンポーネントの登録
  4. 初めてのログインと、クラウドの登録
  5. 仮想マシン(VM) イメージの作成
  6. イメージの実行

ステップ1:準備

Eucalyptus には、以下の高水準なパッケージを含んでいます。

  1. eucalyptus-cc - Cluster Controller (クラスタ・コントローラ) です。仮想ネットワーク・オーバレイ機能のサポートを含みます。
  2. eucalyptus-cloud - フロントエンド・サービス(クラウド・コントローラ)だけでなく、ストレージシステムである Walrus(ウォールラス)も含みます。
  3. eucalyptus-nc - 個々の仮想マシン(VM)を管理するための、Node Controller (ノードコントローラ)です。

ステップ2:インストールと設定

基本的なEucalyptusセットアップでは、システムは2台のマシン(フロントエンドとノード)で構成されます。フロントエンドの構成では、eucalyptus-cloudとeucalyptus-ccを実行します。ノードは、ノード・コントローラ(eucalyptus-nc)を実行します。複数のホストを用いた、より複雑なセットアップを行うことで、クラウド・コントローラとクラスタ・コントローラを切り離すことができます。次の図は、シンプルなセットアップ構成図です。

euca-topo-nonet.png

パッケージ等を使ってインストールをする前に、Eucalyptusシステムを完全に動作させるためには、ほかにも幾つかの必要条件があります。

  • ユーザが証明書をリクエストした時に、Eucalyptus administrator toolsはクラウド管理者あてにメールで通知します。クラウド・コントローラは、ホスト名 mailhost を経由してメールを送ります。メールを送れるようにするための最も簡単な方法は、'postfix'パッケージを組み込むことです。いわゆる localhost を mailhost に置き換え(例:/etc/hosts へ記述を追加する)ことにより、メール送信が可能になります。クラウド・コントローラのホスト上で次のように入力してください。
    $ sudo apt-get install postfix
    # 表示される質問に回答 (「Internet Site」を推奨)
    $ sudo vi /etc/hosts
    # エディタでlocalhost 行に「mailhost」を追加
    $ grep mailhost /etc/hosts
    127.0.0.1   localhost mailhost
    # このように記述がされていれば完了。
  • 個々のノードで、マシン上でメインとして使うイーサネット・インターフェースを、ネットワーク・ブリッジとして設定します(詳細はUbuntu Server Guide Bridgingを御覧ください)。ノード・コントローラでブリッジの設定を行うのは、仮想マシンがネットワーク接続が可能になるようにするためです。
    注意:ノードのブリッジ・デバイス名称は覚えておいてください(このチュートリアルでは、ブリッジ・デバイスの名前が「br0」であると仮定します。
  • 標準のEucalyptusの構成では、DHCPサーバにより動的なIPアドレスの割り当てを行うことを想定しています。仮想マシンがローカルネットワークにブリッジされますので、IPアドレスを受け取るためのDHCPクライアントを実行しても構いません。
  • Eucalyptusクライアントとして使用したいすべてのホストにおいて、euca2oolsパッケージをインストールしておいた方がよいでしょう。euca2oolsパッケージは、universeリポジトリから取得できます。
    $ sudo apt-get install euca2ools
    また、EC2 や S3 と互換性のある API は、Eucalyptus でも多分動作するでしょう。
  • ファイアウォールの外側から Eucalyptus にアクセスをしたい場合(すなわち、euca2ools ツール側とクラウド・コントローラが、ファイアウォールとは異なるネットワークにある場合)、クラウド・コントローラ側でポート 8773 を開いておく必要があります。更に、Eucalyptusにクラウド管理プラットフォームも使用する場合は、ポート 8774 に加え、ポート 8443 も開いておく必要があります。

ステップ2:インストールと設定

フロントエンド・マシン上に、eucalyptus-cloud と eucalyptus-cc パッケージをインストールします。

$ sudo apt-get install eucalyptus-cloud eucalyptus-cc

次に、各ノードのマシンに eucalyptus-nc パッケージをインストールします。

$ sudo apt-get install eucalyptus-nc

最後に、ノード上で、eucalyptus-nc サービスを停止し、/etc/eucalyptus/eucalyptus.conf の記述変更します。プライマリ・インターフェースとしてセットアップしたブリッジの名称を反映してください。

このステップでの記述例は、ノードをプライマリ・インターフェースとしてブリッジの設定をする方法です。ですが、マシンの構成によってはほかの方法もある事に注意をすべきです。必要であれば、自身のローカル・ネットワークの設定と競合しない設定もできるでしょう。

しかしながら、ここではあえてブリッジを構成する設定ですすめましょう。ノード・コントローラの設定で、ブリッジ名(例の中では「br0」としています)を指定する必要があります。そのためには、次のように入力してください。

$ sudo /etc/init.d/eucalyptus-nc stop
$ sudo vi /etc/eucalyptus/eucalyptus.conf
# 編集画面では 「VNET_BRIDGE="br0"」 と記述します。
$ sudo /etc/init.d/eucalyptus-nc start

これまで設定してきた情報を、次の図にまとめました。

euca-topo.png

Eucalyptusのウェブ管理画面(フロントエンド)を IPv6 のみで実行したい場合は、あらかじめ IPv6 のポートを IPv4 のトラフィックが通信可能になるように、ネットワーク構成の変更を変える必要があります。次のように入力してください。

$ sudo vi /etc/sysctl.conf
# 「net.ipv4.ip_forward=1」をアンコメントします。
# (コメントアウトされていない可能性もあります)
$ sudo sysctl -p

ステップ3:Eucalyptus コンポーネントの登録

Eucalyptus は、システムの各々のノードに属している各クラスターが、クラウドに属していると仮定します。各々のノード(例ではノードは1つです)は、eucalyptus-nc のコピーを実行します。同様に、各々のクラスタ(例ではクラスタは1つです)は、eucalyptus-cc のコピーを実行し続けなければいけません。例では分かりやすくするために、クラウド・コントローラ(eucalyptus-clc)と同じマシンでeucalyptus-ccを実行します。システムが稼働する前に、これらのコンポーネントはお互いに登録されている必要があります。クラウド・コントローラにクラスタを登録するには、次のコマンドを実行してください。

$ sudo euca_conf -addcluster <クラスター名> localhost

クラスター名>の箇所へは、ユーザがクラスターを識別する名前を入力します。ただ、名前は論理的なものであり、Eucalyptus の内部でしか有効ではないことに注意してください。また、クラスタ名は、クライアント・ツール上で "availability zone"(アベイラビリティ・ゾーン)としても表示されます。次に、クラスタをノードに追加します。クラスタ・コントローラ上で以下のコマンドを実行してください。

$ sudo euca_conf -addnode <ノードのホスト名>

後で、各々のノード(eucalyptus-nc のコピーを実行している)のために、上記のコマンドを繰り返すことで、より多くのノードを加えていくことができます。ここまでで、Eucalyptus システムが稼働できるようになるための、最低限度の準備が整いました。

ステップ4:初めてのログインと、クラウドの登録

クラウド・コントローラが初めて起動するときは、クラウドを管理する環境をセットアップするために、幾つかの構成ステップを踏む必要があります。ウェブ・ブラウザから(該当マシンを離れてもいいですし、Ubuntu サーバ上で作業をしても構いません)、以下の URL にアクセスしてください。

https://<クラウド・コントローラの IP アドレス>:8443/

ログイン時には「admin」のユーザ名と、「admin」のパスワードを入力します(初回ログイン時には admin パスワードの変更を促されます)。また、今該当サーバ上で操作をしているのであれば、フロントエンドの IP アドレスの代わりに「localhost」を使っても構いません。それから、画面上の指示に従ってください。初回ログイン時の設定作業を終えるときは、画面の左上部分にある「credentials」タブをクリックしてください。「Download Certificate」(証明書をダウンロードする)ボタンをクリックし、自分自身の証明書を取得できます。

euca-admin-cred.png

重要! ブラウザからの接続は、安全なものである必要があります。ブラウザに表示されている URL が「http」ではなく「https」になっている事を確認してください。URL が「https」であれば、初回接続時はセキュリティの警告が表示されます。画面の指示に従い、通信を例外として扱うようにしなくてはいけません。そうしませんと、Eucalyptus の設定を行うことができませんので、御注意ください。

EC2 API や AMI tools を使いたい場合は、X.509 証明書をセットアップする必要があります。ダウンロードしてきた ZIP ファイルを、安全な場所(~/.euca)に展開します。展開されたファイルにある eucarc ファイルには、これまで設定してきた Eucalyptus の環境に対する情報が入っています。その上、ログインするときに Eucalyptus 環境が自動的にセットアップされるように、このコマンドを ~/.bashrc ファイルに加えてもよいでしょう。ただ、Eucalyptus は証明書を、クラウド全体の「管理者」(administrator)としての権限を持つものとして取り扱います。ですので、ほかの高いセキュリティを保つ必要があるファイルと同レベルに保護しなくてはいけません(例えば、一般ユーザ権限で該当ファイルを読めてはいけません)。

あるいは、上記の手順をとりまとめたインストール用スクリプトを用いても構いません。

オプション:RightScale への登録

RightScale は Eucalyptus からも利用可能な Cloud Management Platform を提供しています。これは、無料サービスか、支払われた金額に応じて利用できるシステムです。このクラウド管理ソフトは Amazon 社の AWS (Amazon Web Services) が提供するクラウド環境だけではなく、Eucalyptus を管理する Eucalyptus クラウド・コントローラ(eucalyptus-clc)とも通信することができます。インターネットとファイアウォールによってネットワークが隔たられている場合でも、RightScale と eucalyptus-cls との通信が可能であれば RightScale をつかった Eucalyptus クラウドの管理が可能です。インターネット側の RightScale と自分自身の Eucalyptus クラウドが互いに通信可能にするためには、ポート 8443 とポート 8773 の公開が必要です。

自分の Eucalyptus を RightScale 社のサービスに登録する方法は、Register my cloud with RightScale(英語)を御覧ください。

ステップ5:仮想マシン(VM) イメージの作成

仮想イメージを取得するには、幾つかの方法があります。最も簡単な方法は、シンプルに公式 Ubuntu UEC イメージをダウンロードすることです。また、vmbuilder ユーティリティを使って、自分自身のイメージを構築することもできます。

$ wget http://uec-images.ubuntu.com/releases/karmic/<release>/ubuntu-uec-karmic-i386.img.gz

それから、Kernel・RAMDISK を最終的に1つのイメージにまとめ、アップロード、登録を行う必要があります。EC2 API ツールを使うには、以下のステップを実行してください。

# イメージのとりまとめと、システムカーネルへのアップロード
$ mkdir kernel
$ euca-bundle-image --image /boot/vmlinuz-$(uname -r) \
  --destination ./kernel --kernel true
$ euca-upload-bundle --bucket kernel \
  --manifest ./kernel/vmlinuz-$(uname -r).manifest.xml
$ EKI=`euca-register kernel/vmlinuz-$(uname -r).manifest.xml | awk '{print $2}'`
$ echo $EKI

# acpiphp で ramdisk を作成し、とりまとめとアップロード
$ mkdir ramdisk
$ sudo sh -c 'grep -q acpiphp ||
   printf "#acpiphp needed for ebs\nacpiphp\n" > /etc/initramfs-tools/modules'
$ sudo mkinitramfs -o ./ramdisk/initrd.img-$(uname -r)
$ euca-bundle-image --image ./ramdisk/initrd.img-$(uname -r) \
   --destination ./ramdisk --ramdisk true
$ euca-upload-bundle --bucket ramdisk \
   --manifest ramdisk/initrd.img-$(uname -r).manifest.xml
$ ERI=`euca-register ramdisk/initrd.img-$(uname -r).manifest.xml | awk '{print $2}'`
$ echo $ERI

# 展開した後に、イメージをとりまとめ
$ mkdir image 
$ zcat ubuntu-uec-karmic-i386.img.gz |
   cp --sparse=always /dev/stdin ubuntu-uec-karmic-i386.img
$ euca-bundle-image --image ubuntu-uec-karmic-i386.img \
   --destination ./image --kernel $EKI --ramdisk $ERI
$ euca-upload-bundle --bucket image --manifest ./image/root.img.manifest.xml
$ EMI=`euca-register image/root.img.manifest.xml | awk '{print $2}'`
$ echo $EMI

上記の例で用いているシェル変数についてお伝えします。これらは、以後のステップでインストールのテストを行うために用います。この時点で、ramdisk とイメージは、Eucalyptus にアップロードされ、実行できるように準備されている状況です。次のコマンドを使って、動作確認を行います。 $ euca-describe-images 登録されている kernel、ramdisk、イメージの情報と「available」であることを確認してください。 暗号化されたファイルシステムを使用するマシン上でイメージのとりまとめ(bundle)を行った場合、正常に ramdisk のとりまとめができませんので、御了承ください。ramdisk で暗号化されたファイルシステムを扱う際、システム側の暗号化手法の影響により、インスタンスを起動しようとしても、起動時にクラッシュしてしまいます。

ステップ6:イメージの実行

イメージを実行する前に、初回時は、インスタンスに root でログインするためのキーペア(SSH鍵)を作成する必要があります。鍵の情報は保管されますので、一回だけ実行しなくてはいけません。次のコマンドを実行してください。

$ euca-add-keypair mykey > ~/.euca/mykey.priv
$ chmod 0600 ~/.euca/mykey.priv

メモ:鍵には好きな名前をつけても構いません(上記の例では mykey としています)。ですが、その名前は忘れないようにしてください。もし忘れてしまった場合は、'euca-describe-keypairs'コマンドによって、システムに保管されている鍵の一覧を確認することができます。次に、登録されているイメージのインスタンスを構築します。

$ euca-run-instances $EMI -k mykey

インスタンスを初めて実行するときは、システムは構築しようとしているイメージのためにキャッシュをセットアップします。仮想マシンのイメージが大きい場合、通常はインスタンスの初回実行時に時間がかかってしまうことがあります。インスタンスの状況を確認するには、次のコマンドを実行します。

$ euca-describe-instances

画面に出力される情報から、インスタンスがどのような状況にあるかを確認することができます。初めてキャッシュされる場合は、state が 'pending' と表示されます。インスタンスが起動し次第、state は 'running' となります。インスタンスが DHCP から IP アドレスを取得できれば、public and private address で表示されている IP アドレスの項目が、'0.0.0.0' から利用可能な IP アドレスに変わります。ここまできますと、先ほど作成した SSH 鍵を利用して、あたらしいインスタンスにログインできるようになります。

$ ssh -i ~/.euca/mykey.priv ubuntu@<インスタンスのIPアドレス>

ここまでの流れをおさらいしますと、次の図のような構成になります。

euca-topo-withinst.png


セットアップがうまくいきませんか?もっとやりやすい方法はありますか?
翻訳がわかりにくいなど、日本語のメーリングリストで情報交換しましょう。


原文:https://help.ubuntu.com/community/Eucalyptus


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-12 (土) 22:25:16 (5502d)