[[PageOutline]]
{{{
#!html
實作二: Xen 虛擬化叢集安裝操作
}}}
----
= 【前言】 =
 * '''''安裝前的小叮嚀__'''''
   * 建議修改兩台機器的主機名稱
     * 第1台電腦
{{{
$ sudo gedit /etc/hostname
}}}
{{{
#!sh
node01
}}}
{{{
$ sudo hostname -F /etc/hostname
}}}
     * 第2台電腦
{{{
$ sudo gedit /etc/hostname
}}}
{{{
#!sh
node02
}}}
{{{
$ sudo hostname -F /etc/hostname
}}}
   * node01 和 node02 的 /etc/hosts 都有彼此的資訊
{{{
$ sudo gedit /etc/hosts
}}}
{{{
#!sh
192.168.X.X  node01
192.168.X.X  node02
}}}
   * node01 和 node02 都已安裝好 Xen (若 node02 還沒可以安裝好,可以參考[https://trac.nchc.org.tw/cloud/wiki/Xen_Lab1 實作一的 Step 1 ~ 3],順便複習一下早上的實作 XD )
   * ONE 只需安裝在 '''''node01''''' 即可 (node01 及為 OpenNEbula Server)
   * node01 為 '''''ONE Server''''' 和 '''''NFS Server'''''
   * 網路架構採用 Bridge
   * 共享的 Storage 採用 '''''NFS''''' (才能做 Migrate 和 Live Migrate )
----
= 【Step 1: 安裝需要的套件】 = 
 * node01 和 node02 須安裝相關套件
{{{
$ sudo aptitude install ruby sqlite3 libsqlite3-0 libsqlite3-dev libsqlite3-ruby libxmlrpc-c3 libxmlrpc-c3-dev scons g++ flex bison
}}}
----
= 【Step 2: 下載並安裝One】 =
 * 在node01 上執行 (ONE 只需安裝在 node01 上)
 * 下載 source code
{{{
$ wget http://opennebula.org/files/one-1.2.1.tar.gz
$ tar zxvf one-1.2.1.tar.gz
$ cd one-1.2.1
}}}
 * 修改 source code 的 src/vmm/XenDriver.cc
{{{
$ sudo gedit src/vmm/XenDriver.cc
}}}
{{{
#!sh
237              << "'file:" << vm->get_remote_dir() << "/disk." << i << ","
}}}
 * 編譯和安裝 OpenNEbula
{{{
$ scons
$ sudo ./install.sh
}}}
----
= 【Step 3: 編輯 ONE 設定檔】 = 
 * 在 node01 上編輯,將 160~164 行註解掉,打開 169~173 行
{{{
$ sudo gedit /etc/oned.conf
}}}
{{{
#!sh
23 VM_POLLING_INTERVAL      = 1
160 #TM_MAD = [
161 #name       = "tm_ssh",
162 #executable = "one_tm",
163 #arguments  = "tm_ssh/tm_ssh.conf",
164 #default    = "tm_ssh/tm_ssh.conf" ]
169 TM_MAD = [
170 name       = "tm_nfs",
171 executable = "one_tm",
172 arguments  = "tm_ssh/tm_nfs.conf",
173 default    = "tm_ssh/tm_nfs.conf" ]
}}}
----
= 【Step 4: 啟動 ONE】 =
  * 啟動 ONE 前的小叮嚀
   * 確認 node01 和 node02 已執行 xend start
   * 兩台都可讓 root 自動登入
     * node01
{{{
$ sudo su
# cd
# ssh-keygen -P "" -t rsa
# cp .ssh/id_rsa.pub .ssh/authorized_keys
# scp .ssh/authorized_keys node02:~/.ssh/
}}} 
     * 測試 node01 的 root 是否可以免密碼登入到 node02
{{{
# ssh node02
}}}
   * 只需在 node01 啟動 ONE 即可
 * 在 node01 上執行
{{{
# one start
}}}
----
= 【Step 5: 新增 node01 和 node02 到 ONE Pool】 =
 * 在 node01 上執行
{{{
# onehost add node01 im_xen vmm_xen tm_nfs
# onehost add node02 im_xen vmm_xen tm_nfs
# onehost list
}}}
----
= 【Step 6: 使用 ONE 來開啟 VM】 =
 * 在 node01 上執行
 * 編輯 vm01 的設定檔
{{{
# vim /home/domains/xen01.one
}}}
{{{
#!sh
NAME   = vm01
CPU    = 1
MEMORY = 156
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.X.X.X", MAC="XX:XX:XX:XX:XX:XX"]
}}}
 * 使用 ONE 來開啟 vm01
{{{
# onevm create vm01.one 
# onevm deploy vm01 node02
# onevm list
}}}
 * 練習:請在開啟一個虛擬機器名為 vm02
   * 法一:複製 vm01 的 image,再修改參數
   * 法二:使用 xen-create-image 指令
----