Archive

文章標籤 ‘XEN’

OpenNebula 3.7.80 XEN Cluster 配置紀錄 — Part II

2012年10月23日 尚無評論

在 OpenNebula 3.7.80 XEN Cluster 配置紀錄 — Part I 中,我們已順利將 ONE 環境給建構起來,但全部透過指令來進行操作對於大部分的新手而言可能會略顯痛苦,好在 OpenNebula有另外提供一個套件Sunstone來做為圖形化的管理介面,功能與指令操作管理完全相同,接著筆者將針對如何組態Sunstone的方式來進行介紹:

步驟一:於ONE-Master環境中安裝Sunstone套件

預設安裝 ONE 相關 RPM 套件時,套件內已經包含了 Sunstone 套件環境,只是預設並未啟用與安裝而已,安裝方式如下所示:

ONE-Master:~ # /usr/share/one/install_gems sunstone
Distribution “suse” detected.
About to install these dependencies:
* make
* gcc
* rubygem-rake
* gcc-c++
* sqlite3-devel

Press enter to continue…  [ 按下 ENTER 按鍵讓系統補齊運作 sunstone 所缺少的套件 ]

zypper install make gcc rubygem-rake gcc-c++ sqlite3-devel
Loading repository data…
Reading installed packages…
‘make’ is already installed.
No update candidate for ‘make-3.82-147.1.2.x86_64’. The highest available version is already installed.
Resolving package dependencies…

The following NEW packages are going to be installed:
gcc gcc-c++ gcc46 gcc46-c++ glibc-devel libstdc++46-devel linux-glibc-devel
rubygem-rake sqlite3-devel

9 new packages to install.
Overall download size: 13.6 MiB. After the operation, additional 59.1 MiB will
be used.
Continue? [y/n/?] (y): y [ 輸入 y 讓系統自動將缺少的套件補齊 ]
Retrieving package linux-glibc-devel-3.1_rc5-7.1.1.noarch (1/9), 778.0 KiB (3.1 MiB unpacked)
Retrieving: linux-glibc-devel-3.1_rc5-7.1.1.noarch.rpm [done (0 B/s)]
Retrieving package rubygem-rake-0.8.7-11.1.2.x86_64 (2/9), 359.0 KiB (1.5 MiB unpacked)
Retrieving: rubygem-rake-0.8.7-11.1.2.x86_64.rpm [done]
Retrieving package glibc-devel-2.14.1-14.27.1.x86_64 (3/9), 612.0 KiB (2.9 MiB unpacked)
Retrieving: glibc-devel-2.14.1-14.27.1.x86_64.rpm [done (7.5 KiB/s)]
Retrieving package sqlite3-devel-3.7.8-1.1.2.x86_64 (4/9), 92.0 KiB (339.0 KiB unpacked)
Retrieving: sqlite3-devel-3.7.8-1.1.2.x86_64.rpm [done (79.0 KiB/s)]
Retrieving package libstdc++46-devel-4.6.2_20111026-1.1.4.x86_64 (5/9), 2.4 MiB (21.3 MiB unpacked)
Retrieving: libstdc++46-devel-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc46-4.6.2_20111026-1.1.4.x86_64 (6/9), 5.5 MiB (18.5 MiB unpacked)
Retrieving: gcc46-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc46-c++-4.6.2_20111026-1.1.4.x86_64 (7/9), 3.9 MiB (11.5 MiB unpacked)
Retrieving: gcc46-c++-4.6.2_20111026-1.1.4.x86_64.rpm [done (1.3 MiB/s)]
Retrieving package gcc-4.6-15.1.3.x86_64 (8/9), 4.0 KiB (0 B unpacked)
Retrieving: gcc-4.6-15.1.3.x86_64.rpm [done]
Retrieving package gcc-c++-4.6-15.1.3.x86_64 (9/9), 4.0 KiB (0 B unpacked)
Retrieving: gcc-c++-4.6-15.1.3.x86_64.rpm [done]
Installing: linux-glibc-devel-3.1_rc5-7.1.1 [done]
Installing: rubygem-rake-0.8.7-11.1.2 [done]
Installing: glibc-devel-2.14.1-14.27.1 [done]
Installing: sqlite3-devel-3.7.8-1.1.2 [done]
Installing: libstdc++46-devel-4.6.2_20111026-1.1.4 [done]
Installing: gcc46-4.6.2_20111026-1.1.4 [done]
Installing: gcc46-c++-4.6.2_20111026-1.1.4 [done]
Installing: gcc-4.6-15.1.3 [done]
Installing: gcc-c++-4.6-15.1.3 [done]
About to install the gems for these components:
* sunstone
Press enter to continue…  [ 按下 ENTER 按鍵讓系統開始進行套件的配置與安裝 ]

gem install –no-ri –no-rdoc json sinatra thin sequel sqlite3
Fetching: json-1.7.5.gem (100%)
Building native extensions. This could take a while…
Successfully installed json-1.7.5
Fetching: rack-1.4.1.gem (100%)
Fetching: rack-protection-1.2.0.gem (100%)
Fetching: tilt-1.3.3.gem (100%)
Fetching: sinatra-1.3.3.gem (100%)
Successfully installed rack-1.4.1
Successfully installed rack-protection-1.2.0
Successfully installed tilt-1.3.3
Successfully installed sinatra-1.3.3
Fetching: eventmachine-1.0.0.gem (100%)
Building native extensions. This could take a while…
Fetching: daemons-1.1.9.gem (100%)
Fetching: thin-1.5.0.gem (100%)
Building native extensions. This could take a while…
Successfully installed eventmachine-1.0.0
Successfully installed daemons-1.1.9
Successfully installed thin-1.5.0
Fetching: sequel-3.40.0.gem (100%)
Successfully installed sequel-3.40.0
Fetching: sqlite3-1.3.6.gem (100%)
Building native extensions. This could take a while…
Successfully installed sqlite3-1.3.6
10 gems installed
ONE-Master:~ #

步驟二:接著安裝 noVNC 功能於Sunstone環境

noVNC是一個webSocket為基礎的VNC用戶端軟體,用來作為連結運作中的VM使用,預設安裝 Sunstone 環境時並不會自動安裝,因此我們需要額外進行配置,操作方式如下所示:

ONE-Master:~ # cd /usr/share/one/
ONE-Master:/usr/share/one # ./install_novnc.sh
Downloading noVNC latest version…
######################################################################## 100.0%
Extracting files to temporary folder…
Installing Sunstone client libraries in /usr/lib/one/sunstone/public…
Installing SelfService client libraries in /usr/lib/one/ruby/cloud/occi/ui/public…
Downloading Websockify VNC proxy files
######################################################################## 100.0%
######################################################################## 100.0%
Backing up and updating /etc/one/sunstone-server.conf with new VNC proxy path…
Backing up and updating /etc/one/occi-server.conf with new VNC proxy path…
Installation successful

步驟三:組態 Sunstone 監聽網路 IP 位置

Sunstone 安裝後並不需要太多的設定便可以直接進行運作,其伺服器的組態檔案位在 /etc/one/sunstone-server.conf,在啟用伺服器服務之前我們必須要調整監聽的 IP 位址與服務埠號,操作方式如下所示 ( 組態檔案中的 29 ~ 32 行 ):

29 # Server Configuration
30 #
31 :host: 127.0.0.1    [ 修改為 ONE-Master 所使用的 IP 位址 ]
32 :port: 9869

啟動與關閉 Sunstone 伺服器也是透過 oneadmin來進行操作,因此當我們修正好相關監聽IP位址資訊之後,便可以切換到 oneadmin 使用者帳號身分內,執行  sunstone-server start

oneadmin@ONE-Master:~> sunstone-server start
sunstone-server started

步驟四:透過網頁來存取 Sunstone 伺服器

由於剛才我們已經將 Sunstone 伺服器的監聽位址改為 192.168.1.27:9869  ,如下圖所示,當我們透過瀏覽器連線到這個位址時,便可以順利看到Sunstone伺服器的網頁畫面:

登入 Sunstone 伺服器可以直接使用 oneadmin 的帳號與密碼便可以順利進入介面來進行操作,預設 Sunstone 伺服器介面為英文,因此我們可以點選Dashboard –> Configuration 中進行語系的調整,將介面改為繁體中文版:

而 Sunstone 伺服器的詳細操作方式,讀者若有興趣可以參考 http://opennebula.org/documentation:rel3.8:sunstone 官方文件來進行使用,在Sunstone伺服器介面中美執行一個動作時,讀者可以仔細觀察右下方會出現操作狀態提示文字,我們可以從隨時彈出的文字框架中確認這個指令操作是否有異常。因此,若要快速進行 ONE 的使用,Sunstone 伺服器是一個不錯的選擇。

 

OpenNebula 3.7.80 XEN Cluster 配置紀錄 — Part I

2012年10月22日 尚無評論

OpenNEbula ( 簡稱 ONE ) 是一個開放原始碼套件,可以用來作為動態佈署虛擬機器在一群實體資源,目的是將一群實體叢集資源轉換成彈性的虛擬基礎設備,且可以透過動態調適工作量來進行使用。在這個紀錄中是針對如何於 OpenSUSE 12.1 中進行 XEN Cluster 的配置,並且搭配 OpenNebula 來進行這些基礎建設資源的管理操作方式。

操作環境說明

在這次的實驗架構中筆者將兩台擁有雙核心的主機作為資源的叢集,初步資訊如下表所示:

資源項目 ONE-Master1 ONE-Node01
系統版本 OpenSUSE 12.1 X86_64 OpenSUSE 12.1 X86_64
CPU Core數 2 2
IP資訊 192.168.1.27 192.168.1.25

安裝過程中,大約僅需要 1 GB 左右的磁碟空間來進行環境的配置,如下圖所示,安裝時可以於類型挑選選擇,Other –> Minimal Server Selection (Text Mode),來進行使用。

另外,記得挑選軟體套件項目於 Server Functions –> Xen Virtual Machine Host Server 挑選安裝,兩台配置都是採用相同選擇模式,如下圖所示。

步驟一:基礎環境配置

完成 OpenSUSE 12.1 X86_64 環境安裝之後,記得於開機時挑選 Xen 這個開機選項,這樣才能啟動於 Xen 運作模式中,如下圖所示。

當然,我們也可以直接修改 /boot/grub/menu.lst 組態檔案,將預設啟動的項目直接指定開機 Xen 運作模式中 ( 在這個範例操作中是將 default 改為 0 ),操作方式如下所示:

重新啟動後我們可以透過 uname -r 確認一下系統是否已經運作 Xen 的核心模式中,操作方式如下所示:

最後在基礎環境配置中,我們還需要將兩台主機的 /etc/hosts 檔案將主機名稱與 IP 位址資訊進行配置,這樣便可以完成相關設定基礎需求:

步驟二:SSH伺服器的免密碼登入驗證環境配置

接著,我們需要將 ONE-Master 與 ONE-Node01 中分別將 SSH 伺服器啟動與配置免密碼登入驗證的設定 ( 針對 root 使用者 ),操作步驟如下所示:

上面步驟分別要在ONE-Master 與 ONE-Node01 中進行操作,接著,我們需要將 ONE-Node01 所產生的公開金鑰傳遞到 ONE-Master 主機中,操作方式如下所示:

ONE-Node01:~ # scp .ssh/id_rsa.pub root@ONE-Master:/root
The authenticity of host ‘one-master (192.168.1.27)’ can’t be established.
ECDSA key fingerprint is 15:61:a0:27:62:c6:9f:0b:e2:ce:45:28:3a:21:3a:2e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘one-master,192.168.1.27’ (ECDSA) to the list of known hosts.
Password:
id_rsa.pub 100% 397 0.4KB/s 00:00

接著,我們必須在 ONE-Master 中將ONE-Master 與 ONE-Node01的公開金鑰內容放置到 .ssh/authorized_keys 檔案內,操作方式如下所示:

ONE-Master:~ # cat id_rsa.pub >> .ssh/authorized_keys
ONE-Master:~ # cat .ssh/id_rsa.pub >> .ssh/authorized_keys
ONE-Master:~ # chmod 600 .ssh/authorized_keys
ONE-Master:~ # scp .ssh/authorized_keys ONE-Node01:/root/.ssh/

The authenticity of host ‘one-node01 (192.168.1.25)’ can’t be established.
ECDSA key fingerprint is a6:03:dc:85:a9:63:c0:36:5e:c5:b8:9e:b4:27:62:d0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘one-node01,192.168.1.25’ (ECDSA) to the list of known hosts.
Password:
authorized_keys 100% 794 0.8KB/s 00:00

複製完畢後,兩台主機可以進行相關測試,確認系統管理員 root 已經不在需要密碼便可以於兩台主機間進行登入存取作業:

ONE-Master:~ # ssh ONE-Node01
Last login: Mon Oct 22 12:48:56 2012 from one-master
Have a lot of fun…
ONE-Node01:~ # ssh ONE-Master
Last login: Mon Oct 22 12:49:05 2012 from one-master
Have a lot of fun…

步驟三:於ONE-Master與ONE-Node01確認是否有安裝 XEN Hypervisor 工具

系統基礎配置完成前我們得確認一下是否安裝過程中有正確安裝 XEN Hypervisor 環境與工具,如下圖所示,可以於指令列中執行 yast 指令工具,在Virtualization群組中,選擇 Install Hypervisor and Tools項目。 ( 如果已經裝好 XEN Hypervisor 環境與工具時,在這個選單會出現四個項目 )

接著,我們必須要挑選安裝 Xen 的虛擬化環境:

由於某些套件會是在圖形環境底下才可以運作,因此安裝前系統會跟你警告是否持續安裝,請選鑿Yes繼續安裝:

安裝過程中可能會碰到套件衝突,如下所示,請選擇反安裝衝突的套件,便可以順利完成相關配置,安裝完畢後請直接 reboot 系統,並且將系統開在 XEN 的運作環境下。

步驟四:於 ONE-Master 主機上安裝 ONE 套件

完成基礎配置之後,接著,我們必須在 ONE-Master 主機上進行 ONE 套件的配置,我們可以前往 http://downloads.opennebula.org/ 網站進行下載最新的 ONE 套件,如下圖所示:

在這個範例中筆者是採用 3.7.80 這個版本來進行示範,由於安裝過程中我們會需要許多額外的函數庫支援,因此我們可以先在 ONE-Master 主機上將 Packman 套件庫添加到套件庫列表中再進行安裝作業,操作方式如下所示:

ONE-Master:~ # zypper ar -f -n “Packman Repository” http://packman.inode.at/suse/12.1/ “Packman Repository”
Adding repository ‘Packman Repository’ [done]
Repository ‘Packman Repository’ successfully added
Enabled: Yes
Autorefresh: Yes
GPG check: Yes
URI: http://packman.inode.at/suse/12.1/

接著,我們將剛才所下載到系統中的 ONE 套件檔案解開:

ONE-Master:~ # tar zxvf openSUSE-12.1-opennebula-3.7.80.tar.gz
opennebula-3.7.80/opennebula-3.7.80-1.x86_64.rpm
opennebula-3.7.80/opennebula-devel-3.7.80-1.x86_64.rpm
opennebula-3.7.80/opennebula-sunstone-3.7.80-1.x86_64.rpm
opennebula-3.7.80/opennebula-zones-3.7.80-1.x86_64.rpm
opennebula-3.7.80/src/
opennebula-3.7.80/src/opennebula-3.7.80-1.src.rpm

解開後的 ONE 套件包會包含安裝檔與Source RPM檔案,我們僅需要將編譯好的 RPM 安裝檔案進行安裝即可,操作方式如下所示:

ONE-Master:~ # cd opennebula-3.7.80/
ONE-Master:~/opennebula-3.7.80 # zypper in opennebula-*
Retrieving repository ‘Packman Repository’ metadata [done]
Building repository ‘Packman Repository’ cache [done]
Loading repository data…
Reading installed packages…
Resolving package dependencies…

The following NEW packages are going to be installed:
apache2 apache2-prefork apache2-utils libapr-util1 libapr1 libxmlrpc++7
libxmlrpc3 libxmlrpc_abyss3 libxmlrpc_client++7 libxmlrpc_client3
libxmlrpc_packetsocket7 libxmlrpc_server++7 libxmlrpc_server3
libxmlrpc_server_abyss++7 libxmlrpc_server_abyss3 libxmlrpc_util3 opennebula
opennebula-devel opennebula-sunstone opennebula-zones pwgen ruby ruby-devel
rubygem-nokogiri rubygem-rack-1_1 rubygem-sqlite3 rubygems sqlite3 xmlrpc-c
ypserv

The following recommended packages were automatically selected:
apache2-prefork ruby-devel ypserv

The following package is recommended, but will not be installed:
mariadb

30 new packages to install.
Overall download size: 9.4 MiB. After the operation, additional 39.4 MiB will
be used.
Continue? [y/n/?] (y): <== 回答 Y 之後便會開始進行安裝

步驟五:於ONE-Node01主機上安裝 ruby 與 相關需求套件環境

由於 ONE-Node01 會直接掛載 ONE-Master 主機上所安裝好的 ONE 環境直接使用,但有些套件與套件庫並非都安裝在 /var/lib/one 目錄內,因此我們需要額外補上這些需求套件,操作方式如下所示:

ONE-Node01:~ # zypper ar -f -n “Packman Repository” http://packman.inode.at/suse/12.1/ “Packman Repository”
Adding repository ‘Packman Repository’ [done]
Repository ‘Packman Repository’ successfully added
Enabled: Yes
Autorefresh: Yes
GPG check: Yes
URI: http://packman.inode.at/suse/12.1/

ONE-Node01:~ # zypper in libmariadbclient16 libmariadbclient_r16 libmysqlclient18 libxmlrpc++7 libxmlrpc3 libxmlrpc_abyss3 libxmlrpc_client++7 libxmlrpc_client3
libxmlrpc_packetsocket7 libxmlrpc_server++7 libxmlrpc_server3 libxmlrpc_server_abyss++7 libxmlrpc_server_abyss3 libxmlrpc_util3 mariadb
mariadb-client opennebula pwgen ruby ruby-devel rubygem-nokogiri rubygem-sqlite3 rubygems sqlite3 xmlrpc-c

步驟六:於 ONE-Master 主機上配置 ONE 環境

ONE 套件安裝時會建立一個新的群組帳號 cloud 與使用者帳號 oneadmin,使用者家目錄會被配置在 /var/lib/one,如下所示:

ONE-Master:~ # id oneadmin
uid=1001(oneadmin) gid=1000(cloud) groups=1000(cloud),33(video)
ONE-Master:~ # ls /var/lib/one/
.bash_history .emacs .local .vimrc bin remotes
.bashrc .fonts .profile .xim.template datastores
.config .inputrc .ssh .xinitrc.template public_html

在ONE運作過程中,/var/lib/one/datastores 是用來作為存放系統媒體與運作的VM空間使用,因此筆者會建議將這個目錄單獨放在 SAN 或是 RAID 上,在這個範例中筆者僅以畫分一個新的分割區來進行示範:

ONE-Master:~ # fdisk /dev/sdb  [ 首先,筆者先將新添加的 HDD /dev/sdb 切割一個獨立的分割區 /dev/sdb1 ]
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xacc5e768.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

ONE-Master:~ # partprobe
ONE-Master:~ # mkfs.ext4 /dev/sdb1   [ 接著將這個分割區格式化為 EXT4 檔案系統,若是實際運用建議讀者可以改用 XFS 檔案系統 ]
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

ONE-Master:~ # tail -1 /etc/fstab [ 將掛載的作業模式寫到 /etc/fstab 組態檔案內 ]
/dev/sdb1 /var/lib/one/datastores ext4 defaults 0 0

ONE-Master:~ # mount -a [ 執行掛載作業,並確認相關檔案目錄權限是否為 oneadmin.cloud ]
ONE-Master:~ # df -h | grep datastores
/dev/sdb1 20G 172M 19G 1% /var/lib/one/datastores

ONE-Master:~ # ls -ld /var/lib/one/datastores/
drwxr-xr-x 3 root root 4096 Oct 22 13:14 /var/lib/one/datastores/
ONE-Master:~ # chown -R oneadmin.cloud /var/lib/one/datastores/

接著,我們於ONE-Master主機切換使用者身分到 oneadmin,並且載他的家目錄內建立一個子目錄 .one,將用來存取 ONE 服務的帳號密碼填寫到 .one/one_auth 檔案內,操作方式如下:

ONE-Master:~ # su – oneadmin
oneadmin@ONE-Master:~> mkdir .one
oneadmin@ONE-Master:~> echo “oneadmin:novell” > .one/one_auth
oneadmin@ONE-Master:~> chmod 600 .one/one_auth

步驟七:於 ONE-Node01主機上配置 ONE 環境

ONE-Node01主機上的 ONE環境基本上可以直接透過 NFS 協定掛載來自於 ONE-Master 主機已經安裝好的相關資源,因此,我們必須先手動於 ONE-Node01 主機中建立 oneadmin 使用者帳號資訊,操作方式如下所示:

ONE-Node01:~ # groupadd -g 1000 cloud
ONE-Node01:~ # useradd -d /var/lib/one -g 1000 -u 1001 oneadmin

接著,我們在ONE-Master主機上配置NFS伺服器將/var/lib/one 與/var/lib/one/datastores目錄共享給ONE-Node01主機來進行使用:

ONE-Master:~ # chkconfig rpcbind on
insserv: Service syslog is missed in the runlevels 4 to use service xenstored
ONE-Master:~ # rcrpcbind start
redirecting to systemctl
ONE-Master:~ # cat /etc/exports
# See the exports(5) manpage for a description of the syntax of this file.
# This file contains a list of all directories that are to be exported to
# other computers via NFS (Network File System).
# This file used by rpc.nfsd and rpc.mountd. See their manpages for details
# on how make changes in this file effective.

/var/lib/one ONE-*(rw,no_root_squash,async,no_subtree_check)
/var/lib/one/datastores ONE-*(rw,no_root_squash,async,no_subtree_check)

ONE-Master:~ # exportfs -ra
ONE-Master:~ # chkconfig nfsserver on
insserv: Service syslog is missed in the runlevels 4 to use service xenstored
ONE-Master:~ # rcnfsserver start
redirecting to systemctl

組態完 ONE-Master主機的 NFS 伺服器之後,接著,我們切換到 ONE-Node01進行 NFS 用戶端的配置,操作方式如下所示:

ONE-Node01:~ # chkconfig rpcbind on
ONE-Node01:~ # rcrpcbind start
redirecting to systemctl
ONE-Node01:~ # tail -1 /etc/fstab
ONE-Master:/var/lib/one /var/lib/one nfs bg,soft,rw 0 0
ONE-Master:/var/lib/one/datastores /var/lib/one/datastores
 nfs bg,soft,rw 0 0
ONE-Node01:~ # mkdir /var/lib/one
ONE-Node01:~ # mount -a
ONE-Node01:~ # mount | tail -2

ONE-Master:/var/lib/one on /var/lib/one type nfs4 (rw,relatime,vers=4,rsize=524288,wsize=524288,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.25,minorversion=0,local_lock=none,addr=192.168.1.27)
ONE-Master:/var/lib/one/datastores/ on /var/lib/one/datastores type nfs4 (rw,relatime,vers=4,rsize=524288,wsize=524288,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.25,minorversion=0,local_lock=none,addr=192.168.1.27)

ONE-Node01:~ # chkconfig nfs on

ONE-Node01:~ # rcnfs start

步驟八:於 ONE-Master主機上調整 ONE 啟用支援 XEN 環境

完成基本組態步驟之後,接著我們必須調整 ONE 組態檔案 ( 預設,組態檔案是定義使用 KVM ),將 XEN 虛擬化環境作為主要的支援項目,編輯 /etc/one/oned.conf 檔案,將 135 ~ 138 行與217 ~ 222註解,開啟 146 ~ 149 行與234 ~ 239 行:

註解

IM_MAD = [
name = “im_kvm”,
executable = “one_im_ssh”,
arguments = “-r 0 -t 15 kvm” ]

VM_MAD = [
name = “vmm_kvm”,
executable = “one_vmm_exec”,
arguments = “-t 15 -r 0 kvm”,
default = “vmm_exec/vmm_exec_kvm.conf”,
type = “kvm” ]

開啟

IM_MAD = [
name = “im_xen”,
executable = “one_im_ssh”,
arguments = “xen” ]

VM_MAD = [
name = “vmm_xen”,
executable = “one_vmm_exec”,
arguments = “-t 15 -r 0 xen”,
default = “vmm_exec/vmm_exec_xen.conf”,
type = “xen” ]

步驟九:於 ONE-Master 與 ONE-Node01 主機上調整 oneadmin 使用者 sudo 權限配置

因為筆者將 ONE-Master 與 ONE-Node01 都作為 XEN Host使用,因此在 ONE 運作過程中會需要使用到一些基本的 xentop、xm等指令,因此我們必須先將執行權限透過 visudo 指令工具添加下列規格:

oneadmin ALL=(ALL) NOPASSWD: /usr/sbin/xm *
oneadmin ALL=(ALL) NOPASSWD: /usr/sbin/xentop *
oneadmin ALL=(ALL) NOPASSWD: /usr/sbin/ovs_vsctl *

除此之外,讀者也必須更替一下 ONE-Master與ONE-Node01主機上的 oneadmin 使用者帳號密碼:

ONE-Master:~ # passwd oneadmin
Changing password for oneadmin.
New Password:
Bad password: too simple
Reenter New Password:
Password changed.

ONE-Node01:~ # passwd oneadmin
Changing password for oneadmin.
New Password:
Bad password: too simple
Reenter New Password:
Password changed.

步驟十:於 ONE-Master 啟動 ONE 伺服器服務

完成前面的基礎配置之後,接著我們可以在ONE-Master這台主機中,以oneadmin使用者帳號執行 one start,將 ONE 伺服器啟動,操作方式如下所示:

ONE-Master:~ # su – oneadmin
oneadmin@ONE-Master:~> one start
oneadmin@ONE-Master:~> ls  one.db
one.db

第一次啟動ONE伺服器時,會在 oneadmin 使用者帳號家目錄內產生一個 one.db 資料檔案,這裡面便是所運行的 ONE 伺服器相關資訊 ( ONE 也支援改用 MYSQL 作為儲存這些資訊的資料庫,有興趣的朋友可以參考官方網站說明配置 )

步驟十一:將 ONE-Master 與 ONE-Node01 XEN 資源添加到 ONE 伺服器中

順利啟動 ONE 伺服器之後,接著我們可以將運行中的 XEN 伺服器資源添加到 ONE 伺服器內,操作方式如下所示: ( -i  Set the information driver for the host , -v  Set the virtualization driver for the host , -n Set the network driver for the host )

oneadmin@ONE-Master:~> onehost create ONE-Master -i im_xen -v vmm_xen -n dummy
ID: 0
oneadmin@ONE-Master:~> onehost create ONE-Node01 -i im_xen -v vmm_xen -n dummy
ID: 1

接著,我們可以將這些資源建立一個叢集群組,這樣便可以將整個資源進行統合使用,操作方式如下所示:

oneadmin@ONE-Master:~> onecluster create Cluster
ID: 100
oneadmin@ONE-Master:~> onecluster addhost Cluster ONE-Master
oneadmin@ONE-Master:~> onecluster addhost Cluster ONE-Node01

到這邊為止我們便已經順利完成 ONE 運作環境,相關細部操作或者是語法使用問題讀者可以參考後面的 Ref. 文件進行閱覽。

參考文件:

延伸閱讀:

IBM X3550 M2 無法啟動於 XEN kernel 環境問題

2011年8月10日 2 則評論

昨天剛好幫朋友在 IBM X3550 M2 上安裝 Novell PlateSpin Orchestrate測試VM環境,結果裝好 SLES 11 SP1 後發現竟然無法選擇 XEN Kernel 開機,後來經過幾番折騰才發現原來是 XEN Kernel 目前不支援運作於 uEFI BIOS 環境下,解決方式很慘痛,因為我又花了 2 個多小時重新安裝與配置,因此把這段紀錄記載下來:

1. 重新開機後按下 F1 進入 BIOS 設定中,選擇進入 [ Boot Manager ]

.

2. 接著選擇 [ Add Boot Option ]

3. 然後在 [ Legacy Only ] 上按下 Enter。

4. 接著返回Boot Manger 畫面中選擇 [ Change Boot Order ],將 Legacy Only 順訊提到第一順位。

5. 重新開機後,在Legacy Only模式下安裝 SLES 11,這樣就可以正常啟動 XEN kernel 了。