wiki:Eucalyptus/Install

Version 22 (modified by rock, 15 years ago) (diff)

--

Eucalyptus 安裝

【1.序言】

  • Eucalyptus的安裝主要有兩種方法:
    1. 從 Source 安裝
    2. 從套件安裝,官方有提供Binary 套件可安裝,或是 OS 為 Ubuntu 9.04 直接可 apt-get install
  • 本安裝文件想了解 Eucalyptus 的架構,所以選擇從 Source 安裝
  • Eucalyptus 太長了 @@,之後文章用 Euc 簡稱

【2.安裝步驟】

『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
    ### 安裝 sun Java ###
    $ aptitude install sun-java6-jdk
    $ update-alternatives --config java
    
    ### 安裝 ant ###
    $ aptitude install ant
    
    ### 安裝 vlan, dhcp, openssl ###
    $ aptitude install vlan dhcp3-server libcurl4-openssl-dev
    
    ### EC2 tools ###
    $ wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.3-26357.zip
    $ wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-30349.zip
    $ unzip ec2-ami-tools-1.3-26357.zip
    $ unzip ec2-api-tools-1.3-30349.zip
    
    ### 設定環境變數 ###
    $ vim ~/.bashrc
    export JAVA_HOME=/usr/lib/jvm/java-6-sun
    export ANT_HOME=/usr/share/ant
    export EC2_HOME=/root/ec2-api-tools-1.3-30349
    export EC2_AMITOOL_HOME=/root/ec2-ami-tools-1.3-26357
    export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:$EC2_HOME/bin:$EC2_AMITOOL_HOME/bin
    
    $ source ~/.bashrc
    
  • 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)ec2-api-tools-1.3-30349 (2)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個元件的架構圖 ->

  • 2.2.1 下載 Eucalyptus -> 下載兩個檔案 (Euceucalyptus-1.5.1-src.tar.gzalyptus source) & eucalyptus-1.5.1-src-deps.tar.gz
    ### 1.解壓縮 ###
    $ su
    $ sudo tar zvxf eucalyptus-1.5.1-src.tar.gz -C ~
    
    ### 2.設定環境變數 ###
    $ echo "export EUCALYPTUS_SRC=/root/eucalyptus-1.5.1" >> /root/.bashrc
    $ echo "export EUCALYPTUS=/opt/eucalyptus" >> /root/.bashrc
    $ source /root/.bashrc
    
    ### 3.安裝 Euc 相依的軟體 ###
    $ tar zvxf eucalyptus-1.5.1-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/
    $ vim ~/.bashrc
    $ source ~/.bashrc
    
    ### 3.2 Apache(httpd) ###
    $ tar zvxf httpd-2.2.11.tar.gz
    $ cd httpd-2.2.11
    $ CFLAGS="-DBIG_SECURITY_HOLE" ./configure --prefix=$EUCALYPTUS/packages/httpd-2.2.11 --with-included-apr
    $ make && make install
    
    ### 3.3 Axis2/C ###
    $ cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
    $ tar zvxf axis2c-src-1.5.0.tar.gz
    $ echo "export AXIS2C_HOME=$EUCALYPTUS/packages/axis2c-1.5.0" >> ~/.bashrc ; . ~/.bashrc
    $ cd axis2c-src-1.5.0
    $ ./configure --with-apache2=$EUCALYPTUS/packages/httpd-2.2.11/include --prefix=$AXIS2C_HOME
    $ make && make install
    
    ### 3.4 Rampart/C ###
    $ cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
    $ echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AXIS2C_HOME/lib" >> ~/.bashrc ; . ~/.bashrc
    $ 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
      <phase name="Security"/>
    
    ### 3.5 Libvirt ###
    $ aptitude install libxml2-dev libgnutils-dev
    $ cd $EUCALYPTUS_SRC/eucalyptus-src-deps/
    $ tar zvxf libvirt-0.6.3.tar.gz
    $ cd libvirt-0.6.3
    $ ./configure --prefix=$EUCALYPTUS/packages/libvirt-0.6.3 --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
    
  • 2.2.2 Building Eucalyptus
    $ cd $EUCALYPTUS_SRC
    $ ./configure --with-axis2=$EUCALYPTUS/packages/axis2-1.4 --with-axis2c=$EUCALYPTUS/packages/axis2c-1.4 --with-libvirt=$EUCALYPTUS/packages/libvirt-0.6.3/ --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 "<hostname1> ... <hostnamen>" $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
      

『2.4 管理』

2.4.1 Euc 印象檔管理

  1. 執行前的注意事項 (1)已 source 'eucaer' 檔案 (2)user 可以註冊 Image,但只有管理者可以註冊 kernel/ramdisks (3)已安裝EC2 tools: ec2-api-tools-1.3-30349 和 ec2-ami-tools-1.3-26357)
  2. 新增 Image
    ### Euc 提供的 test image ###
    $ cd $EUCALYPTUS_SRC/eucalyptus-src-deps
    $ tar zxvf euca-ttylinux.tgz
    
    ### 新增 Kernel 到 Walrus 並再 Euc 註冊此 Kernel ###
    $ ec2-bundle-image -i ttylinux/vmlinuz-2.6.16.33-xen --kernel true
    $ ec2-upload-bundle -b kernel-bucket -m /tmp/vmlinuz-2.6.16.33-xen.manifest.xml
    $ ec2-register kernel-bucket/vmlinuz-2.6.16.33-xen.manifest.xml
    
    ### 增加 root FS Image 給 Walrus ###
    $ ec2-bundle-image -i ttylinux/ttylinux.img 
    $ ec2-upload-bundle -b image-bucket -m /tmp/ttylinux.img.manifest.xml
    $ ec2-register image-bucket/ttylinux.img.manifest.xml
    
    ### 測試的 Image 可以不用 ramdisks,但若需要可以用以下指令新增 ###
    $ ec2-bundle-image -i <path/to/my/>initrd.img --ramdisk true
    $ ec2-upload-bundle -b <bucket_name> -m <path/to/my/>initrd.img.manifest.xml
    $ ec2-register <bucket_name>/initrd.img.manifest.xml
    
  3. 分配 Kernel 和 Ramdisks 給 VMs (有三種方法)
    1. 在 'ec2-bundle-image' 步驟指定
      $ ec2-bundle-image -i <path/to/my/>vmimage.img --kernel <eki-XXXXXXXX> --ramdisk <eri-XXXXXXXX>
      
    2. 再執行時指定 'ec2-run-instances'
      ec2-run-instances <emi-XXXXXXXX> --kernel <eki-XXXXXXXX> --ramdisk <eri-XXXXXXXX>
      
    3. https://your.cloud.server:8443 選擇 'Configuration' 標籤,新增 <eki-xxxxxxxx> 和 <eri-xxxxxxxx> 作為預設的 kernel 和 ramdisk
  4. 刪除 Image
    ### 先取消註冊 ###
    ec2-deregister <emi-XXXXXXXX>
    
    ### 移除存於 bucke 的檔案 ### 
    ec2-delete-bundle -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY --url $S3_URL -b <bucket> -p <file prefix>
    
    ### 移除檔案和 bucke (--clear)###
    ec2-delete-bundle -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY --url $S3_URL -b <bucket> -p <file prefix> --clear
    

2.4.2 Euc 管理

  1. 管理者環境
    • 目前管理者只能透過命令列來管理,需注意Euc的路徑必須正確被宣告,才能正常執行指令
      ### 宣告 EUCALYPTUS 路徑 ###
      $ export EUCALYPTUS=/path/to/eucalyptus  
      
  2. 印象檔管理
    • 參考之前 2.4.1
  3. Node管理
    ### 可編輯 $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf 來修改 node 列表 ###
    NODES="vm-container-0-0 vm-container-0-1"
    
    ### 當增加node,記的將 key 複製給 node ###
    ${EUCALYPTUS}/usr/sbin/euca_sync_key
    
  4. 使用者管理

  • 增加使用者 -> 管理者也可直接透過 wen 介面增加,點選 'Users' 標籤並選 'Add User'
  • 管理使用者 -> 管理者透過網頁 'disable' 或 'delete' 使用者

『2.5 問題排解』

  1. 重新啟動
    • 當 front-end 要重啟時,需要關掉所有的 VMs (可使用 client tools ),或是手動使用 'xm destroy'
      ### 再 head node 執行 ###
      /etc/init.d/eucalyptus restart 
      
  2. 問題判斷
    • 若是有些無法正常運作,第一步可以參考文件檢查 installation/configuration/networking 部份,來確定元件是否正常運作,資源是否可被 instances 使用,eucarc 使否正確被 source和認証,也可使用以下指令來了解系Cloud 系統狀態
      $ ec2-describe-availability-zones verbose
      AVAILABILITYZONE        cluster <hostname of your front-end>
      AVAILABILITYZONE        |- vm types     free / max   cpu   ram  disk
      AVAILABILITYZONE        |- m1.small     0128 / 0128   1    128    10
      AVAILABILITYZONE        |- c1.medium    0128 / 0128   1    256    10
      AVAILABILITYZONE        |- m1.large     0064 / 0064   2    512    10
      AVAILABILITYZONE        |- m1.xlarge    0064 / 0064   2   1024    20
      AVAILABILITYZONE        |- c1.xlarge    0032 / 0032   4   2048    20
      AVAILABILITYZONE        |- <node-hostname-a>        certs[cc=true,nc=true] @ Sun Jan 04 15:13:30 PST 2009
      AVAILABILITYZONE        |- <node-hostname-b>        certs[cc=true,nc=true] @ Sun Jan 04 15:13:30 PST 2009
      AVAILABILITYZONE        |- <node-hostname-c>        certs[cc=true,nc=true] @ Sun Jan 04 15:13:30 PST 2009
      AVAILABILITYZONE        |- <node-hostname-d>        certs[cc=true,nc=true] @ Sun Jan 04 15:13:30 PST 2009
      AVAILABILITYZONE        |- <node-hostname-e>        certs[cc=true,nc=true] @ Sun Jan 04 15:13:30 PST 2009
      AVAILABILITYZONE        |- <node-hostname-f>        certs[cc=true,nc=true] @ Sun Jan 04 15:13:30 PST 2009
      ...
      
  • log file -> $EUCALYPTUS/var/log/eucalyptus/
    • 在 front-end 的 CLC -> 'cloud-output.log' 和 'cloud-debug.log'
    • 在 front-end/Head Node 的 CC 'cc.log' 和 'httpd-cc_error_log'
    • 每個 node 的 NC -> 'nc.log' 和 'httpd-nc_error_log

【Think】

  1. 和 EC2 相比,Euc 少了 (1)計費或租約機制 (2)類似 S3 的 Storage 機制。不過畢竟是學校單位的成品,無法做到全面兼顧,但是其架構和想法非常值得參考

【Reference】



Attachments (4)

Download all attachments as: .zip