實施系統(tǒng)軟硬件環(huán)境
硬件:p4 2.4G,80G,512M DDR
宿主機系統(tǒng):win2000pro sp4
虛擬機軟件:Vmware GSX Server 3.1
安裝Vmware GSX Server 3.1和Redhat AS3.0的基本系統(tǒng)
1.安裝Vmware GSX Server3.1
相信大家都安裝過workstation,過程都差不多,這里就不多廢話了,有一點要提醒大家注意的是,VMware GSX Server2.5無法打開Vmware workstation4.52虛擬出來的系統(tǒng),GSX Server2.5比4.52出來的要早,所以。。。。。。。
2.安裝Redhat AS3.0
切記安裝上xwindows桌面系統(tǒng),設置此系統(tǒng)hostname為linux1,ip為10.0.0.155
3.COPY并配置另一套AS3.0系統(tǒng)將安裝的第一套系統(tǒng)的文件復制到另一個文件夾,用編輯器打開rhel3.vmx文件修改displayName?=?"Linux1"到"Linux2"
然后修改此系統(tǒng)的虛擬硬件配置,將網(wǎng)卡刪除如下圖所示,進行此步的原因是因為從第一套系統(tǒng)COPY過來的文件如果同時運行,兩個系統(tǒng)的MAC地址會發(fā)生沖突由于將網(wǎng)卡刪除,所以必須刪除后啟動第二套系統(tǒng),啟動過程中kudzu進程會提示系統(tǒng)有多余的配置文件(就是已經(jīng)被刪除網(wǎng)卡的配置文件),選擇將多余的配置文件刪除,然后再關閉linux2系統(tǒng),重新給linux2添一塊網(wǎng)卡。再啟動linux2
啟動linux2,啟動過程中,由于重新添加了網(wǎng)卡,所以系統(tǒng)檢測到了它,再重新配置網(wǎng)卡,設置linux2 IP地址為10.0.0.156,其它同 linux1。(注:這樣有人可能會覺得麻煩,不過網(wǎng)卡MAC地址沖突,這也是沒辦法的事,誰讓咱們偷懶不想再重裝一套系統(tǒng)呢)
這時候檢查以下各文件,修改主機名,網(wǎng)絡配置文件
#vi?/etc/sysconfig/network
將HOSTNAME=linux1改為HOSTNAME=linux2
#vi?/etc/hosts
將10.0.0.155 linux1修改為10.0.0.156 linux2
(注:有些朋友可能會問,怎么不直接把hosts文件里把linux1,心跳地址都寫進去,其實我現(xiàn)在這么做是為了讓文檔更清晰些,到下一步的時候再添加這些,雖然稍微麻煩點,但是可以避免一些朋友看不明白)
這樣兩套完整的AS3.0的系統(tǒng)就配置成功,進入第二階段
二、使用Vmware虛擬出HA必需硬件設備,并進行配置
1.給兩個系統(tǒng)各虛擬一個新的網(wǎng)卡
關掉兩個系統(tǒng),給兩系統(tǒng)各一個增加以網(wǎng)橋方式工作的網(wǎng)卡,方法與第一圖類似
2.創(chuàng)建共享磁盤
給HA系統(tǒng)創(chuàng)建共享磁盤sdb,大小為500M(自定義),如下圖所示
先打開linux1系統(tǒng)的設置,創(chuàng)建磁盤,磁盤文件名為,share.vmdk 選中Allocate all disk space now這一選項
建議將新加磁盤的裝入點設為scsi 1:0,如下圖所示,這就是系統(tǒng)的裸設備
然后打開linux2的設置,同樣給linux2添加共享磁盤,不過這次選擇已經(jīng)存在的磁盤,使用的共享磁盤就是剛才為linux1創(chuàng)建的那個磁盤,如下圖所示
同樣在Configuration?editor?里面修改共享磁盤的”Vitual?disk?node”為scsi?1:0
這樣,就給兩個系統(tǒng)各創(chuàng)建了一個新網(wǎng)卡,又創(chuàng)建了一個共享磁盤。由于系統(tǒng)啟動的時候會鎖定磁盤,所以當啟動linux1后共享磁盤被鎖定了,linux2就起不來了,因此必須做一下設置,用編輯器打開兩個Vmware文件夾的rhel3.vmx文件,最后增加一行:
Disk.locking?=?false
這樣硬件就配置好了
3.配置新添加的網(wǎng)卡
啟動linux1系統(tǒng),系統(tǒng)在啟動時候會檢測到新添加的網(wǎng)卡,選擇配置,將第二塊網(wǎng)卡的IP設置為192.168.123.1,其它默認
修改linux1系統(tǒng)的/etc/hosts文件,改后內(nèi)容如下
10.0.0.155 linux1
192.168.123.1 linux1
10.0.0.156 linux2
192.168.123.2 linux2
同時啟動linux2系統(tǒng),設置方法同linux1
4.配置共享磁盤
在linux1在shell里運行
#fdisk /dev/sdb //注使用parted也可以
將添加的共享磁盤,分為兩個區(qū):sdb1和sdb2,各250M大小
在兩臺服務器上分別編輯/etc/sysconfig/rawdevices文件,將分區(qū)綁定到裸設備。
#vi?/etc/sysconfig/rawdevices
加入
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2?
重啟服務
#service?rawdevices?restart
啟動完成后執(zhí)行
#raw –qa,會顯示以下內(nèi)容
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
格式化共享磁盤,每個塊大小為4K
mkfs.ext3 -j -b 4096 /dev/sdb1
mkfs.ext3 -j -b 4096 /dev/sdb2
注明:使用-b選項將磁盤區(qū)塊設置為4K,過小的區(qū)塊會導致磁盤檢查的時候耗費過多的時間
然后在linux2里修改/etc/sysconfig/rawdevices同上,然后重新啟動rawdevices服務,raw –qa檢查系統(tǒng)
至此,硬件準備工作完成
三、安裝并配置基本的HA系統(tǒng)
在這里我們只將AS3.0自帶的CLUSTER服務配置好,涉及到具體的http,ftp,mysql,oracle的HA服務會在下一部分介紹
安裝確認系統(tǒng)內(nèi)安裝了AS3.0的HA軟件包
我們在這里要用到的軟件包主要有兩個,clumanager和redhat-config-cluster
請用rpm –q 命令檢查系統(tǒng)是否安裝這兩個軟件包,如果沒有安裝可以通過以下方法安裝
使用ISO或光盤,AS3.0共有八張光盤,我們平時常用的只有前四張,另外有四張擴展光盤,其中擴展光盤的第三張是集群軟件,還包括了IPVS
等軟件,從光盤上安裝,如下圖或者通過網(wǎng)絡上下載到這兩個軟件包進行單獨安裝
rpm --Uvh clumanager-
rpm --Uvh redhat-config-cluster-
注:網(wǎng)絡上比較多的是src軟件包,下載下來以后得使用rpmbuild命令進行重新編譯,然后在安裝
開始基本的HA配置
在linux1系統(tǒng)上,啟動xwindows,我這里是gnome,開始運行配置工具
選擇左下角圖標 => 系統(tǒng)設置 =>服務器設置 => Cluster(或者在命令行里運行#redhat-config-cluster)
[!--empirenews.page--]出現(xiàn)以下畫面(圖里左上角亂碼是因為我用的是遠程XWINDOWS,設置有問題)
下一步操作,點菜單欄里的群集->配置
出現(xiàn)下圖所示
在Cluster Name處可以更改你設置集群的名字,在這里我設置為test_cluster
然后我們開始添加集群內(nèi)的成員,點菜單欄->新建 如下圖所示
(注:此時保證列表處選中Members,才可以出現(xiàn)下面內(nèi)容)
將兩臺機器Ip都填寫進去,如下圖
在這里選中菜單欄里的cluster->shared state,可以查看裸設備設置,如下圖
點擊確定繼續(xù)
然后打開菜單欄clusterdaemon properties出現(xiàn)以下窗口
這個窗口就是集群的配置窗口,詳細的說明請查看redhat的官方文檔
有一個說明的就是中間的那個滑動條,就是配置服務器探測等待15秒,我們不能設的太小,這里我們就默認使用15秒
在clumembd這個窗口里選中Enable Broadcast Heartbeating然后點確定,這時候會彈出一個窗口提示,因為我們配置的就是雙節(jié)點的HA,所以不
用管它,直接點確定然后在cluster configuration選擇保存后退出此窗口
在菜單欄 群集啟動本地群集守護進程,稍等一會兒,就會出現(xiàn)以下狀態(tài)
這里就顯示在linux1上的cluster配置成功
然后我們就要配置linux2了,配置linux2其實很簡單,將linux1系統(tǒng)下/etc/cluster.xml文件COPY到linux2的/etc/目錄下就可以了
(注:cluster.xml是在安裝完兩個軟件包的時候不會產(chǎn)生,它是在第一次運行redhat-config-cluster命令的時候產(chǎn)生的,和AS2.1里的cluster.conf儲存內(nèi)容相同,只不過換了格式而已。這就是集群主要的配置文件,一定要確保集群上每個節(jié)點的此文件都是相同的,另外在redhat的官方文檔上強烈警告用戶:不要去手動的修改這個xml文件,)
將此文件copy上linux2以后,在linux2命令行里執(zhí)行
#service clumanager start
系統(tǒng)顯示執(zhí)行成功,再稍等一會兒,你就會發(fā)現(xiàn)在linux1上出現(xiàn)了變化,如下圖
啟動關閉集群服務的命令是service clumanager start | stop
(注:如果你在配置完成以后不想用圖形界面監(jiān)控節(jié)點運行,在shell里運行
#clustat –i 10 / / 狀態(tài)監(jiān)控,每10秒中刷新一次
出現(xiàn)如下結果
Cluster Status - test_cluster 13:57:22
Cluster Quorum Incarnation #1
Shared State: Shared Raw Device Driver v1.2
Member Status
------------------ ----------
10.0.0.155 Active <-- You are here
10.0.0.156 Active
Service Status Owner (Last) Last Transition Chk Restarts
-------------- -------- ---------------- --------------- --- --------
這樣,一個沒有包含任何服務的“裸”的集群系統(tǒng)就配置成功了,因為它沒有包含任何應用,也沒有什么意義,下一步我們就在上面配置一個大家最常用的http服務來測試一下
四、舉例說明:配置HTTP Server的HA服務
1.給http服務增加共享磁盤
磁盤上將存儲兩個系統(tǒng)上apache共用的程序文件,也就是說,把apache的DocumnetRoot放到這個共享磁盤上,創(chuàng)建方法同創(chuàng)建裸設備時一樣,請注意,這個共享磁盤的作用不同于上面的裸設備
2.創(chuàng)建共享磁盤加載點,配置兩臺機器上的http服務
啟動兩臺機器,我這里新添加硬盤為sdc,我以ext3格式將其格式化,在每個機器的根目錄下創(chuàng)建文件夾www,為apache的web目錄,同時將創(chuàng)建的sdc1分區(qū)加載到/www目錄下
#mkdir /www
#mount /dev/sdc1 /www //這一步只在linux1上進行就行
然后安裝apache,這就不用多說了吧,指出一點是,兩臺機器上的apache安裝必須完全一樣,包括配置文件,安裝完成后,修改httpd.conf,將其根目錄指向/www,我這里是用的是AS3.0自帶的apache2.0的RPM包,
在linux1上,進入/www目錄,在此目錄下保存一個index.html作測試使用
這樣,兩臺機器上的http服務就完全配置完成
3.配置基于此集群的http服務
在linux1的xwindows,啟動集群配置工具(參看上),增加名為httpd的服務如圖點菜單欄"新建"服務名為”httpd”,檢測時間間隔設置為4秒,httpd服務的啟動腳本就是apache的啟動腳本,我這里使用的是rpm包默認安裝的腳本 /etc/rc.d/init.d/httpd
點"確定",就增加了一個服務如下圖所示
如上圖所示,選中httpd這個service,單擊菜單欄的”Add Child”,出現(xiàn)如下圖
先給httpd服務增加共享設備Add Device,設備點為我們創(chuàng)建的sdc1,加載點為/www,格式為ext3,模式為”rw”讀寫模式,點確定,在給此服務添加一個IP地址,這個IP 就是客戶瀏覽器訪問的IP,我們設置為10.0.0.157,掩碼同網(wǎng)絡設置,這里設置為255.0.0.0,廣播地址設置為10.0.0.255
這樣就完全添加成功了,如下圖
保存設置,回到集群監(jiān)控狀態(tài)
以上所有操作均是在linux1上進行,現(xiàn)在為保證linux1和linux2集群配置相同,將linux1的/etc/cluster.xml復制到linux2的/etc/cluster.xm
l,同時啟動兩臺機器上的集群服務,再次查看監(jiān)控狀態(tài)圖,就發(fā)現(xiàn)有新的服務添加了,點擊上面的"啟用"及"運行"此服務,HTTP服務就開始運行了
這樣,整個集群下的http服務就配置完成,并開始運行了
五、對配置好的服務進行簡單的測試
1.基本功能的測試
在win的機器上IE里輸入10.0.0.157,你就可以看到你準備在/www目錄下的測試頁
2.故障測試 任意的關閉掉其中一臺機器,你就會發(fā)現(xiàn)10.0.0.157依然可以訪問,你用ssh工具去連接這個IP地址,就會發(fā)現(xiàn)你連接的就是現(xiàn)在正在運行的機器了。
3.手動的去關閉apache服務,集群軟件依然會將apache服務啟動起來,也就是說:此時的服務由集群軟件控制,而不是人為去控制了,除非你將clumanger服務停掉。
六、后記
使用AS3.0的集群軟件,配置還是相當靈活的,在其官方文檔上,就舉例說明了如何里用這個軟件來配置Oracle、MySQL、Samba、NFS、 HTTP等多種服務,我也正在準備去配置一下Oracle的HA服務。由于本人水平有限,本文里肯定有不少錯誤,其實有的地方我也是一知半解,有錯誤的地方請大家指出,最近無事,我一直在研究集群、負載均衡這方面的東西,下一步就是作研究一下lvs了,對此感興趣的朋友可以一起來研究研究,Email: xushli@163.net。[!--empirenews.page--]
在CU里混了兩年多了,第一次認真的寫篇東西,真是慚啊。。。。。。。。
轉載時請保留作者的個人信息,謝謝[/quote]
------------------------------------------------------------------------------
此篇文章于前日寫的那篇文章相對應,其實在console下redhat也提供了一組強大
的配置命令,其中最主要的就是redhat-config-cluster-cmd這個命令,此外還有
clusvcadm,clushutdown等多個命令,下面我們就對照上一篇文章用控制臺下的命令將
配置重新做一邊.
1、列出當前集群名字
redhat-config-cluster-cmd --cluster
2、設置當前集群名字為“test_cluster”
redhat-config-cluster-cmd --cluster --name='test_cluster'
3、顯示當前裸設備狀態(tài)
redhat-config-cluster-cmd –sharedstate
4、添加一個集群節(jié)點,名字為“10.0.0.155”
redhat-config-cluster-cmd --add_member --name=10.0.0.155
5、修改一個節(jié)點名字由member2到member3
redhat-config-cluster-cmd --member=member2 --name=member3
6、刪除一個名為member3的節(jié)點
redhat-config-cluster-cmd --member=member3 --del_member
7、列出當前集群內(nèi)的服務
redhat-config-cluster-cmd –services
8、添加一個名為httpd的服務
redhat-config-cluster-cmd --add_service --name=httpd
9、列出名為httpd的這個服務下的子節(jié)點
redhat-config-cluster-cmd --service=httpd
10、設置httpd服務的相關信息,檢測時間,啟動腳本等等
redhat-config-cluster-cmd --service=httpd \
--checkinterval=15 \
--userscript=/etc/rc.d/init.d/httpd
11、刪除名為httpd的集群服務
redhat-config-cluster-cmd --service=httpd \
--del_service
12、列出httpd服務的ip地址
redhat-config-cluster-cmd --service=httpd \
--service_ipaddresses
13、設置httpd的對外服務IP地址為10.0.0.157
redhat-config-cluster-cmd --service=httpd \
--add_service_ipaddress \
--ipaddress=10.0.0.157
14、設置對方服務ip的掩碼地址及廣播地址
redhat-config-cluster-cmd --service=httpd \
--service_ipaddress=10.0.0.157 \
--netmask=255.0.0.0 \
--broadcast=10.0.0.255
15、刪除httpd服務的10.0.0.157的這個IP地址
redhat-config-cluster-cmd --service=httpd \
--service_ipaddress=10.0.0.157 \
--del_service_ipaddress
16、列出httpd服務的設備
redhat-config-cluster-cmd --service=httpd \
--devices
17、給httpd服務添加共享磁盤sdc1
redhat-config-cluster-cmd --service=httpd \
--add_device \
--name=/dev/sdc1
18、設置共享磁盤的參數(shù)
redhat-config-cluster-cmd --service=httpd \
--device=/dev/sdc1 \
--mount \
--mountpoint=/www \
--fstype=ext3 \
--options=rw \
19、啟用10.0.0.155節(jié)點上的httpd服務
clusvcadm -e httpd -m 10.0.0.155
20、禁用10.0.0.155節(jié)點上的httpd服務
clusvcadm -d httpd -m 10.0.0.155
21、停止10.0.0.155節(jié)點上的httpd服務
clusvcadm -s httpd -m 10.0.0.155
更多命令請在控制臺執(zhí)行以下命令
#man redhat-config-cluster-cmd