[[PageOutline]]
{{{
#!html
Eucalyptus 安裝
}}}
= 【1.序言】 =
* Eucalyptus的安裝主要有兩種方法:
1. __'''''從 Source 安裝'''''__
2. __'''''從套件安裝'''''__,官方有提供[http://open.eucalyptus.com/downloads RPM 套件]可安裝,或是 OS 為 Ubuntu 9.04 直接可 apt-get install
* 本安裝文件想了解 Eucalyptus 的架構,所以選擇從 Source 安裝
* Eucalyptus 太長了 @@,之後文章用 Euc 簡稱
----
= 【2.安裝步驟】 =
* 主要參考 [http://open.eucalyptus.com/wiki/EucalyptusAdministratorGuide_v1.4 Eucalyptus Administrator Guide v1.4]安裝步驟,此文件主要分為5部份:(1)__必要的環境設定__,(2)__安裝__,(3)__配置__,(4)__管理__,(5)__問題排解__
== '''''__『2.1 必要的環境設定』__''''' ==
* __2.1.1__ 從 Source 安裝所需的套件 -> (1)C compilers (2)Java Developer Kit (SDK) version 1.6 or above (3)Apache ant 1.6.5 or above (4)Curl development package (5)openssl development package
* __2.1.2__ 執行 Eucalyptus 需要的套件 (Euc 有分為 front-end 和 node,安裝的 Euc 元件也不同)
* Front-end run-time dependencies -> (1) Java6 (2) Apache ant -> cloud controller (3)Java(TM) Cryptography Extension (JCE) (4) Run a server on port 25 & Exim, postfix to send mail (5) Dhcp3-server (6) iptables, vlan(vconfig) (7) 如果從 rpm 安裝的話,必須再安裝 xen-libs RPM
* Node run-time dependencies -> (1) xen > 3.0.X: enabule Unix Socket for Euc to contorl Xen -> xend-unix-server yes,Euc 透過 libvirt >0.6.0 與 hypervisior 互動,需確定 libvrt 是正常的來執行 Eucalyptus Node Controller (2) Euc 支援各種網路型式 : vlan (vconfig), bridge-utils, xen-utils
* __2.1.3__ 與 Euc 互動的套件 -> 需安裝 EC2 command-line tools: (1)[http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-30349.zip ec2-api-tools-1.3-30349] (2)[http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.3-26357.zip ec2-ami-tools-1.3-26357]
== '''''__『2.2 從 source 安裝』__''''' ==
* __2.2.0__ 安裝前需注意以完成 2.1 的部份,此外 Euc 分為三個元件: (元件間透過 SOAP with WS-security 來溝通,一個 Cluster 只會有一個 Cluster controller() 被執行再 head node 和每個 node 都個有一個 Node controller)
1. '''Cloud controller(CLC)''' -> Java 寫的程式,負責高階的資源排程和系統 accounting,此外也提供 Web services 和網頁介面讓外界使用者可以連接
2. '''Cluster controller(CC)''' -> 用 C 撰寫,在 Apache 內當成 Web server 來佈署
3. '''Node controller(NC)''' -> 用 C 撰寫,在 Apache 內當成 Web server 來佈署
>>3個元件的架構圖 -> [[Image(euc_3com.png)]]
* __2.2.1__ [http://open.eucalyptus.com/downloads 下載 Eucalyptus] -> 下載兩個檔案 eucalyptus-1.4-src.tar.gz (Eucalyptus source) & eucalyptus-1.4-src-deps.tar.gz
{{{
#!sh
### 1.解壓縮 ###
$ su
$ sudo tar zvxf eucalyptus-1.4-src.tar.gz -C ~
### 2.設定環境變數 ###
$ echo "export EUCALYPTUS_SRC=/root/" >> /root/.bashrc
$ echo "export EUCALYPTUS=/opt/eucalyptus" >> /root/.bashrc
$ source /root/.bashrc
### 3.安裝 Euc 相依的軟體 ###
$ tar zvxf eucalyptus-1.4-src-deps.tar.gz -C $EUCALYPTUS_SRC
$ mkdir -p $EUCALYPTUS/packages/
### 3.1 Axis2 ###
$ cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
$ tar zxvf axis2-1.4.tgz -C $EUCALYPTUS/packages/
### 3.2 Apache(httpd) ###
$ tar zvxf httpd-2.2.8.tar.gz
$ cd httpd-2.2.8
$ CFLAGS="-DBIG_SECURITY_HOLE" ./configure --prefix=$EUCALYPTUS/packages/httpd-2.2.8 --with-included-apr
$ make ; make install
### 3.3 Axis2/C ###
$ cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
$ export AXIS2C_HOME=$EUCALYPTUS/packages/axis2c-1.5.0
$ tar zvxf axis2c-src-1.5.0.tar.gz
$ cd axis2c-src-1.5.0
$ ./configure --with-apache2=$EUCALYPTUS/packages/httpd-2.2.8/include --prefix=${AXIS2C_HOME}
$ make ; make install
### 3.4 Rampart/C ###
$ cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
$ export AXIS2C_HOME=$EUCALYPTUS/packages/axis2c-1.5.0
$ export LD_LIBRARY_PATH=${AXIS2C_HOME}/lib:$LD_LIBRARY_PATH
$ tar zvxf rampartc-src-1.2.0.tar.gz
$ cd rampartc-src-1.2.0
$ ./configure --prefix=${AXIS2C_HOME} --enable-static=no --with-axis2=${AXIS2C_HOME}/include/axis2-1.5.0
$ make ; make install
$ vim $AXIS2C_HOME/axis2.xml
### 3.5 Libvirt ###
$ cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
$ tar zvxf libvirt-0.4.6.tar.gz
$ cd libvirt-0.4.6
$ ./configure --prefix=$EUCALYPTUS/packages/libvirt-0.4.6 --without-storage-disk --without-storage-iscsi --without-storage-fs --without-storage-lvm --without-libvirtd --without-remote --without-lxc --without-kvm --without-qemu --without-sasl --without-openvz
$ make ; make install
### 3.6 Other software ###
* Java Development Kit (JDK), version 1.6 or above
* Apache ant, version 1.6 or above
* GNU C compiler
* Make
}}}
* __2.2.2__ Building Eucalyptus
{{{
$ cd $EUCALYPTUS_SRC
$ ./configure --with-axis2=$EUCALYPTUS/packages/axis2-1.4 --with-axis2c=$EUCALYPTUS/packages/axis2c-1.5.0 --with-libvirt=$EUCALYPTUS/packages/libvirt-0.4.6/ --prefix=$EUCALYPTUS
$ make ; make install
}}}
* __2.2.3__ Eucalyptus on multiple machines
{{{
### 設定 Euc 設定檔的位置 ###
$ $EUCALYPTUS/usr/sbin/euca_conf -d $EUCALYPTUS $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf
### 將 $EUCALYPTUS/ 同步複製到其他 nodes ###
$ rsync -a $EUCALYPTUS/ hostname1:$EUCALYPTUS/
$ rsync -a $EUCALYPTUS/ hostname2:$EUCALYPTUS/
$ ...
}}}
== '''''__『2.3 配置』__''''' ==
* __2.3.1__ 系統配置
* Front-end
{{{
$EUCALYPTUS/usr/sbin/euca_conf -cc Y -cloud Y -nc N $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf
}}}
* Node controler
{{{
$EUCALYPTUS/usr/sbin/euca_conf -nodes " ... " $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf
}}}
* 設定 storage 存放 image template
{{{
for x in hostname1 hostname2 ... hostnameN ; do \
ssh $x "mkdir -p /usr/local/instances/; $EUCALYPTUS/usr/sbin/euca_conf -cc N -cloud N -nc Y -instances /usr/local/instances $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf"
done
}}}
* 網路配置 (提供三種高階的網路 modes,必須選擇合適的網路模式再 front-end 和 node 在 'eucalyptus.conf'設定檔內)
1. SYSTEM Mode -> 最簡單的網路配置,Euc 發 random MAC 位址,使用 Xen Bridge,配合 DHCP 來發 IP,適合小環境測試用
2. STATIC Mode -> 此模式可讓 Euc 管理者管理 VM 的 MAC 和 IP 位址(和 SYSTEM Mode 一樣會使用到 Xen Bridge 和 DHCP),適合當管理者有一群 MAC/IP 時
3. MANAGED Mode -> 最有特色的 modes,但也相當多的約束,Euc 管理需定義一個大的網路 (private 且 unrouteable)給 VMs,Euc 使用者可定義 'named networks' 和 'security groups',舉例來說使用者可以選擇是否允許 ping (ICMP) 或 ssh (TCP, port 22)到他們的 VMs,此外,Eua 也可定義一個 Public Network Pool(在Amazon 稱為 elastic IP)。此 mode 適用於需要 security groups, elastic IPs 和 VM network isolation
>> 使用 SYSTEM和 STATIC 會關掉一些特色 (1)VMs間的進出規則(在Amzaon EC2 稱為 security groups) (2)使用者可控制和動態IPs分配再開機和執行期間(在Amazon EC2 稱為 elastic IPs) (3)Vms間的網路流量的的隔離
* __2.3.2__ 啟動Eucalyptus
* 啟動
{{{
$ $EUCALYPTUS/etc/init.d/eucalyptus start
}}}
* 停止
{{{
$ $EUCALYPTUS/etc/init.d/eucalyptus stop
}}}
* 設定開機自動啟動
{{{
$ ln -sf $EUCALYPTUS/etc/init.d/eucalyptus /etc/init.d/eucalyptus
### 以下兩者擇一即可 ###
$ update-rc.d eucalyptus defaults
$ chkconfig eucalyptus on
}}}
* __2.3.2__ 第1次執行 Euc 的設定
1. 在 CLC 那台 登入 https://localhost:8443/ (admin/admin)
* 修改 admin 密碼
* 修改 mail
* 確認網址和 Walrus service(Euc Storage)
2. 到'Configuration'標籤,選擇'Add Cluster'再'Save clusters'之後,會產生認証的 Key,需手動分配給所有的 nodes
{{{
### 這個指令會使用 rsync 和 ssh 來散佈 key ###
$ $EUCALYPTUS/usr/sbin/euca_sync_key -c $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf
}}}
3. 最後,你必須產生使用者的認証,選擇 'Credentials' 標籤和按下 'Download certificates' 來下載,你能使用 基於 x509 的 EC2 tools 和第3方工具(rightscale.com)
{{{
$ mkdir $HOME/.euca
### 當你要使用 Euc時,source 此檔案 ###
$ source $HOME/.euca/eucarc
}}}
----
= 【Think】 =
----
= 【Reference】 =
* [http://open.eucalyptus.com/wiki/EucalyptusAdministratorGuide_v1.4 Eucalyptus Administrator Guide v1.4]
* [attachment:A_Tech_Report_Euc.pdf Eucalyptus : A Technical Report on an Elastic Utility Computing Archietcture Linking Your Programs to Useful Systems]
[[BR]]