Eucalyptus で Ubuntu Enterprise Cloud を始めてみましょう †メモ:Ubuntu 9.04 向けの文章は、Eucalyptus-Jaunty? を御覧ください。 概要 †Eucalyptus クラウド・コンピューティングは、システムが多種多様な環境で動作するように、とても柔軟なカスタマイズが可能です。このチュートリアルでは、Eucalyptus を使ってプライベート・クラウドを構築することを取り扱います。 チュートリアルの目標 †チュートリアルでは、インストール方法・設定変更の仕方・実行のさせかたを学びます。ステップ1~3では "front-end"(フロントエンド) の基本的なセットアップを行います。これは、Eucalyptus で仮想マシン(VM)のインスタンスを操作する唯一のコントローラです。 ステップ4~6では、自分自身のプライベート・クラウド環境を構築する方法を取り扱います。オプションとして、RightScale (ライトスケール) というクラウド管理プラットフォームへ、自分のプライベート・クラウドを登録する方法も取り扱います。
ステップ1:準備 †Eucalyptus には、以下の高水準なパッケージを含んでいます。
ステップ2:インストールと設定 †基本的なEucalyptusセットアップでは、システムは2台のマシン(フロントエンドとノード)で構成されます。フロントエンドの構成では、eucalyptus-cloudとeucalyptus-ccを実行します。ノードは、ノード・コントローラ(eucalyptus-nc)を実行します。複数のホストを用いた、より複雑なセットアップを行うことで、クラウド・コントローラとクラスタ・コントローラを切り離すことができます。次の図は、シンプルなセットアップ構成図です。 パッケージ等を使ってインストールをする前に、Eucalyptusシステムを完全に動作させるためには、ほかにも幾つかの必要条件があります。
ステップ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 これまで設定してきた情報を、次の図にまとめました。 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
ステップ4:初めてのログインと、クラウドの登録 †クラウド・コントローラが初めて起動するときは、クラウドを管理する環境をセットアップするために、幾つかの構成ステップを踏む必要があります。ウェブ・ブラウザから(該当マシンを離れてもいいですし、Ubuntu サーバ上で作業をしても構いません)、以下の URL にアクセスしてください。 https://<クラウド・コントローラの IP アドレス>:8443/ ログイン時には「admin」のユーザ名と、「admin」のパスワードを入力します(初回ログイン時には admin パスワードの変更を促されます)。また、今該当サーバ上で操作をしているのであれば、フロントエンドの IP アドレスの代わりに「localhost」を使っても構いません。それから、画面上の指示に従ってください。初回ログイン時の設定作業を終えるときは、画面の左上部分にある「credentials」タブをクリックしてください。「Download Certificate」(証明書をダウンロードする)ボタンをクリックし、自分自身の証明書を取得できます。 重要! ブラウザからの接続は、安全なものである必要があります。ブラウザに表示されている 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アドレス> ここまでの流れをおさらいしますと、次の図のような構成になります。 セットアップがうまくいきませんか?もっとやりやすい方法はありますか? |