[[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.4.0 ||
----
= 【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_nfs/tm_nfs.conf" ]
}}}
----
= 【Step 4: 啟動 ONE】 =
* 啟動 ONE 前的小叮嚀:
1. 確認 pcXXX 和 pcYYY 已執行 '''xend start'''
2. 兩台都可讓 '''root 免密碼 ssh 登入'''
{{{
// pcXXX (Server) 上執行
# ssh-keygen
# cp ~/.ssh/id_rsa.pub ~/.ssh/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]]