第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 />タグ挿入) 本文3段落目 ■ ※※※本文 本文 |
続いて、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-properties | Eucalyptusが使用しているポートなどの設定情報を表示します。 |
euca-describe-storage-controllers | 登録されているSCの一覧を表示します。 |
euca-describe-user-groups | ユーザーグループの一覧を表示します。 |
euca-describe-users | ユーザーの一覧を表示します。 |
euca-describe-walruses | 登録されているWalrusの一覧を表示します。 |
euca-get-credentials | adminユーザーの証明書のZIPファイルをダウンロードします。CentOSでは依存関係が不足し動作しないため、これまでと同様に、euca_conf --get-credentialsで取得する必要があります。 |
euca-modify-property | Eucalyptusが使用しているポートなどの設定情報を更新します。 |
euca-register-cluster | CCを登録します。 |
euca-register-storage-controller | SCを登録します。 |
euca-register-walrus | Walrusを登録します。 |
■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を操作して遊んでいます。 |