重磅圖文詳解:OpenNebula安裝和節(jié)點配置實戰(zhàn)
OpenNebula 4.10入門之安裝和節(jié)點配置
環(huán)境說明:
所有系統(tǒng)環(huán)境管理端和節(jié)點宿主機都采用CentOS 6.6 x86_64
服務器使用情況:
1. 控制節(jié)點和存儲節(jié)點使用同一臺服務器.
2. 計算節(jié)點分別使用兩臺服務器
系統(tǒng)約定:
cloud.webxury.com 192.168.15.100 (計算節(jié)點)
cloud1.webxury.com 192.168.15.101 (計算節(jié)點)
storage.webxury.com 192.168.15.200 (存儲和控制)
系統(tǒng)最小化安裝(略過),并且根據(jù)約定配置好IP地址,修改好計算機名,檢查系統(tǒng)時間是否正確,確保機器能和外界通信,并且將以上內容添加到本地/etc/hosts文件內,確保域名解析正常,并且永久關閉SELINUX以及IPTABLES,并且重啟,方可進行安裝部署.因為是測試,所以暫時關閉,正式上線,需要添加需要權限以及防火墻的端口設定.
控制臺安裝篇
1. 為系統(tǒng)添加EPEL源,添加EPEL源的原因是因為要解決一些在安裝上的依賴
yum –y install epel-release
2. 為系統(tǒng)添加Opennebula官方源
- # vi /etc/yum.repos.d/opennebula.repo
- [opennebula]
- name=opennebula
- baseurl=http://downloads.opennebula.org/repo/4.10/CentOS/6/x86_64/
- enabled=1
- gpgcheck=0
3. 生成源緩存(個人習慣)
yum makecache
4. 安裝Opennebula控制臺.
1.)# yum –y install opennebula-server opennebula-sunstone
安裝完成之后創(chuàng)建如下用戶以及目錄文件:
- # grep oneadmin /etc/passwd
- oneadmin:x:9869:9869::/var/lib/one:/bin/bash
- # ls -ld /etc/one/ //OpenNebula相關配置文件所在目錄
- drwxr-x---. 11 root oneadmin 4096 Feb 2 11:35 /etc/one/
- #ls/etc/init.d/opennebula*
- /etc/init.d/opennebula
- /etc/init.d/opennebula-occi
- /etc/init.d/opennebula-sunstone
- # ls -ld /var/log/one/
- drwxr-x---. 2 oneadmin oneadmin 4096 Feb 2 01:13 /var/log/one/
2).安裝組件
- # /usr/share/one/install_gems
- lsb_release command not found. If you are using a RedHat based distribution install redhat-lsb Select your distribution or press enter to continue without installing dependencies.
- 0. CentOS/RedHat
- 1. Ubuntu/Debian
選擇相對應的操作系統(tǒng),我們選擇0
5. 默認OpenNebula數(shù)據(jù)存儲使用sqlite,如果需要使用MySQL,則需要做如下操作
1).安裝mysql數(shù)據(jù)庫
- yum –y install mysql mysql-server
- #service mysqld start
- #chkconfig mysqld on
并且設置MYSQL密碼(忽略)
2).創(chuàng)建數(shù)據(jù)庫
- $ mysql -u root -p
- Enter password:
- Welcome to the MySQL monitor. [...]
- mysql> GRANT ALL PRIVILEGES ON opennebula.* TO '用戶名' IDENTIFIED BY '密碼'; Query OK, 0 rows affected (0.00 sec)
3).設置隔離級別
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
6. 修改配置文件如下 [用戶、端口、密碼、庫名和實際情況對應修改:
- # vi /etc/one/oned.conf
- … …
- #DB = [ backend = "sqlite" ] (記得把這行注銷)
- # Sample configuration for
- DB = [ backend = "mysql",
- server = "localhost",
- port = 0, (這里0的意思代表使用MYSQL默認3306端口,所以不需要修改)
- user = "剛才設置的用戶名",
- passwd = "剛才設置的密碼",
- db_name = "opennebula" ]
- … …
7. 修改sunstone默認監(jiān)聽IP:
vi /etc/one/sunstone-server.conf
找到 :host: 127.0.0.1
修改成 :host: 0.0.0.0
8.啟動相關服務
- # service opennebula start
- # service opennebula-sunstone start
- #chkconfig opennebula on
- #chkconfig opennebula-sunstone on
8.添加NFS共享存儲目錄
- vi /etc/exports
- /var/lib/one/ *(rw,sync,no_subtree_check,root_squash)
啟動服務
- # service rpcbind restart
- # service nfs restart
- # chkconfig nfs on
- # chkconfig rpcbind on
9.添加SSH公共KEY
- # su - oneadmin
- $ vi ~/.ssh/config
添加以下內容
- Host *
- StrictHostKeyChecking no
- UserKnownHostsFile /dev/null
修改文件權限
- $ chmod 600 ~/.ssh/config
10.修改oneadmin密碼
- #su oneadmin
- $passwd oneadmin
注:測試過程中因為測試環(huán)境服務端時間不對,導致cookie被忽略,OpenNebula Sunstone選擇Keep me logged in一直登陸不上或者直接登陸很快退出,尋找原因花了很長時間,最后調整到正確時間,登陸顯示ok。
P.S: 時間是一個非常容易被我們忽略的問題,切記切記!
完成以上步驟之后,瀏覽器登陸 http://ip:9869 即可
#p#
節(jié)點安裝篇
系統(tǒng)約定:
cloud.webxury.com 192.168.15.100 (計算節(jié)點)
cloud1.webxury.com 192.168.15.101 (計算節(jié)點)
storage.webxury.com 192.168.15.200 (存儲和控制)
系統(tǒng)最小化安裝(略過),并且根據(jù)約定配置好IP地址,修改好計算機名,檢查系統(tǒng)時間是否正確,確保機器能和外界通信,并且將以上內容添加到本地/etc/hosts文件內,確保域名解析正常,并且永久關閉SELINUX以及IPTABLES,并且重啟,方可進行安裝部署.因為是測試,所以暫時關閉,正式上線,需要添加需要權限以及防火墻的端口設定.
安裝篇
1.為系統(tǒng)添加EPEL源,添加EPEL源的原因是因為要解決一些在安裝上的依賴
yum –y install epel-release
2.為系統(tǒng)添加Opennebula官方源
- # vi /etc/yum.repos.d/opennebula.repo
- [opennebula]
- name=opennebula
- baseurl=http://downloads.opennebula.org/repo/4.10/CentOS/6/x86_64/
- enabled=1
- gpgcheck=0
3.生成源緩存(個人習慣)
yum makecache
4.安裝節(jié)點組件
yum –y install opennebula-node-kvm
啟動相關服務
- # service messagebus start
- # service libvirtd start
- # chkconfig messagebus on
- # chkconfig libvirtd on
5.給系統(tǒng)網(wǎng)卡做橋接
首先先復制一份ifcfg-eth0的文件,重命名為ifcfg-br0
網(wǎng)卡路徑: /etc/sysconfig/network-scripts/ifcfg-eth0
拷貝一份eth0,并且重命名為br0
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0
修改網(wǎng)卡文件eth0
- DEVICE=eth0
- BOOTPROTO=none
- NM_CONTROLLED=no
- ONBOOT=yes
- TYPE=Ethernet
- BRIDGE=br0
修改剛才拷貝的ifcfg-br0文件
- DEVICE=br0(記得修改網(wǎng)卡名稱,因為是復制過來的)
- TYPE=Bridge
- IPADDR=192.168.15.100
- NETMASK=255.255.255.0
- GATEWAY=192.168.15.1
- DNS1=8.8.8.8
- DNS2=8.8.4.4
- ONBOOT=yes
- BOOTPROTO=static
- NM_CONTROLLED=no
重啟網(wǎng)卡
- # service network restart
6. 掛載存儲的NFS共享目錄
編輯: /etc/fstab
添加以下內容
192.168.15.200:/var/lib/one /var/lib/one/ nfs soft,intr,rsize=8192,wsize=8192,noauto
7. 修改oneadmin密碼
#passwd oneadmin
回到控制節(jié)點服務器,讓SSH無密碼登陸節(jié)點服務器,否則控制節(jié)點添加計算節(jié)點將會失敗
- [oneadmin@storage ~]# su oneadmin
- [oneadmin@storage ~]$ ssh-keygen
- Generating public/private rsa key pair.
- Enter file in which to save the key (/var/lib/one/.ssh/id_rsa):
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /var/lib/one/.ssh/id_rsa.
- Your public key has been saved in /var/lib/one/.ssh/id_rsa.pub.
- 一路回車直到結束
- [oneadmin@storage~]$ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub oneadmin@cloud.webxury.com
- oneadmin@cloud.webxury.com 's password:
- .ssh/authorized_keys
根據(jù)提示輸入密碼后,已經(jīng)成功登陸節(jié)點服務器,然后退出,嘗試再次從控制節(jié)點服務器,ssh進入節(jié)點服務器,已經(jīng)是不需要密碼了,說明設置成功,然后退出,并且重啟服務器,服務器啟動后,請檢查是否掛載成功.
注:掛載的時候我遇到一個問題,我把storage掛載到每一個節(jié)點下的/var/lib/one/目錄下,發(fā)現(xiàn)權限已經(jīng)改變,默認權限所屬用戶組和用戶名都是oneadmin,但是掛在后發(fā)現(xiàn)用戶名密碼都是nobody,所以我們要修改/etc/idmapd.conf這個文件,把Nobody-User=XXX修改成oneadmin,Nobody-Group=XXX也同樣修改成oneadmin,并且重啟服務,service rpcidmapd restart.
安裝教程基本完成,可以簡單做測試,現(xiàn)在我們打開UI界面.
#p#
現(xiàn)在我們開始創(chuàng)建集群.
現(xiàn)在我們開始添加節(jié)點服務器,記得將節(jié)點添加到集群選項里面,看操作.
節(jié)點添加完成,我們現(xiàn)在開始添加網(wǎng)絡.請看操作.
網(wǎng)絡添加完成了,請記得把網(wǎng)絡添加到集群里面,否則會出現(xiàn)錯誤.
#p#
最后,我們檢查集群,將存儲添加進去,然后檢查一遍,是否全部正確.
現(xiàn)在看到集群里面,有2個計算節(jié)點,一個虛擬網(wǎng)絡,3個存儲.這個是正確的.
現(xiàn)在我們導入官方的一個模板和鏡像文件做測試.
經(jīng)過幾分鐘,已經(jīng)成功導入,導入的時間,是根據(jù)網(wǎng)絡而定,因為要下載回來,所以是需要時間的.
#p#
導入鏡像的時候,它配有一個模板文件,我們稍微拿來改動一下就可以使用,下面看我操作.
接下來我們可以創(chuàng)建虛擬機來測試一下.
現(xiàn)在看見虛擬機可以運行了.但是有一個地方需要注意和修改,不然虛擬機一直會停留在等待,而不會運行.
用SSH 進入控制臺的主機,找到/etc/sched.conf這個文件,找到調度配置文件,以下請根據(jù)自己需求去修改.
- DEFAULT_SCHED: Definition of the default scheduling algorithm
- # - policy:
- # 0 = Packing. Heuristic that minimizes the number of hosts in use by
- # packing the VMs in the hosts to reduce VM fragmentation
- # 1 = Striping. Heuristic that tries to maximize resources available for
- # the VMs by spreading the VMs in the hosts
- # 2 = Load-aware. Heuristic that tries to maximize resources available for
- # the VMs by using those nodes with less load
- # 3 = Custom.
- # - rank: Custom arithmetic exprission to rank suitable hosts based in their
- # attributes
- # 4 = Fixed. Hosts will be ranked according to the PRIORITY attribute found
- # in the Host or Cluster template.
- #
- # DEFAULT_DS_SCHED: Definition of the default storage scheduling algorithm
- # - policy:
- # 0 = Packing. Tries to optimize storage usage by selecting the DS with
- # less free space
- # 1 = Striping. Tries to optimize I/O by distributing the VMs across
- # datastores.
- # 2 = Custom.
- # - rank: Custom arithmetic exprission to rank suitable datastores based on
- # their attributes
- # 3 = Fixed. Datastores will be ranked according to the PRIORITY attribute
- # found in the Datastore template.
- 這個是調度的說明,我用的是2和3的調度機制
- DEFAULT_SCHED = [
- policy = 2
- ]
- DEFAULT_DS_SCHED = [
- policy = 3
- ]
請根據(jù)自己需求去修改.
下面是修改高可用配置.實現(xiàn)其中一臺計算節(jié)點服務器宕機后,另外一個計算節(jié)點自動接管
編輯/etc/one/oned.conf文件,找到
- HOST_HOOK = [
- name = "error",
- on = "ERROR",
- command = "ft/host_error.rb",
- arguments = "$ID -m -p 1",(原來這里的1是5,我改成了1,是因為檢測時間為5分鐘,我改成了1分鐘,1分鐘后計算節(jié)點還在宕機,另外一臺則自動接管)
- remote = "no" ]
- VM_HOOK = [
- name = "advanced_hook",
- on = "CUSTOM",
- state = "ACTIVE",
- lcm_state = "BOOT_UNKNOWN",
- command = "log.rb",
- arguments = "$ID $PREV_STATE $PREV_LCM_STATE" ]
#p#
#號去掉,然后重啟服務.
1分鐘后,另外一臺主機自動接管了,虛擬機恢復正常,可以根據(jù)自己的需求來修改鉤子觸發(fā)的配置文件,來達到高可用目的.
本文轉自KVM虛擬化實踐微信公眾號,特此感謝。 |