[[installing-eucalyptus-source-16]] #contents ---- * ソースからのインストール [version 1.6] [#xae4a45b] **1. 前提条件 [#a29e14f6] 以下のリストはEucalyptusをビルドし実行するために必要な環境の一覧です。私たちはディストリビューション固有の依存性に配慮したインストールガイドを提供していますが、以下のリストはサポートされていないディストリビューション上でEucalyptusをインストール、実行する場合に役に立つでしょう。(注釈:もしEucalyptus1.6.1以前からアップグレードする場合は、ユーザアカウント、インスタンスのイメージ、ボリューム、スナップショットを保持するために[[アップグレードドキュメント>Eucalyptus-Upgrade-1.6.1]]を参照してください) ***ソースコードコンパイルの前提条件 [#ef9672aa] 以下のリストはソースコードのコンパイルに必要なプログラムの一覧です -C コンパイラ -Java 開発キット (SDK) version 1.6 以上 -Apache ant 1.6.5 以上 -libc 開発環境 -pthreads 開発環境 -libvirt 開発環境 -Axis2C and rampart 開発環境 (Eucalyptusに同梱) -Curl 開発環境 -openssl 開発環境 -オプション: zlib 開発環境 ***実行の前提条件 [#aae9be32] Eucalyptusではフロントエンドとノードで異なるコンポーネントが実行されます。従ってフロントエンドとノードとでは実行に必要な環境が異なります。1台の物理マシンでフロントエンドとノードを兼ねることも可能です。 ***フロントエンド実行環境 [#y7a664f2] -[[Java 6:http://www.java.com/en/download/index.jsp]]はフロントエンドにおけるEucalyptusコンポーネントの動作に必要です。また環境変数JAVA_HOMEがJDKのホームディレクトリを指すように設定してください。いくつかのディストリビューションでデフォルトでインストールされるGNU Compiler for Java (gcj)はEucalyptusコンポーネントの動作に適しません。 -[[Perl:http://www.perl.org/]]はEucalyptusを手助けするスクリプトを実行するために必要です。 -ヘッドノードではクラウドのユーザのメールアドレスにメールを配送・リレーするためのサーバを、ポート25番で動作する必要があります。Sendmail, Exim, Postfixでもよいですが、メールを受信する仕組みが不要なため、もっとシンプルなものでもよいでしょう。多くのLinuxディストリビューションはこれらのプログラムは簡単にインストールすることができます。メール配送プログラムが正常に動作していることを確認するには端末から"mail"コマンドで自分のメール宛にメールを送るのがいいでしょう。 -どのネットワークモードを使うかによって依存するプログラムは変わってきます(個々のネットワークモードの詳細は[[ネットワーク設定>EucalyptusNetworking_v1.6]]を参照してください) --全てのモード: ---iproute, iptablesパッケージ (ipコマンドと、iptablesコマンドが動作すること) --SYSTEMモード以外の全てのモード +++ ISC DHCP Daemon version 3.0.X 互換のDHCPサーバ --MANAGEDモード、もしくはMANAGED-NOVLANモード: +++ bridge-utilsパッケージ (brctlコマンドが動作すること) +++ vtun package(マルチクラスター構成の場合必要) --MANAGED モード: +++ vlan パッケージ (vconfig コマンドが動作すること) -持続型ブロックストレージ(EBS)を動作させるために、フロントエンドには以下のパッケージがインストールされていることが必要です --lvm2 パッケージ (lvm コマンドなどが動作すること) --aoetools パッケージ。全てのノードと同様にフロントエンドにもaoeモジュールがロードされている必要があります。もし使用するカーネルがATA-over-Ethernetをサポートしていないようであれば、サポートするように変更する必要があります。 --vblade パッケージ ***ノード実行環境 [#pce96ef7] -[[Perl:http://www.perl.org/]]実行環境は、ノード・コントローラでスクリプトを実行するために必要です -2種類のハイパーバイザがサポートされています ++[[Xen:http://xen.org/]] 3.0.x以上 --xen-utilsパッケージが使用できる必要があります(xmコマンドが動作すること) ++[[KVM:http://www.linux-kvm.org/page/Main_Page]] -どのネットワークモードを使うかによって依存するプログラムは変わってきます(個々のネットワークモードの詳細は[[ネットワーク設定>EucalyptusNetworking_v1.6]]を参照してください) --全てのモード: ---iproute, iptablesパッケージ (ipコマンドと、iptablesコマンドが動作すること) --MANAGEDモード、もしくはMANAGED-NOVLANモード: +++ bridge-utilsパッケージ (brctlコマンドが動作すること) --MANAGED モード: +++ vlan パッケージ (vconfig コマンドが動作すること) -libvirtdパッケージ(基本的にはlibvirtdが動作することですが、ハイパーバイザの種類によって異なります) ***全てのEucalyptusコンポーネントに共通 [#g10e6aed] -Eucalyptusコンポーネントのインストールと実行にはroot権限が必要です(デフォルトでは、実行後は別のユーザ権限で動作します)。このドキュメントでは全てのコマンドがroot権限で実行されると想定しています。 ***CentOSユーザ向けの注意: [#we3af766] CentOS 5 に同梱されているOpenJDKでは、Eucalyptusに同梱されているGWTをコンパイルできません。そのため、JDK1.6.0を「手作業で」インストールする必要があります。インストールにはSun MicrosystemsのJDKを用います。Sun MicrosystemsのJDKは次のURLから取得することができます。http://java.sun.com/javase/downloads/index.jsp ***ディストリビューション毎の例 [#na176c23] 以下は、それぞれのディストリビューションでビルドと実行に必要なパッケージをインストールする例です。 -Opensuse 11.1の場合、Eucalyptusのサイトから適切なRPMパッケージをダウンロード、インストールします。その後、以下のコマンドで全ての必要なパッケージをインストールします。 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 -Ubuntu 9.04, 9.10の場合は、以下のコマンドで全ての必要なパッケージをインストールします。 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 -CentOS 5の場合、Eucalyptusのサイトから適切なRPMパッケージをダウンロード、インストールします。その後、以下のコマンドで全ての必要なパッケージをインストールします。 yum install -y java-1.6.0-openjdk-devel ant ant-nodeps libvirt-devel\ curl-devel httpd httpd-devel apr-devel openssl-devel dhcp -Debianの場合は、以下のコマンドで全ての必要なパッケージをインストールします。 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操作のためのツール [#a1bb5286] Eucalyptusを操作するためには、Amazon EC2互換のコマンドラインツールをインストールする必要があります。Eucalyptusの各ドキュメントでは、Eucalyptusチームが配布している[[euca2ools:http://open.eucalyptus.com/wiki/Euca2oolsGuide]]を使用する想定で記述されています。他にも各種のサードパーティ製のツールがあり、特定の用途ではそちらの方がよいかもしれません。詳細は[[Eucalyptusのエコシステム:http://open.eucalyptus.com/wiki/ToolsEcosystem]]ページを参照してください。 **2. Eucalyptusの各パッケージをダウンロードする [#n9e5ab3e] 以下の記述の中の $VERSION は実際のバージョン番号(1.6.2など)に置き換えるか、事前に環境変数 $VERSION として実際のバージョン番号をセットするようにしてください +まず以下の2つのパッケージのうちどちらかをダウンロードします ++eucalyptus-$VERSION-src.tar.gz (Eucalyptusのソースコードとjavaライブラリを含む) ++eucalyptus-$VERSION-src-online.tar.gz (Eucalyptusのソースコードを含む。javaライブラリはコンパイル時にダウンロードされる) +次に以下のパッケージをダウンロードします --eucalyptus-$VERSION-src-deps.tar.gz (EucalyptusのCライブラリ) 全てのパッケージは以下の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 **3. 依存するパッケージをコンパイルする [#k0922749] 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ディストリビューションでは動作しますが、全てのディストリビューションに共通ではありません。コンパイルにあたってはご使用のディストリビューションのドキュメントを参照してください。 -a. Axis2 cd $EUCALYPTUS/packages tar zxvf $EUCALYPTUS_SRC/eucalyptus-src-deps/axis2-1.4.tgz -b. Axis2/C 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 -c. Rampart/C 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"/> **4. Eucalyptusをコンパイルする [#dfa11735] 事前に環境変数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 **5. コンパイルしたEucalyptusをインストールする [#g1ac3e98] 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を全てのノードで同じディレクトリにインストールすると管理が容易です。私たちはこれを強く推奨します。 **6. ホストの設定 [#a49cb2b5] ***a. 全てのホストで'eucalyptus'ユーザアカウントを作成 [#c0df0aab] Eucalyptusは一般ユーザ権限で動作します。アカウントはeucalyptusになります。ほとんどのディストリビューションでは以下のコマンドでeucalyptusユーザアカウントを作成することができます。 useradd eucalyptus OpenSUSEでは以下のようにしてください。 groupadd eucalyptus useradd eucalyptus -m -g eucalyptus ***b. ハイパーバイザの設定 [#pf10a0d2] eucalyptusユーザアカウントは、ノード上のハイパーバイザをlibvirt経由で制御できる必要があります。いくつかのディストリビューションではeucalyptusユーザアカウントをlibvirtグループに追加することでeucalyptusユーザアカウントはlibvirt経由でハイパーバイザを制御することができます。eucalyptusユーザアカウントをlibvirtグループに追加するためには/etc/groupファイルを編集します。お使いのディストリビューションのlibvirtドキュメントを参照してください。より詳細な情報は[[ハイパーバイザの設定>hypervisor-configuration]]を参照してください ***c. ネットワークの設定 [#g58ee645] Eucalyptusではいくつかのネットワークモードを選ぶことができます。どのネットワークモードを選ぶかは、各ノード、クラスタを構成するLANの設定や提供できる機能、またEucalyptusクラウドでどのようなネットワーク形態を作るか、によって異なります。ほとんどのネットワークモードでは、各ノードのプライマリネットワークインターフェイスをbridgeモードに設定する必要があります(いくつかのディストリビューションのXen設定ではbridgeモードがデフォルトになっています)。詳細な情報とセットアップ手順は[[ネットワークモードの設定>EucalyptusNetworking_v1.6]]を参照してください。どのネットワークモードを使うかを決めたら、各ノードのプライマリネットワークインターフェイスのbridgeモードを設定する必要があります。サンプルのbridge設定は[[以下(訳注:後にリンク作成)>EucalyptusNetworking_v1.6]]から参照することができます Eucalyptusではいくつかのネットワークモードを選ぶことができます。どのネットワークモードを選ぶかは、各ノード、クラスタを構成するLANの設定や提供できる機能、またEucalyptusクラウドでどのようなネットワーク形態を作るか、によって異なります。ほとんどのネットワークモードでは、各ノードのプライマリネットワークインターフェイスをbridgeモードに設定する必要があります(いくつかのディストリビューションのXen設定ではbridgeモードがデフォルトになっています)。詳細な情報とセットアップ手順は[[ネットワークモードの設定>EucalyptusNetworking_v1.6]]を参照してください。どのネットワークモードを使うかを決めたら、各ノードのプライマリネットワークインターフェイスのbridgeモードを設定する必要があります。サンプルのbridge設定は[[以下(Eucalyptusのネットワーク設定)>EucalyptusNetworking_v1.6]]から参照することができます ***d. Eucalyptusコンポーネントの設定 [#y47ffb8b] 個々のノード・コントローラが動作するコンピュートノードで、仮想マシンイメージのキャッシュ用ディレクトリを作成します。仮想マシンイメージは仮想マシンがノードで起動している間そのディレクトリ以下にキャッシュされます。作成したディレクトリは必ず空にしてください。また仮想マシンイメージをキャッシュできるだけの十分な容量を確保してください。以下の例では/usr/local/eucalyptusを使用しています。 ハイパーバイザの種類も含めた設定を、全てのノードの設定ファイルに書き込みます。この作業はeuca_confコマンドラインツールを使用して行います。 - -d オプションはEucalyptusのインストール先ディレクトリ($EUCALYPTUS)を指定します - --hypervisor オプションはハイパーバイザの種類('xen' もしくは 'kvm')を指定します - --instances オプションはノードの仮想マシンイメージのキャッシュディレクトリを指定します - --user オプションはEucalyptusコンポーネントを実行するユーザアカウントを指定します - --setup オプションを指定すると、euca_confツールは初回起動時設定を行います $EUCALYPTUS/usr/sbin/euca_conf -d $EUCALYPTUS --hypervisor kvm --instances /usr/local/eucalyptus --user eucalyptus --setup ***e. ディストリビューション固有の設定 [#ub70f2da] いくつかのディストリビューションでは、Eucalyptusの実行前に追加で設定を行う必要があります。このセクションではディストリビューション毎に詳細を記述します。 Ubuntu 9.04 "Januty", 9.10 "Karmic"上で動作するapparmor((AppArmor http://ja.opensuse.org/AppArmor))の設定を変更し、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は起動準備ができましたが、ネットワークモードを設定するには[[ネットワークモードの設定>EucalyptusNetworking_v1.6]]を参照して設定を行う必要があります。 ***f. スタートアップスクリプトの編集 [#g7da304b] システムの起動時に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 **7. Eucalyptusの実行 [#s1de6654] 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 (ユーカリプタス) のインストール>EucalyptusInstall_v1.6]]にて説明した通り、Eucalyptusは5種類のコンポーネントから成り立っています。 +クラウド・コントローラ(CLC) +Walrus +クラスタ・コントローラ(CC) +ストレージ・コントローラ(SC) +ノード・コントローラ(NC) 以下の説明ではノード・コントローラ以外の全てのコンポーネントが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を使用してください。これを使用すると、クラスタ・コントローラは内部で保持している設定を破棄し、設定ファイルから設定を再度読み込みます。 戻る:[[Eucalyptus (ユーカリプタス) のインストール>EucalyptusInstall_v1.6]] 進む:[[ディストリビューション別のパッケージからのインストール>installation-distribution-specific-binary-packages]]