[[PageOutline]]
{{{
#!html
實作三: Xen 虛擬化叢集進階操作
}}}
----
= 【課前小叮嚀】 =
* 有些指令在 __'''pcXXX'''__ 上執行,有的在 __'''pcYYY'''__ 上 (執行前得注意一下)
* 若不知道目前虛擬機器 vm01 跑在哪一台上,可在 pcXXX 上執行 onevm list 來得知
* pcXXX 和 pcYYY 的時間需一致 (兩台皆需執行以下指令)
{{{
$ sudo ntpdate time.stdtime.gov.tw ; sudo hwclock -w
}}}
----
= 【前言】 =
* Migration 是指遷移的意思,Xen可以讓跑再 '''A主機''' 上的 虛擬機器,根據一些情境來,將虛擬機器 轉移到 '''B主機'''上
* 以下的情境,有一台主機總體 loading 過高,我們為了達到 load-balance,於是將 虛擬機器 migrate 到另一台 loading 較低的主機
[[Image(Migration.jpg,width=900px)]]
----
= 【Step 0: 流程】 =
* 本進階操作將說明如何透過使用 OpenNEbula 來實作 Migrate & Live Migrate [[BR]]
{{{
#!graphviz
digraph finite_state_machine {
rankdir=LR;
ranksep=0.3;
size="10,8";
node[shape=box,width=3.0];
"3.測試 Migration (從 pcXXX Migtate 到 pcYYY)" -> "4. 測試 Live Migration (再將 VM 從 pcYYY live migrate 回 pcXXX)";
"1.設定共享儲存裝置 (NFS)" -> "2. 開啟 VM 於 pcXXX";
}
}}}
----
= 【Step 1:設定共享儲存裝置 (NFS)】 =
* 設定好 Shared Storage (本練習使用 NFS ,pcXXX-> NFS Server, pcYYY-> NFS Client)
* '''pcXXX''' 的設定 (請將 '''__pcYYY IP__''' 換成適合您的值)
{{{
$ sudo aptitude -y install nfs-kernel-server
$ sudo gedit /etc/exports
}}}
{{{
#!sh
/home/domains 192.168.1.pcYYY_IP(rw,sync,no_subtree_check,no_root_squash)
/home/one 192.168.1.pcYYY_IP(rw,sync,no_subtree_check,no_root_squash)
}}}
{{{
$ sudo /etc/init.d/nfs-kernel-server restart
$ sudo showmount -e localhost
}}}
* 切換到 '''pcYYY''' 去掛載 nfs (請將 '''__pcXXX__'''換成 nfs server 的電腦名稱)
{{{
$ sudo aptitude install nfs-common
(安裝 NFS 需要的套件)
$ sudo mkdir /home/domains
$ sudo mount.nfs pcXXX:/home/domains /home/domains
(將 NFS 掛載起來)
$ sudo mkdir /home/one
$ sudo mount.nfs pcXXX:/home/one/ /home/one
$ mount
}}}
* 到 '''pcXXX''' 檢查是否已經有順利被 pcYYY mount 起來
{{{
$ sudo showmount -a
}}}
----
= 【Step 2: 開啟 VM 於 pcXXX】 =
* 在 '''__pcXXX__''' 上 (記得將 pcXXX 換成您的電腦名稱)
{{{
$ cd /home/domains
$ sudo su
# onevm create vm01.one ; onevm deploy vm01 pcXXX
# onevm list
# onevm show vm01
}}}
----
= 【Step 3: 測試 Migration (將 VM 從 pcXXX Migtate 到 pcYYY) 】 =
* 將 vm01 從 pcXXX migrate 到 pcYYY
{{{
# onevm migrate vm01 pcYYY
# onevm list
}}}
----
= 【Step 4: 測試 Live Migration (再將 VM 從 pcYYY live migrate 回 pcXXX) 】 =
* 檢查 vm01 目前跑在哪一台實體機器上(假定 vm01 跑在 pcYYY 時)
{{{
# onevm list
}}}
* 開啟一個新的終端機,將正在編譯中的 vm01 live migrate 到 pcXXX
{{{
# onevm livemigrate vm01 pcXXX
# onevm list
}}}
----
= 【討論 & 休息】 =
== 【練習一】 ==
* 練習將 vm01 migrate或live migrate 到 pcYYY 並關掉.
{{{
# onevm migrate vm01 pcYYY
(或是 # onevm livemigrate vm01 pcYYY)
# onevm list
# onevm shutdown vm01
# onevm list
}}}
== 【練習二】 ==
* 在 vm01 編譯 kernel 並且 migrate或live migrate 到 pcYYY, 編譯不會中斷.
{{{
# ssh vm01
# sudo apt-get install build-essential binutils automake autoconf htop linux-headers-2.6.26-2-xen-amd64 ncurses*
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2
# tar jxvf linux-2.6.26.tar.bz2
# cd linux-2.6.26
# make defconfig
# make
}}}
{{{
# onevm migrate vm01 pcYYY
(或是 # onevm livemigrate vm01 pcYYY)
# onevm list
}}}
[[BR]]
[[BR]]