[[PageOutline]] {{{ #!html

實作二: Xen 虛擬化叢集安裝操作

}}} ---- = 【前言】 = * Do it {{{ // First Mahcine $ sudo scp 192.168.1.254:/etc/hosts /etc/hosts $ su root -c "echo pcXX > /etc/hostname" $ sudo hostname -F /etc/hostname // 先登出在登入一次,讓機器名稱生效 // Second Machine $ sudo scp 192.168.1.254:/etc/hosts /etc/hosts $ su root -c "echo pcYY > /etc/hostname" $ sudo hostname -F /etc/hostname // 先登出在登入一次,讓機器名稱生效 }}} * '''''安裝前的小叮嚀__''''' * pcXXX 和 pcYYY 都已安裝好 Xen (若 pcYYY 還沒可以安裝好,可以參考[https://trac.nchc.org.tw/cloud/wiki/Xen_Lab1 實作一的 Step 1 ~ 2],順便複習一下實作1。或是再第2台機器執行以下script來設定 Xen 環境 {{{ /*** 第2台機器 (新竹) ***/ $ scp clouder@192.168.1.254:~/setup_Xen_HB.sh . $ sudo ./setup_Xen_HB.sh $ reboot $ su root # export LANG=C ; cd # ./xen_video1.sh /*** 一路 Yes 到底 ***/ # ./xen_video2.sh /*** 第2台機器 (台中) ***/ $ scp clouder@pc-eth1:~/setup_Xen.sh . $ sudo ./setup_Xen.sh }}} * 目前 pcXXX 並無任何正在執行的 VM (若是有的話使用 sudo xm destroy [VM_Name|VM_ID] 來關閉) {{{ $ sudo xm list }}} * ONE 只需安裝在 '''pcXXX''' 即可 (pcXXX 及為 OpenNEbula Server) * pcXXX 為 '''ONE Server''' 和 '''NFS Server''' * 網路架構採用 Bridge * 共享的 Storage 採用 '''NFS''' (才能做 Migrate 和 Live Migrate ) * 將之前透過 xm create 開啟的虛擬機器先 destroy {{{ $ sudo xm destroy [VM_Name] $ sudo xm list }}} * 軟體說明: || Host/dom0 OS || Debian 503 lenny(AMD64) || || VM/Guest/dmoU OS || Debian lenny (AMD64) || || Xen || 3.2 || || OpenNEbula || 1.2.1 || ---- = 【Step 0: 流程】 = * 本範例將說明如何安裝與設定 OpenNEbula 以及如何透過 OpenNEbula 來啟動管理虛擬機器 {{{ #!graphviz digraph finite_state_machine { rankdir=LR; ranksep=0.3; size="11,8"; node[shape=box,width=3.0]; "4.如何使用 OpenNEbula ?" -> "5.新增虛擬機器到 One Pool" ; "4.如何使用 OpenNEbula ?" -> "6.利用 OpenNEbula 來開啟虛擬機器" ; "1.建立 OpenNEbula 所需之基本環境" -> "2. 如何下載與安裝 OpenNEbula ?" -> "3.如何設定 OpenNEbula ?"; } }}} ---- = 【Step 1: 安裝需要的套件】 = * '''pcXXX''' 和 '''pcYYY''' 須安裝相關套件 {{{ $ sudo aptitude install g++ ruby libsqlite3-0 sqlite3 libsqlite3-dev \ libsqlite3-ruby libxmlrpc-c3-dev libxmlrpc-c3 libssl-dev scons }}} ---- = 【Step 2: 下載並安裝OpenNEbula】 = * 在 pcXXX 上執行 (OpenNEbula 只需安裝在 pcXXX 上) * 下載 source code {{{ $ cd $ wget http://dev.opennebula.org/attachments/download/103/one-1.4.0.tar.gz $ tar zxvf one-1.4.0.tar.gz }}} * 編譯和安裝 OpenNEbula {{{ $ cd one-1.4 $ sudo scons $ sudo mkdir /home/one $ sudo ./install.sh -d /home/one }}} * 編輯 OpenNEbula 路徑 {{{ $ sudo su # echo export ONE_LOCATION=/home/one >> ~/.bashrc # echo export ONE_XMLRPC="http://localhost:2633/RPC2" >> ~/.bashrc # echo export PATH='$ONE_LOCATION/bin:$PATH' >> ~/.bashrc # echo export ONE_AUTH=/home/one/.one/one_auth >> ~/.bashrc # mkdir /home/one/.one # echo "root:cloud123" >> /home/one/.one/one_auth # source ~/.bashrc # echo $ONE_AUTH (測試 $ONE_AUTH 路徑是否存在) # echo $ONE_LOCATION (測試 $ONE_LOCATION 路徑是否存在) }}} ---- = 【Step 3: 編輯 ONE 設定檔】 = * 在 pcXXX 上編輯,將 151~154 行註解掉,打開 159~162 行 {{{ # cd /home/one # gedit etc/oned.conf }}} {{{ #!sh 21 HOST_MONITORING_INTERVAL = 5 23 VM_POLLING_INTERVAL = 10 62 IM_MAD = [ 63 name = "im_xen", 64 executable = "one_im_ssh", 65 arguments = "im_xen/im_xen.conf" ] 70 #IM_MAD = [ 71 # name = "im_kvm", 72 # executable = "one_im_ssh", 73 # arguments = "im_kvm/im_kvm.conf" ] 106 VM_MAD = [ 107 name = "vmm_xen", 108 executable = "one_vmm_xen", 109 default = "vmm_xen/vmm_xen.conf", 110 type = "xen" ] 115 #VM_MAD = [ 116 # name = "vmm_kvm", 117 # executable = "one_vmm_kvm", 118 # default = "vmm_kvm/vmm_kvm.conf", 119 # type = "kvm" ] 151 # TM_MAD = [ 152 # name = "tm_ssh", 153 # executable = "one_tm", 154 # arguments = "tm_ssh/tm_ssh.conf" ] 159 TM_MAD = [ 160 name = "tm_nfs", 161 executable = "one_tm", 162 arguments = "tm_ssh/tm_nfs.conf" ] }}} ---- = 【Step 4: 啟動 ONE】 = * 啟動 ONE 前的小叮嚀: 1. 確認 pcXXX 和 pcYYY 已執行 '''xend start''' 2. 兩台都可讓 '''root 免密碼 ssh 登入''' {{{ // pcXXX (Server) 上執行 # ssh-keygen # cd ~/.ssh # cp id_rsa.pub authorized_keys # scp -r ~/.ssh pcYYY:~ //測試 ssh免密碼登入 ssh pcYYY [CTRL+D] }}} 3. 只需在 '''pcXXX''' 啟動 ONE 即可 * 在 pcXXX 上執行 {{{ # one start }}} ---- = 【Step 5: 新增 pcXXX 和 pcYYY 到 ONE Pool】 = * 在 pcXXX 上執行 (__X 和 Y 請自行修改成自己的電腦名稱__) {{{ # onehost add pcXXX im_xen vmm_xen tm_nfs # onehost add pcYYY im_xen vmm_xen tm_nfs # onehost list HID NAME RVM TCPU FCPU ACPU TMEM FMEM STAT 1 pcXXX 0 400 399 400 1313856 0 on 2 pcYYY 0 400 399 400 1313856 0 on # onehost show pcXXX }}} * '''''onehost list'''''參數說明 * RVM - Number of running VMs * TCPU - Total CPU * FCPU - Free CPU * ACPU - Available CPU (not allocated by VMs) * TMEM - Total Memory * FMEM - Free Memory ---- = 【Step 6: 使用 ONE 來開啟 VM】 = * 在 pcXXX 上執行 * 編輯 vm01 的設定檔 (__X 和 Y 請自行修改成自己的電腦名稱__) {{{ # cd /home/domains # gedit vm01.one }}} {{{ #!sh NAME = vm01 CPU = 1 MEMORY = 128 OS = [ kernel = /boot/vmlinuz-2.6.26-2-xen-amd64, initrd = /boot/initrd.img-2.6.26-2-xen-amd64, root = sda2] DISK = [ source = /home/domains/vm01/disk.img, clone = no, target = sda2, readonly = no] DISK = [ type = swap, size = 128, target = "sda1", readonly = "no" ] NIC=[IP="192.168.1.X", MAC="00:16:00:00:00:XX"] }}} * 使用 ONE 來開啟 vm01 {{{ # onevm create vm01.one ; onevm deploy vm01 pcXXX # onevm list ID NAME STAT CPU MEM HOSTNAME TIME 1 vm01 runn 0 131072 pcXXX 00 00:04:21 # onevm show vm01 }}} * onevm list 的資訊 * ID ONE VM identifier * NAME Name of the ONE * STAT Status of the VM * CPU CPU percentage used by the VM * MEM Memory used by the VM * HOSTNAME Host where the VM is being or was run * TIME Time since the submission of the VM (days hours:minutes:seconds * 使用 ssh 來登入 vm01 {{{ $ ssh 192.168.1.X -l clouder # ping ptt.cc CTRL+D }}} * 關掉 vm01 {{{ # onevm list # onevm shutdown vm01 # onevm list }}} ---- = 【補充:使用 OpenNEbula 來建制 Hybrid Cloud】 = * OpenNEbula 除了可管理自己的計算資源(Private Cloud),也可管理遠端的計算資源(Public Cloud),它提供 vmm_ec2 模組來連接到 Amazon EC2 1. 編輯設定檔,將 Amazon EC2 相關的模組打開 {{{ # gedit /home/one/etc/oned.conf }}} {{{ #!sh 79 IM_MAD = [ 80 name = "im_ec2", 81 executable = "one_im_ec2", 82 arguments = "im_ec2/im_ec2.conf" ] 128 VM_MAD = [ 129 name = "vmm_ec2", 130 executable = "one_vmm_ec2", 131 arguments = "vmm_ec2/vmm_ec2.conf", 132 type = "xml" ] 168 TM_MAD = [ 169 name = "tm_dummy", 170 executable = "one_tm", 171 arguments = "tm_dummy/tm_dummy.conf" ] }}} 2. 將 EC2 的帳戶資訊填入 {{{ # gedit home/one/etc/vmm_ec2/vmm_ec2rc }}} {{{ #!sh 24 EC2_HOME="你的 EC2 API 存放路徑" 25 EC2_PRIVATE_KEY="<你的 ec2_pem_key 存放位置>" 26 EC2_CERT="<你的 ec2_pem_cert 存放位置>" }}} 3. 將 EC2 加入 resource pool {{{ # onehost create ec2 im_ec2 vmm_ec2 tm_dummy # onehost list ID NAME RVM TCPU FCPU ACPU TMEM FMEM STAT 0 ec2 0 500 500 500 8912896 8912896 on 1 xen01 0 400 400 400 8313856 130048 on 2 xen 0 400 366 366 8313856 130048 on }}} 4. 編輯 VM 設定檔 {{{ # gedit ec2_vm.one }}} {{{ #!sh EC2 = [ AMI="ami-acc723c5", AUTHORIZED_PORTS="22" ] #Add this if you want to use only EC2 cloud REQUIREMENTS = "HOSTNAME = ec2" }}} 5. 啟動 VM {{{ # onevm submit ec2_vm.one # onevm list }}} ---- = 【討論 & 休息】 = * 回顧: 1. 安裝 OpenNEbula 2. 設定 OpenNEbula 3. 使用 '''''onehost''''' 來管理實體機器 4. 使用 '''''onevm''''' 來管理虛擬機器 [[BR]] [[BR]]