第5回:最新のEucalyptusにアップグレードする


 前回までで、Eucalyptus環境の構築からその利用までを一通り行いました。今回は、第1回で構築したEucalyptus環境を最新のEucalyptusであるバージョン2.0.1にアップグレードする方法と新規インストールの方法について説明します。新規インストールについては、第1回と同様の手順でインストール・設定が可能なため、詳細な説明は省略します。

 

Eucalyptus2.0.1について

 2010年8月24日にEucalyptusの新メジャーバージョン2.0.0がリリースされました。Eucalyptus2.0系では、1.6.2のバグの修正に加えて下記の特徴を持っています。

・EBS機能のiSCSIサポート
EBS機能は、今までAoE(ATA over Ethernet)を使用して実現されていましたが、新たにiSCSIを使用して実現する方式がサポートされるようになりました。デフォルトではiSCSIが使用されます。

・KVMのvirtioをサポート
ハイパーバイザにKVMを使用している場合、virtioを使用することで仮想マシンのI/O性能を向上させることができます。ただし、仮想マシンイメージもvirtioに対応するように作り替える必要があります。

・S3のバージョニング機能追加
Walrusにバージョニング機能が追加され、よりS3との互換性が強化されています。

・管理者向けのツールの追加
ユーザーの一覧を取得するコマンド等、管理者向けのコマンドが追加され、運用がしやすくなっています。

 今回は、Eucalyptus2.0系の最新版であるEucalyptus 2.0.1(2010/11/02リリース)に、Eucalyptus 1.6.2からアップグレードする方法と新規インストール方法を説明します。

 

Eucalyptusのアップグレードの前に

 EucalyptusのRPMパッケージのアップグレードを行うと、Eucalyptusのプロセスは自動的に再起動されます。Eucalyptusのプロセスを再起動しても、インスタンスが停止してしまうことはありませんが、Eucalyptusの内部情報の不整合が発生してしまうため、アップグレード作業を行う前に、あらかじめインスタンスとEucalyptusのプロセスを停止しておくことをお勧めします。

 euca2oolsを使用してすべてのインスタンスを停止後、下記を実行しEucalyptusのプロセスを停止します。

# CLC/CCで実施
/etc/init.d/eucalyptus-cloud stop
/etc/init.d/eucalyptus-cc cleanstop

# NCで実施
/etc/init.d/eucalyptus-nc stop

 

最新のEucalyptusパッケージにアップグレードする

 Eucalyptus1.6.2から2.0.1へアップグレードするには、まず1.6.2から2.0.0にアップグレードする必要があります(これは2.0.1の仕様で、直接1.6.2からアップグレードすることができないためです)。

 Eucalyptusのサイト(http://eucalyptussoftware.com/downloads/releases/)にアクセスし、「eucalyptus-2.0.0-centos-x86_64.tar.gz」をダウンロードします。

 先にCLC/CCから2.0.0へのアップグレードを行います。先ほど入手したEucalyptusのパッケージをCLC/CCのサーバーに配置し展開後、展開したディレクトリに移動します。

tar -xzf eucalyptus-2.0.0-centos-x86_64.tar.gz
cd eucalyptus-2.0.0-centos-x86_64/eucalyptus-2.0.0-rpm-deps-x86_64/

 依存するパッケージをyumコマンドでインストールします。

yum -y install scsi-target-utils perl-Convert-ASN1

 さらに、新たな依存パッケージをrpmコマンドでインストールします。

rpm -Uvh perl-Crypt-OpenSSL-Random-0.04-1.el5.rf.x86_64.rpm \
perl-Crypt-OpenSSL-RSA-0.25-1.el5.rf.x86_64.rpm \
perl-Crypt-X509-0.32-1.el5.rf.noarch.rpm

 Eucalyptusをrpmコマンドでアップグレードします。

cd ..
rpm -Uvh eucalyptus-2.0.0-1.x86_64.rpm \
eucalyptus-cc-2.0.0-1.x86_64.rpm \
eucalyptus-cloud-2.0.0-1.x86_64.rpm \
eucalyptus-common-java-2.0.0-1.x86_64.rpm \
eucalyptus-gl-2.0.0-1.x86_64.rpm \
eucalyptus-sc-2.0.0-1.x86_64.rpm \
eucalyptus-walrus-2.0.0-1.x86_64.rpm

 続いて、NCをアップグレードします。フロントエンドのアップグレードと同様に「eucalyptus-2.0.0-centos-x86_64.tar.gz」をNCのサーバーに配置し、展開します。

tar -xzf eucalyptus-2.0.0-centos-x86_64.tar.gz
cd eucalyptus-2.0.0-centos-x86_64/eucalyptus-2.0.0-rpm-deps-x86_64/

 依存するパッケージをyumでインストールします。

yum -y install perl-Convert-ASN1

 さらに、新たな依存パッケージをrpmコマンドでインストールします。

rpm -Uvh perl-Crypt-OpenSSL-Random-0.04-1.el5.rf.x86_64.rpm \
perl-Crypt-OpenSSL-RSA-0.25-1.el5.rf.x86_64.rpm \
perl-Crypt-X509-0.32-1.el5.rf.noarch.rpm

 Eucalyptusをrpmコマンドでアップグレードします。

cd ..

rpm -Uvh eucalyptus-2.0.0-1.x86_64.rpm \
eucalyptus-gl-2.0.0-1.x86_64.rpm \
eucalyptus-nc-2.0.0-1.x86_64.rpm

 これでCLC/CCとNCはEucalyptus2.0.0にアップグレードされました。続いてEucalyptus2.0.0から2.0.1へのアップグレードを行います。

 Eucalyptusのサイト(http://open.eucalyptus.com/downloads)にアクセスします。ページ中段にある「Eucalyptus via packages」から「REL-5/CentOS-5 RPMs 64-bit」を選択して、「eucalyptus-2.0.1-centos-x86_64.tar.gz」をダウンロードします。

Eucalyptus 2.0.1のダウンロード

 先にCLC/CCからアップグレードを行います。先ほど入手した最新のEucalyptusパッケージ「eucalyptus-2.0.1-1-centos-x86_64.tar.gz」をCLC/CCのサーバーに配置し展開後、展開したディレクトリに移動します。

tar -xzf eucalyptus-2.0.1-centos-x86_64.tar.gz
cd eucalyptus-2.0.1-centos-x86_64

 Eucalyptusをrpmコマンドでアップグレードします。

rpm -Uvh eucalyptus-2.0.1-1.x86_64.rpm \
eucalyptus-common-java-2.0.1-1.x86_64.rpm \
eucalyptus-cloud-2.0.1-1.x86_64.rpm \
eucalyptus-walrus-2.0.1-1.x86_64.rpm \
eucalyptus-sc-2.0.1-1.x86_64.rpm \
eucalyptus-cc-2.0.1-1.x86_64.rpm \
eucalyptus-gl-2.0.1-1.x86_64.rpm

 CLC/CCのアップグレード後、テキストエディターで設定ファイル/etc/eucalyptus/eucalyptus.confを開き、「VNET_DNS=""」の設定があるか確認します。設定がない、もしくはコメントアウトされている場合は、下記のコマンドを実行します。

[[ -z `grep ^VNET_DNS /etc/eucalyptus/eucalyptus.conf` ]] && \
sed -e 's/^VNET_ADDRSPERNET.*$/VNET_DNS=""\n

本文1段落目:Enterキーで新しい段落を作成します(<p>タグ挿入)

本文2段落目:「Shift」+「Enter」で、改行します(<br />タグ挿入)
 →2段落目、2行目

本文3段落目

 ※※※

本文

本文

/' /etc/eucalyptus/eucalyptus.conf

 続いて、NCをアップグレードします。フロントエンドのアップグレードと同様に「eucalyptus-2.0.1-centos-x86_64.tar.gz」をNCのサーバーに配置し、展開します。

tar -xzf eucalyptus-2.0.1-centos-x86_64.tar.gz
cd eucalyptus-2.0.1-centos-x86_64

 Eucalyptusをrpmコマンドでアップグレードします。

rpm -Uvh eucalyptus-2.0.1-1.x86_64.rpm \
eucalyptus-gl-2.0.1-1.x86_64.rpm \
eucalyptus-nc-2.0.1-1.x86_64.rpm

 以上で、Eucalyptus2.0.1へのアップグレードは完了です。最後に下記のコマンドを実行してEucalyptusを起動します。

# CLC/CCにて実施
/etc/init.d/eucalyptus-cloud start
/etc/init.d/eucalyptus-cc cleanstart

# NCにて実施
/etc/init.d/eucalyptus-nc start

 

euca2oolsのアップグレード

 Eucalyptus 2.0.0のリリースに合わせて、euca2oolsも新しいバージョンがリリースされました。ここでは、CLC/CCのeuca2oolsをアップグレードします。

 Eucalyptusのサイト http://open.eucalyptus.com/downloads にアクセスし、ページ中段にある「Euca2ools via packages」から「REL-5/CentOS-5 RPMs 64-bit」を選択し、「euca2ools-1.3.1-centos-x86_64.tar.gz」をダウンロードします。

euca2oolsのダウンロード

 ダウンロードしたファイルをCLC/CCのサーバーに配置し、展開します。

tar -xzf euca2ools-1.3.1-centos-x86_64.tar.gz
cd euca2ools-1.3.1-centos-x86_64

 euca2oolsをrpmコマンドでアップグレードインストールします。

rpm -Uvh euca2ools-1.3.1-1.x86_64.rpm

 

新規に追加された管理者コマンドを使う

 冒頭で説明した様に、Eucalyptus 2.0系では新たに管理者用のコマンドがいくつか追加されました。ただし、それらのコマンドをCentOSで使用するには下記のコマンドを実行しておく必要があります。これは、Eucalyptusのバグのためです。

for cmd in `rpm -ql eucalyptus-2.0.1-1|grep '/usr/sbin/euca-'`
do
sed -i -e 's|^\(#!/usr/bin/env python\)$|\12.5|' ${cmd}
done

 追加された管理者用コマンドとその概要は以下の通りですが、一部のコマンドについては既に次のバージョンで削除されているなどまだ安定していません。euca_confコマンドで同じことが実行可能なため、現時点では、euca_confコマンドを使用した方が良さそうです。

 


【管理者用コマンド一覧】








































ビュー名説明
euca-add-userユーザーを追加します。
euca-add-user-groupユーザーグループを追加します。
euca-delete-userユーザーを削除します。
euca-delete-user-groupユーザーグループを削除します。
euca-deregister-cluster登録されているCCを解除します。
euca-deregister-storage-controlle登録されているSCを解除します。
euca-deregister-walrus登録されているWalrusを解除します。
euca-describe-clusters登録されているCCの一覧を表示します。
euca-describe-propertiesEucalyptusが使用しているポートなどの設定情報を表示します。
euca-describe-storage-controllers登録されているSCの一覧を表示します。
euca-describe-user-groupsユーザーグループの一覧を表示します。
euca-describe-usersユーザーの一覧を表示します。
euca-describe-walruses登録されているWalrusの一覧を表示します。
euca-get-credentialsadminユーザーの証明書のZIPファイルをダウンロードします。CentOSでは依存関係が不足し動作しないため、これまでと同様に、euca_conf --get-credentialsで取得する必要があります。
euca-modify-propertyEucalyptusが使用しているポートなどの設定情報を更新します。
euca-register-clusterCCを登録します。
euca-register-storage-controllerSCを登録します。
euca-register-walrusWalrusを登録します。

 

Eucalyptus 2.0.1を新規インストールする

 Eucalyptus 2.0.1の新規インストールは、第1回で解説したEucalyptus 1.6.2のインストールとほとんど同じです。ここでは、Eucalyptus 2.0.1のクイックインストールを説明しますので、詳細は第1回をご覧ください。

 

OSのインストールと設定

 ネットワーク、ファイアウォールなどOSの設定については、第1回とまったく同じですが、CentOS 5.4もしくは5.5にインストールすることができます(なお、第1回のネットワークデバイスの説明にて「IPv6のオプションは外します」と説明しましたが、1.6.2および2.0系のEucalyptusではIPv6のオプションは外さなくともEucalyptusの動作に影響は与えないことがわかりました)。

 OSのインストールと設定のポイントをまとめます。

・NCにするサーバーには、インストールグループでVirtualization(仮想化)を選択する
・ファイアウォールとSELinuxを無効にする
・ループバックデバイスを増やす

# CLC/CCとNC両方にて実施
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

・NCでXenの設定を変更する

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
/etc/init.d/xend restart

・不要なサービスを止める

# CLC/CCとNC両方にて実施
chkconfig iptables off
chkconfig ip6tables off

# NCにて実施
chkconfig libvirtd off

 上記設定が終わったら、一度OSを再起動します。

 

Eucalyptusのインストールと設定

 CLC/CCにて依存関係のパッケージをyumでインストールします。1.6.2に比べて2個の依存パッケージ(scsi-target-utils, perl-Convert-ASN1)が増えました。

yum install -y java-1.6.0-openjdk ant ant-nodeps dhcp bridge-utils httpd scsi-target-utils perl-Convert-ASN1

 アップグレードの手順と同様に、Eucalyptusのサイトから「eucalyptus-2.0.1-centos-x86_64.tar.gz」をダウンロードし、CLC/CCサーバーに配置後、下記のコマンドを実行します。

tar -xzf eucalyptus-2.0.1-centos-x86_64.tar.gz
cd eucalyptus-2.0.1-centos-x86_64/eucalyptus-2.0.1-rpm-deps-x86_64/

 依存関係のパッケージをrpmコマンドでインストールします(なお、aoetoolsはeucalyptus.confにDISABLE_ISCSI="Y"と設定する場合に必要ですが、ISCSIを使用する場合は不要です)。

rpm -Uvh aoetools-21-1.el4.x86_64.rpm \
euca-axis2c-1.6.0-1.x86_64.rpm \
euca-rampartc-1.3.0-1.x86_64.rpm \
vblade-14-1mdv2008.1.x86_64.rpm \
vtun-3.0.2-1.el5.rf.x86_64.rpm \
lzo2-2.02-3.el5.rf.x86_64.rpm\
perl-Crypt-OpenSSL-Random-0.04-1.el5.rf.x86_64.rpm\
perl-Crypt-OpenSSL-RSA-0.25-1.el5.rf.x86_64.rpm\
perl-Crypt-X509-0.32-1.el5.rf.noarch.rpm\
python25-2.5.1-bashton1.x86_64.rpm\
python25-devel-2.5.1-bashton1.x86_64.rpm\
python25-libs-2.5.1-bashton1.x86_64.rpm

 Eucalyptusのパッケージをインストールします。

cd ..
rpm -Uvh eucalyptus-2.0.1-1.x86_64.rpm \
eucalyptus-common-java-2.0.1-1.x86_64.rpm \
eucalyptus-cloud-2.0.1-1.x86_64.rpm \
eucalyptus-walrus-2.0.1-1.x86_64.rpm \
eucalyptus-sc-2.0.1-1.x86_64.rpm \
eucalyptus-cc-2.0.1-1.x86_64.rpm \
eucalyptus-gl-2.0.1-1.x86_64.rpm

 続いてNCをインストールします。初めに、依存するパッケージをyumでインストールします。

yum -y install httpd perl-Convert-ASN1

 Eucalyptusのサイトから入手した「eucalyptus-2.0.1-centos-x86_64.tar.gz」をNCに配置し、下記のコマンドを実行します。

tar -xzf eucalyptus-2.0.1-centos-x86_64.tar.gz
cd eucalyptus-2.0.1-centos-x86_64/eucalyptus-2.0.1-rpm-deps-x86_64/

 依存するパッケージをrpmコマンドでインストールします。

rpm -Uvh aoetools-21-1.el4.x86_64.rpm \
euca-axis2c-1.6.0-1.x86_64.rpm \
euca-rampartc-1.3.0-1.x86_64.rpm\
perl-Crypt-OpenSSL-Random-0.04-1.el5.rf.x86_64.rpm\
perl-Crypt-OpenSSL-RSA-0.25-1.el5.rf.x86_64.rpm\
perl-Crypt-X509-0.32-1.el5.rf.noarch.rpm\
python25-2.5.1-bashton1.x86_64.rpm\
python25-devel-2.5.1-bashton1.x86_64.rpm\
python25-libs-2.5.1-bashton1.x86_64.rpm

 Eucalyptusのパッケージをインストールします。

cd ..
rpm -Uvh eucalyptus-2.0.1-1.x86_64.rpm \
eucalyptus-gl-2.0.1-1.x86_64.rpm \
eucalyptus-nc-2.0.1-1.x86_64.rpm

 NCにて以下のコマンドを実行し、eucalyptusユーザーでHypervisorの情報が取得できるかを確認します。(このとき、情報が取得できない場合は、/etc/xen/xend-config.sxpの設定を見直してください)

su eucalyptus -c "virsh list"
Id Name State
----------------------------------
0 Domain-0 running

 Eucalyptusの設定ファイルを編集します。

# CLC/CCにて
sed -i -e 's/^\(VNET_PUBINTERFACE\)=.*/\1="eth0"/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^\(VNET_PRIVINTERFACE\)=.*/\1="eth1"/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^#\(VNET_MODE="MANAGED"\)/\1/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^#\(VNET_SUBNET\)="192.168.0.0"/\1="10.1.0.0"/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^#\(VNET_NETMASK="255.255.0.0"\)/\1/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^#\(VNET_DNS\)="your-dns-server-ip"/\1=""/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^#\(VNET_ADDRSPERNET\)="32"/\1="64"/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^#\(VNET_PUBLICIPS\)=.*/\1="192.168.32.200-192.168.32.210"/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^\(VNET_MODE="SYSTEM"\)/#\1/' /etc/eucalyptus/eucalyptus.conf

# NCにて
sed -i -e 's/^\(VNET_PUBINTERFACE\)=.*/\1="eth0"/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^\(VNET_PRIVINTERFACE=.*\)/#\1/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^#\(VNET_MODE="MANAGED"\)/\1/' /etc/eucalyptus/eucalyptus.conf
sed -i -e 's/^\(VNET_MODE="SYSTEM"\)/#\1/' /etc/eucalyptus/eucalyptus.conf

 CLC/CCとNCでeucalyptusのサービスを起動します。

# CLC/CCにて
/etc/init.d/eucalyptus-cloud start
/etc/init.d/eucalyptus-cc start

# NCにて
/etc/init.d/eucalyptus-nc start

 CLC/CCにて各コンポーネントの情報を登録します(IPアドレスは筆者環境の値ですので、適宜自分の環境に読み替えてください)。

# Walrusの登録(IPアドレスはCLC/CCのeth0を指定)
euca_conf --register-walrus 192.168.32.20

# CCの登録("cluster0"は任意の名称、IPアドレスはCLC/CCのeth1を指定)
euca_conf --register-cluster cluster0 192.168.100.1

# SCの登録("cluster0"はCCの登録で指定した名称、IPアドレスはCLC/CCのeth1を指定)
euca_conf --register-sc cluster0 192.168.100.1

# NCの登録(IPアドレスはNCのeth0を指定)
euca_conf --register-nodes "192.168.100.10"

 続いて、Web管理画面から設定を行います。Webブラウザで https://192.168.32.20:8443/ にアクセスすると、ログイン画面が表示されます。

 最初から作成されている管理者のUserとPasswordはadminですので、これを入力してログインします。ログイン後、1.6.2ではパスワード変更画面に遷移していましたが2.0.1では遷移されなくなりました。そのため、ログイン後はadminユーザー情報を編集しパスワードを再設定することをお勧めします。

 最後に、Configurationタブをクリックし、「Clusters:」セクションにある「Interface:」の値をデフォルトのeth0からeth1に変更し、保存することでインストールと設定は完了します。

 ここまでの連載では、読者の皆様の環境でEucalytpusが動かせることを目的に、やや駆け足で説明してきました。次回からの連載では、Eucalyptusの内部の説明などに触れていく予定です。このため、次回ではこれまで省略してきたEucalyptusの設定について、詳細に解説します。

 


羽深 修
Eucalyptus歴はまだ1年ですが、周囲からはEucalyptus中毒と勘違いされているようです。Japan Eucalyptus User Groupの活動に参加し、オープンソースカンファレンスでネタなどを披露しています。度々Eucalyptusへのパッチも書いてます。ちなみに仕事ではCentOS + Xenという環境でEucalyptusを利用していますが、自宅のEucalyptus環境はGentoo Linux + KVMで動かしています。

志田 隆弘
主にEucalyptusやクラウドとはあまり関係のない分野でちょこちょこと活動していました。Eucalyptusはバージョン 1.3の頃からいじり始め、かれこれ2年近くEucalyptusに浸かった生活をしています。Eucalyptus 1.4が出たタイミングで、Tanacasinoという名前のGUIクライアントを作ったりしていました。最新のEucalyptusで動作するので、ぜひ使ってみてください。

田中 智文
志田さんとともに初期の頃からEucalyptusの調査・検証・使用してきました。志田さんの作成したTanacasinoのメンテナンスと機能拡張を行っています。新婚ほやほやなので家でのハック活動時間が少ないですが、Walrus Clientを作ってみたりbotoを使ってEucalyptusを操作して遊んでいます。
関連情報
(羽深 修/志田 隆弘/田中 智文)
2010/11/19 06:00