起css
自從上次在ESXI5.1環境下測試完RHEL6.3版本的fence設備後,一直想着將其它版本的fence設備也測了。記得在寫上篇博客時查詢過紅帽官方的fence設備類型兼容列表,上次測試使用的是fence_vmware_soap設備,根據兼容列表,5版本的5.7(含)以上、6版本的6.2(含)以上均可以使用。此次測試的系統版本是RHEL6.0-x64。(5版本5.7如下測試結果請見本文結尾)
node
承linux
先來講說環境,基本上跟上次測試同樣,一樣爲了方便只有一個VIP服務,不一樣的是爲避免衝突,主機名與IP地址變了。ios
node1—主機名=robinzs1.site;eth0=192.168.0.3;eth1=192.168.8.30數據庫
node2—主機名=robinzs2.site;eth0=192.168.0.4;eth1=192.168.8.31vim
eth0爲心跳線,eth1爲業務線。我在Esxi環境除默認虛擬交換機外,新建立一個虛擬交換機(一個端口組),並把兩節點的eth1網卡都橋接到其上,以下圖所示:windows
VMkernel端口的IP地址是我架設esxi的vmware-workstation的第二個IP地址,而workstation的網卡是橋接模式,這樣一來,兩節點均可以上網,而且我用其它物理設備也能夠訪問測試。其實上次測試我也是這麼幹的,因此端口組裏纔會上次測試的兩個主機,只不過把這步略過了,這裏特此說明。固然,若是隻爲測試其實只要我本機能訪問到就好了,我就是想試試功能,新鮮新鮮,呵呵。oracle
爲節省資源,我只開了此次要實驗的兩臺主機ide
虛擬機的安裝就不說了,基本配置與集羣除fence以外的過程略過,一樣直奔主題。詳細過程可參見上篇博客或個人其它博客。測試
轉
vmware-esxi5.1環境下,RHEL6.0應使用fence_vmware設備,但若是隻是用luci從圖形界面添加是找不到此設備的
只能在命令行下找到
這時咱們先將fence 設備跳過,先將其它配置搞好。直接修改配置文件,我想過用像6.3同樣用css命令,可意外地發現6.0 版本居然不支持,哈,不得不說紅帽真有意思!至於其它相關命令之後再查,不作爲重點,因此直接修改配置文件。
cp /etc/cluster/cluster.conf /etc/cluster/cluster.conf.bak
//在任意節點上先備份文件
/etc/init.d/rgmanager stop
/etc/init.d/cman stop
//先將兩臺主機的集羣服務中止
vim /etc/cluster/cluster.conf //任意節點打開配置文件
這時我仍是思考了一下,其fence原理應該是差很少的,因此想先參照6.3版本的fence_vmware_soap設備配置一番試試效果。找到<fencedevices>標籤,添加如下內容:
<fencedevice agent="fence_vmware" ipaddr="192.168.0.10" login="root" name="vm_fence" passwd="robinz712"/>
能夠看到,其實跟上次實驗時配置文件這塊內容差很少。而後再找到節點標籤clusternode,添加如下內容:
<fence> <method name="fence_z1"> <device name="vm_fence" port="RHEL6-1"/> </method> </fence>
第二個節點標籤添加:
<fence> <method name="fence_z2"> <device name="vm_fence" port="RHEL6-2"/> </method> </fence>
寫到這裏忽然想到還不知道設備的UUID,不知fence_vmware設備需不須要這個參數,正好測試一番。
fence_vmware -a 192.168.0.10 -l root -p robinz712 -n RHEL6-1 -o list
按完回車後發現這個命令執行不了,信息以下:
fence_vmware_helper returned Please install VI Perl API package to use this tool! Perl error: Can't locate VMware/VIRuntime.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 1) line 1. BEGIN failed--compilation aborted at (eval 1) line 1. Please use '-h' for usage
瞅這意思應該是須要安裝VI Perl API包才能執行,關於這個包組我在網上查到是vmware的vsphere組件的SDK包,找到一篇英文博客對我頗有幫助,地址是:http://blog.wains.be/category/high-availability/
這個軟件包的名稱叫作:VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64,在vmware官網能夠下載,支持windows與Linux兩種系統,我下載的是x64位的,不過須要在官網註冊。
在安裝軟件包以前,須要安裝幾個依賴的系統軟件包:
yum install openssl-devel*
yum install perl-Compress*
yum install perl-XML*
yum install perl-Crypt*
yum install perl-Class*
yum install perl-Nagios*
其實不用裝這麼多,若是安裝系統時選擇的是桌面版的話,有些已經安裝好了,有些沒有,由於我是先作後寫因此記得不是太清楚,仍是都寫上去吧:)安裝的目地是須要perl的系統軟件包作服務支撐。
安裝完成後將下載的SDK軟件包傳到虛擬機節點中去,解壓縮再安裝
tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.gz
我通常是習慣將第三方軟件包放到/home目錄下,解壓縮以後會發現多了一個名爲vmware-vsphere-cli-distrib的目錄,先來看看目錄內容:
有個叫vmware-install.pl的安裝文件,執行它
./vmware-install.pl
這時須要按任鍵,之查看協議條款啥的。
查看完協議後,按y開始配置安裝。第一次安裝的時候報了個錯:
這兩行的意思是要設置http與ftp的代理路徑地址,這裏其實不用這麼麻煩,我在網上找到一個英文的解決方法,呵呵,又給了我很大幫助。
根據文檔介紹,只要敲兩行命令就能夠搞定
export http_proxy=
export ftp_proxy=
這樣就好了,沒必要要真的能用只要將地址像徵性設置一下就好了,哈哈。
再次執行安裝,開始覺得很順利,可又遇到問題了,哈哈哈。
這個報錯的意思是沒法在系統安裝Perl模塊,必需要手動安裝。
參照上邊的地址的解決方法,在解壓縮目錄內,進行編譯安裝
cd /home/vmware-vsphere-cli-distrib
perl Makefile.PL
//Makefile.PL是目錄內解壓縮自帶的文件,這條命令的意思是查看Makefile.PL內腳本的輸出結果
make install
//編譯安裝
這一步作完以後,vmware-vsphere-cli-distrib目錄多出部分文件
注:上述目錄步驟兩節點都要作!
vmware-vsphere的SDK軟件包安裝成功,再次執行fence命令行
fence_vmware -a 192.168.0.10 -l root -p robinz712 -n RHEL6-1 -o list
結果以下:
列出了Esxi環境下的全部虛擬主機,看來fence_vmware設備的list動做不是像fence_vmware_soap相同動做結果那樣輸出UUID,那是否是說在配置文件裏,UUID就不用寫了呢?先用命令行測試完,再用集羣測試看看結果就能知道了。
fence_vmware -a 192.168.0.10 -l root -p robinz712 -n RHEL6-1 -o status
//查看狀態
Status: ON
再將-n參數值換成RHEL6-2,看看結果是否成上述相同
fence_vmware -a 192.168.0.10 -l root -p robinz712 -n RHEL6-1 -o reboot
//重啓測試
Success: Rebooted
在vSphere Client界面下查看命令行效果:
虛擬機重啓,測試成功,再將RHEL6-2也如法炮製一番,沒什麼問題能夠開始集羣測試了。
配置文件照剛開始那樣修改直接可使用,先把兩節點的cman與rgmanger服務開啓
注:這裏要特別說明一點,上次和本次是配置fence設備都是建立一個fence設備,在與節點關聯時將port參數寫上去。其實也能夠創建兩個fence 設備,將port參數都寫在fence設備標籤內,在與節點關聯時就簡單了,參數只要寫對應的fence設備名稱就行。我已經試過能夠成功,有興趣的兄弟能夠試試:)
能夠在任意節點上開啓luci服務,查看手動添加的fence設備
上圖就是 fence_vmare的設備參數,很奇怪的是爲何圖形界面自己沒法添加,須要手動添加,不會是故意的吧,呵呵。
如今來運行clustat查看集羣狀態
接着ping測試VIP,和本地測試ping都沒有問題,再也不詳述。
因服務在節點1上,因此當節點1的心跳網卡測試
ifdown eth0
在節點2上查看集羣狀態
查看vsphere-client環境
上圖表示fence動做成功!再當節點2的心跳線測試,這裏不詳述了,應該沒問題:)
這裏要提示一句:在當網卡以前能夠用fence_node robinzs1.site來測試fence是否成功,cluster真正去作fence動做的命令實際上是fence_node~!
最後一項測試,將兩個節點的cman與rgmanager服務都設置爲開機自啓,固然應該不用設置已是自啓了,要確認清楚,而後關機。
關機後,先開啓任意節點
上圖所示,在節點1開機1分多鐘的時候,節點2自動開啓了。最後一項測試成功~!
另
此次測試是用的RHEL6.0系統,根據fence兼容列表推斷6.1應與6.0的配置方法差很少,其實不管是哪一個版本,原理上無非是將虛擬平臺當作fence設備。只不過沒找到命令行css,還有圖形界面少了vmware的fence設備感受不爽,命令行有多是我沒研究到,但luci少設置應該是個bug,估計6.1應該會解決這個問題。下一個測試版本也是這ESXI平臺fence設備最後一個測試版本,我會在RHEL5.7如下版本中找一個作爲測試對象。
原本想測試RHEL5.7如下版本單開一篇博,可測下來發現與本篇所測內容基本相同,因此把大慨狀況加以說明。
(1)我測試的版本是RHEL5.6,由於之前測試的系統都是64位,因此此次用的是32位系統;
使用的fence設備一樣是fence_vmware,並且一樣要安裝VMware-vSphere-Perl-SDK包;
不過這裏要說明是,雖然vmware官網一樣提供32位的包,但一樣要安裝64的包。
(2)安裝方法稍有不一樣:先把所需系統軟件包裝好;
在軟年包解壓縮目錄下直接運行perl Makefile.PL命令,再運行make install編譯安裝便可;
若是運行./vmware-install.pl命令,我等了一個小時沒有執行完,後來直接編譯安裝就能夠用。這麼看好像紅帽6版本也能夠這麼幹,呵呵,有機會再試吧。安裝好後能夠運行行fence_vmware命令測試可否執行。
結
到此,根據紅帽官網提供的兼容列表,基於ESXI5.1環境的紅帽基本全部版本的fence設備都測試完了,沒測試的版本見兼容列表就能夠了。下一步是測試xen-server環境的fence設備與HA搭建,與虛擬環境下的數據庫集羣。至於數據庫是哪一個產品,還在考慮當中,有多是oracle。好,小歇一會繼續開始,喝茶去了~:)