installing-eucalyptus-source-16
以下のリストはEucalyptusをビルドし実行するために必要な環境の一覧です。私たちはディストリビューション固有の依存性に配慮したインストールガイドを提供していますが、以下のリストはサポートされていないディストリビューション上でEucalyptusをインストール、実行する場合に役に立つでしょう。(注釈:もしEucalyptus1.6.1以前からアップグレードする場合は、ユーザアカウント、インスタンスのイメージ、ボリューム、スナップショットを保持するためにアップグレードドキュメント?を参照してください)
以下のリストはソースコードのコンパイルに必要なプログラムの一覧です
Eucalyptusではフロントエンドとノードで異なるコンポーネントが実行されます。従ってフロントエンドとノードとでは実行に必要な環境が異なります。1台の物理マシンでフロントエンドとノードを兼ねることも可能です。
CentOS 5 に同梱されているOpenJDKでは、Eucalyptusに同梱されているGWTをコンパイルできません。そのため、JDK1.6.0を「手作業で」インストールする必要があります。インストールにはSun MicrosystemsのJDKを用います。Sun MicrosystemsのJDKは次のURLから取得することができます。http://java.sun.com/javase/downloads/index.jsp
以下は、それぞれのディストリビューションでビルドと実行に必要なパッケージをインストールする例です。
yast2 -i bzr python-paramiko make gcc ant apache2 apache2-devel\ java-1_6_0-openjdk java-1_6_0-openjdk-devel libvirt-devel libcurl-devel\ vlan dhcp-server bridge-utils ant-contrib ant-nodeps curl libvirt
apt-get install bzr gcc make apache2-threaded-dev ant openjdk-6-jdk\ libvirt-dev libcurl4-openssl-dev dhcp3-server vblade apache2 unzip curl vlan\ bridge-utils libvirt-bin kvm vtun
yum install -y java-1.6.0-openjdk-devel ant ant-nodeps libvirt-devel\ curl-devel httpd httpd-devel apr-devel openssl-devel dhcp
apt-get install gcc make apache2-threaded-dev ant openjdk-6-jdk\ libvirt-dev libcurl4-dev dhcp3-server vblade apache2 unzip curl vlan\ bridge-utils libvirt-bin kvm sudo vtun
詳細はディストリビューション毎のインストール手順を参照してください
Eucalyptusを操作するためには、Amazon EC2互換のコマンドラインツールをインストールする必要があります。Eucalyptusの各ドキュメントでは、Eucalyptusチームが配布しているeuca2oolsを使用する想定で記述されています。他にも各種のサードパーティ製のツールがあり、特定の用途ではそちらの方がよいかもしれません。詳細はEucalyptusのエコシステムページを参照してください。
以下の記述の中の $VERSION は実際のバージョン番号(1.6.2など)に置き換えるか、事前に環境変数 $VERSION として実際のバージョン番号をセットするようにしてください
全てのパッケージは以下のURLからたどることができます
http://open.eucalyptus.com/downloads
tar zvxf eucalyptus-$VERSION-src.tar.gz
展開すると、"eucalyptus-$VERSION"というディレクトリが作成されます。インストールを簡易に行うために、環境変数EUCALYPTUS_SRCをソースコードのディレクトリ、環境変数EUCALYPTUSをインストール先のディレクトリにセットします。(推奨は/opt/eucalyptusです)
cd eucalyptus-$VERSION export EUCALYPTUS_SRC=`pwd` export EUCALYPTUS=/opt/eucalyptus
Eucalyptusをインストールするには、Eucalyptusが依存しているパッケージをコンパイルする必要があります。依存パッケージは上記にある、eucalyptus-$VERSION-src-deps.tar.gzです。以下の記述では、依存する全てのパッケージが"$EUCALYPTUS_SRC/eucalyptus-src-deps/"以下に展開されており、インストール先は"$EUCALYPTUS/packages"であることを想定しています。
パッケージを展開し、インストール先のディレクトリを作成します。
cd $EUCALYPTUS_SRC tar zvxf ../eucalyptus-$VERSION-src-deps.tar.gz mkdir -p $EUCALYPTUS/packages/
パッケージをコンパイルし、インストールします。以下の手順はいくつかのLinuxディストリビューションでは動作しますが、全てのディストリビューションに共通ではありません。コンパイルにあたってはご使用のディストリビューションのドキュメントを参照してください。
cd $EUCALYPTUS/packages tar zxvf $EUCALYPTUS_SRC/eucalyptus-src-deps/axis2-1.4.tgz
Axis2/Cをコンパイルするためには、ApacheとAPRのヘッダファイルを参照できることが必要です。いくつかのディストリビューションでは以下のように環境変数をセットします。
Ubuntu, Debianの例
export APACHE_INCLUDES=/usr/include/apache2 export APR_INCLUDES=/usr/include/apr-1.0
CentOS 5の例
export APACHE_INCLUDES=/usr/include/httpd/ export APR_INCLUDES=/usr/include/apr-1/
OpenSuse? 11の例
export APACHE_INCLUDES=/usr/include/apache2/ export APR_INCLUDES=/usr/include/apr-1/
環境変数をセットしたら、Axis2/Cをコンパイルします。
export AXIS2C_HOME=$EUCALYPTUS/packages/axis2c-1.6.0 cd $EUCALYPTUS_SRC/eucalyptus-src-deps/ tar zvxf axis2c-src-1.6.0.tar.gz cd axis2c-src-1.6.0 CFLAGS="-w" ./configure --prefix=${AXIS2C_HOME} --with-apache2=$APACHE_INCLUDES --with-apr=$APR_INCLUDES --enable-multi-thread=no make ; make install
export AXIS2C_HOME=$EUCALYPTUS/packages/axis2c-1.6.0 export LD_LIBRARY_PATH=${AXIS2C_HOME}/lib:$LD_LIBRARY_PATH cd $EUCALYPTUS_SRC/eucalyptus-src-deps/ tar zvxf rampartc-src-1.3.0.tar.gz cd rampartc-src-1.3.0 ./configure --prefix=${AXIS2C_HOME} --enable-static=no --with-axis2=${AXIS2C_HOME}/include/axis2-1.6.0 make ; make install
次に$AXIS2C_HOME/axis2.xmlをエディタで開き、以下のように修正します。
"inflow"セクション内:
変更前
<!--phase name="Security"/-->
変更後
<phase name="Security"/> <phase name="Rahas"/>
'outflow'セクション内:
<!--phase name="Security"/-->
変更後
<phase name="Security"/>
事前に環境変数JAVA_HOMEがセットされていることを確認してください。
cd $EUCALYPTUS_SRC ./configure --with-axis2=$EUCALYPTUS/packages/axis2-1.4 --with-axis2c=$EUCALYPTUS/packages/axis2c-1.6.0 --enable-debug --prefix=$EUCALYPTUS make ; make install
a. もしEucalyptusを複数のノードで稼働させる場合は、コンパイルしたEucalyptusソフトウェア、各パッケージを全てのノードに配布します。(全てのソフトウェアパッケージが全てのノードで必要という訳ではないのですが、ソフトウェアの配布は全て行い、どのプログラムを起動するか設定するファイルを編集する方が作業がシンプルです)パッケージをノードに配布するにはrsyncなどのソフトウェアを使います。以下は例です。
rsync -a $EUCALYPTUS/ root@{node-host-1}:$EUCALYPTUS/ rsync -a $EUCALYPTUS/ root@{node-host-1}:$EUCALYPTUS/ ...
フロントエンドがrootユーザになれない環境(例えばUbuntuなど)であれば、個々のノードから以下のようにパッケージを取得した方が簡単です。
node1# rsync -a {user}@{front-end}:$EUCALYPTUS/ $EUCALYPTUS/ node2# rsync -a {user}@{front-end}:$EUCALYPTUS/ $EUCALYPTUS/ ...
【注意】Eucalyptusを全てのノードで同じディレクトリにインストールすると管理が容易です。私たちはこれを強く推奨します。
Eucalyptusは一般ユーザ権限で動作します。アカウントはeucalyptusになります。ほとんどのディストリビューションでは以下のコマンドでeucalyptusユーザアカウントを作成することができます。
useradd eucalyptus
OpenSUSEでは以下のようにしてください。
groupadd eucalyptus useradd eucalyptus -m -g eucalyptus
eucalyptusユーザアカウントは、ノード上のハイパーバイザをlibvirt経由で制御できる必要があります。いくつかのディストリビューションではeucalyptusユーザアカウントをlibvirtグループに追加することでeucalyptusユーザアカウントはlibvirt経由でハイパーバイザを制御することができます。eucalyptusユーザアカウントをlibvirtグループに追加するためには/etc/groupファイルを編集します。お使いのディストリビューションのlibvirtドキュメントを参照してください。より詳細な情報はハイパーバイザの設定?を参照してください
Eucalyptusではいくつかのネットワークモードを選ぶことができます。どのネットワークモードを選ぶかは、各ノード、クラスタを構成するLANの設定や提供できる機能、またEucalyptusクラウドでどのようなネットワーク形態を作るか、によって異なります。ほとんどのネットワークモードでは、各ノードのプライマリネットワークインターフェイスをbridgeモードに設定する必要があります(いくつかのディストリビューションのXen設定ではbridgeモードがデフォルトになっています)。詳細な情報とセットアップ手順はネットワークモードの設定を参照してください。どのネットワークモードを使うかを決めたら、各ノードのプライマリネットワークインターフェイスのbridgeモードを設定する必要があります。サンプルのbridge設定は以下(訳注:後にリンク作成)から参照することができます
個々のノード・コントローラが動作するコンピュートノードで、仮想マシンイメージのキャッシュ用ディレクトリを作成します。仮想マシンイメージは仮想マシンがノードで起動している間そのディレクトリ以下にキャッシュされます。作成したディレクトリは必ず空にしてください。また仮想マシンイメージをキャッシュできるだけの十分な容量を確保してください。以下の例では/usr/local/eucalyptusを使用しています。
ハイパーバイザの種類も含めた設定を、全てのノードの設定ファイルに書き込みます。この作業はeuca_confコマンドラインツールを使用して行います。
$EUCALYPTUS/usr/sbin/euca_conf -d $EUCALYPTUS --hypervisor kvm --instances /usr/local/eucalyptus --user eucalyptus --setup
いくつかのディストリビューションでは、Eucalyptusの実行前に追加で設定を行う必要があります。このセクションではディストリビューション毎に詳細を記述します。
Ubuntu 9.04 "Januty", 9.10 "Karmic"上で動作するapparmor*1の設定を変更し、dhcpd3がファイルシステムへの書き込みを許可するようにします。/etc/apparmor.d/usr.sbin.dhcpd3ファイルに以下の行を追加します。
/opt/eucalyptus/var/run/eucalyptus/net/ r, /opt/eucalyptus/var/run/eucalyptus/net/** r, /opt/eucalyptus/var/run/eucalyptus/net/*.pid lrw, /opt/eucalyptus/var/run/eucalyptus/net/*.leases* lrw, /opt/eucalyptus/var/run/eucalyptus/net/*.trace lrw,
上記の/opt/eucalyptusはEucalyptusのインストールディレクトリに置き換えてください。その後以下のコマンドでapparmorを再起動します。(【注意】変更がすぐに反映されない場合があります。その場合は少し待つか、システムを再起動してください)
/etc/init.d/apparmor stop /etc/init.d/apparmor start
また、UbuntuのDHCPデーモンはrootではなく'dhcpd'ユーザアカウントで動作するように設定されています。Eucalyptusのクラスタのヘッドノードの$EUCALYPTUS/etc/eucalyptus/eucalyptus.confを編集し、以下の2行を追加します。
VNET_DHCPDAEMON="/usr/sbin/dhcpd3" VNET_DHCPUSER="dhcpd"
この時点でEucalyptusは起動準備ができましたが、ネットワークモードを設定するにはネットワークモードの設定を参照して設定を行う必要があります。
システムの起動時にEucalyptusサービスを起動したい場合は以下のコマンドで起動スクリプトのシンボリックリンクを作成します。
クラウド・コントローラ
ln -sf $EUCALYPTUS/etc/init.d/eucalyptus-cloud /etc/init.d/eucalyptus-cloud
クラスタ・コントローラ
ln -sf $EUCALYPTUS/etc/init.d/eucalyptus-cc /etc/init.d/eucalyptus-cc
ノード・コントローラ
ln -sf $EUCALYPTUS/etc/init.d/eucalyptus-nc /etc/init.d/eucalyptus-nc
そしてディストリビューション毎のブート手順に組み込みます。組み込み方はディストリビューションによって異なります。
update-rc.dディレクトリがある場合:
update-rc.d eucalyptus-cloud defaults
chkconfigコマンドがある場合:
chkconfig eucalyptus-cloud on
Eucalyptusパッケージには設定の変更に使うためのeuca_confスクリプトが付属しています。ecua_confスクリプトから実行されるもののうち、いくつかは'$EUCALYPTUS/etc/eucalyptus/eucalyptus.conf'を書き換えます。'$EUCALYPTUS/etc/eucalyptus/eucalyptus.conf'設定ファイルはエディタを使用して編集することもできます。ecua_confスクリプトから実行されるものの中には、クラウド・コントローラのデータベースを操作します。euca_confスクリプトがクラウド・コントローラに対して実行する操作の多くはWebインターフェイスでも実装されています。詳細は後述します。
設定を変更することに加えて、euca_confスクリプトはx509証明書をEucalyptusクラウドの各ノード間で同期しようとします。同期にはrsyncとscpが使用されます。クラウドを構成する各ノードのrootアカウントをパスワードなしでsshログインできるように設定することを強くお勧めします。(設定がない場合、euca_conf実行時にrootのパスワードを聞いてきます)
Eucalyptus (ユーカリプタス) のインストールにて説明した通り、Eucalyptusは5種類のコンポーネントから成り立っています。
以下の説明ではノード・コントローラ以外の全てのコンポーネントが1つのシステム(フロントエンド)で動作していることを想定しています。ノード・コントローラが動作するシステムはコンピュート・ノードと呼ぶことにします。
最初にEucalyptusの動作に必要なプログラムが全てインストールされ、動作するようにしてください。Eucalyptusの動作時に問題があった場合、全てのエラーは$EUCALYPTUS/var/log/eucalyptusに出力されます。
次にフロントエンド、各コンピュート・ノードの$EUCALYPTUS/etc/eucalyptus/eucalyptus.confの内容があなたの構築した環境に適合しているかを注意深く確認してください。
全ての設定がで季節であれば、フロントエンドでクラウドサービスを開始します。その後、適切なシステム上で各コンポーネントの初期かスクリプトを実行します。ほとんどの場合、フロントエンドで実行するコマンドは以下のようになります。
# フロントエンドでクラウドサービスを有効にする $EUCALYPTUS/usr/sbin/euca_conf --enable cloud --enable walrus --enable sc # フロントエンドでクラウドサービスを開始する $EUCALYPTUS/etc/init.d/eucalyptus-cloud start # クラスタ・コントローラを開始する $EUCALYPTUS/etc/init.d/eucalyptus-cc start
各コンピュート・ノードで実行するコマンドは以下のようになります。
$EUCALYPTUS/etc/init.d/eucalyptus-nc start
各コンポーネントを停止するには上記コマンドの'start'を'stop'に置き換えて実行します。
【注意】後に$EUCALYPTUS/etc/eucalyptus/eucalyptus.confを変更した結果、クラスタ・コントローラに変更を反映させるには上記コマンドのstart/stop/restartではなく、cleanstart/cleanstop/cleanrestartを使用してください。これを使用すると、クラスタ・コントローラは内部で保持している設定を破棄し、設定ファイルから設定を再度読み込みます。