引用: PDF文件請到我的BLOG裡下載 七月飛雪的個人BLOG 作者:七月飛雪 Email:
[email protected] 2004年8月2日 引用: 最後修改於2004-8-4,將console下的配置命令已經補充上來....請大家參考 此篇文章參考了chinaunix論壇rdd兄弟文章 http://www.chinaunix.net/jh
引用:PDF文件請到我的BLOG裡下載
七月飛雪的個人BLOG
作者:七月飛雪 Email:[email protected]
2004年8月2日
引用:最後修改於2004-8-4,將console下的配置命令已經補充上來....請大家參考
此篇文章參考了chinaunix論壇rdd兄弟文章http://www.chinaunix.net/jh/4/325828.html(Vmware下RedHat AS2.1集群配置StepbyStep)的部分內容,另外參考了redhat官方網站上說明文檔《Red Hat Cluster Suite Configuring and Managing a luster》,較之AS2.1的HA配置,AS3.0上的配置更加人性化,不過較之AS2.1的配置也有了不少不一樣的地方,這也是我沒能按rdd兄弟的文章配置成功的原因,網絡上又幾乎沒有關於redhat AS3.0HA配置中文資料,連E文的很少,我找來找去只找到了redhat官方網站上的配置說明
―――――――――――――――――――――――――――――――――――――――
實施系統軟硬件環境
硬件:p4 2.4G,80G,512M DDR
宿主機系統:win2000pro sp4
虛擬機軟件:Vmware GSX Server 3.1
安裝Vmware GSX Server 3.1和Redhat AS3.0的基本系統
1.安裝Vmware GSX Server3.1
相信大家都安裝過workstation,過程都差不多,這裡就不多廢話了,有一點要提醒大家注意的是,VMware GSX Server2.5無法打開Vmware workstation4.52虛擬出來的系統,GSX Server2.5比4.52出來的要早,所以。。。。。。。
2.安裝Redhat AS3.0
切記安裝上xwindows桌面系統,設置此系統hostname為linux1,ip為10.0.0.155
3.COPY並配置另一套AS3.0系統將安裝的第一套系統的文件復制到另一個文件夾,用編輯器打開rhel3.vmx文件修改displayName?=?"Linux1"到"Linux2"
然後修改此系統的虛擬硬件配置,將網卡刪除如下圖所示,進行此步的原因是因為從第一套系統COPY過來的文件如果同時運行,兩個系統的MAC地址會發生沖突由於將網卡刪除,所以必須刪除後啟動第二套系統,啟動過程中kudzu進程會提示系統有多余的配置文件(就是已經被刪除網卡的配置文件),選擇將多余的配置文件刪除,然後再關閉linux2系統,重新給linux2添一塊網卡。再啟動linux2
啟動linux2,啟動過程中,由於重新添加了網卡,所以系統檢測到了它,再重新配置網卡,設置linux2 IP地址為10.0.0.156,其它同linux1。(注:這樣有人可能會覺得麻煩,不過網卡MAC地址沖突,這也是沒辦法的事,誰讓咱們偷懶不想再重裝一套系統呢)
這時候檢查以下各文件,修改主機名,網絡配置文件
#vi?/etc/sysconfig/network
將HOSTNAME=linux1改為HOSTNAME=linux2
#vi?/etc/hosts
將10.0.0.155 linux1修改為10.0.0.156 linux2
(注:有些朋友可能會問,怎麼不直接把hosts文件裡把linux1,心跳地址都寫進去,其實我現在這麼做是為了讓文檔更清晰些,到下一步的時候再添加這些,雖然稍微麻煩點,但是可以避免一些朋友看不明白)
這樣兩套完整的AS3.0的系統就配置成功,進入第二階段
二、使用Vmware虛擬出HA必需硬件設備,並進行配置
1.給兩個系統各虛擬一個新的網卡
關掉兩個系統,給兩系統各一個增加以網橋方式工作的網卡,方法與第一圖類似
2.創建共享磁盤
給HA系統創建共享磁盤sdb,大小為500M(自定義),如下圖所示
先打開linux1系統的設置,創建磁盤,磁盤文件名為,share.vmdk 選中Allocate all disk space now這一選項
建議將新加磁盤的裝入點設為scsi 1:0,如下圖所示,這就是系統的裸設備
然後打開linux2的設置,同樣給linux2添加共享磁盤,不過這次選擇已經存在的磁盤,使用的共享磁盤就是剛才為linux1創建的那個磁盤,如下圖所示
同樣在Configuration?editor?裡面修改共享磁盤的”Vitual?disk?node”為scsi?1:0
這樣,就給兩個系統各創建了一個新網卡,又創建了一個共享磁盤。由於系統啟動的時候會鎖定磁盤,所以當啟動linux1後共享磁盤被鎖定了,linux2就起不來了,因此必須做一下設置,用編輯器打開兩個Vmware文件夾的rhel3.vmx文件,最後增加一行:
Disk.locking?=?false
這樣硬件就配置好了
3.配置新添加的網卡
啟動linux1系統,系統在啟動時候會檢測到新添加的網卡,選擇配置,將第二塊網卡的IP設置為192.168.123.1,其它默認
修改linux1系統的/etc/hosts文件,改後內容如下
10.0.0.155 linux1
192.168.123.1 linux1
10.0.0.156 linux2
192.168.123.2 linux2
同時啟動linux2系統,設置方法同linux1
4.配置共享磁盤
在linux1在shell裡運行
#fdisk /dev/sdb //注使用parted也可以
將添加的共享磁盤,分為兩個區:sdb1和sdb2,各250M大小
在兩台服務器上分別編輯/etc/sysconfig/rawdevices文件,將分區綁定到裸設備。
#vi?/etc/sysconfig/rawdevices
加入
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2?
重啟服務
#service?rawdevices?restart
啟動完成後執行
#raw –qa,會顯示以下內容
/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選項將磁盤區塊設置為4K,過小的區塊會導致磁盤檢查的時候耗費過多的時間
然後在linux2裡修改/etc/sysconfig/rawdevices同上,然後重新啟動rawdevices服務,raw –qa檢查系統
至此,硬件准備工作完成
三、安裝並配置基本的HA系統
在這裡我們只將AS3.0自帶的CLUSTER服務配置好,涉及到具體的http,ftp,mysql,oracle的HA服務會在下一部分介紹
安裝確認系統內安裝了AS3.0的HA軟件包
我們在這裡要用到的軟件包主要有兩個,clumanager和redhat-config-cluster
請用rpm –q 命令檢查系統是否安裝這兩個軟件包,如果沒有安裝可以通過以下方法安裝
使用ISO或光盤,AS3.0共有八張光盤,我們平時常用的只有前四張,另外有四張擴展光盤,其中擴展光盤的第三張是集群軟件,還包括了IPVS
等軟件,從光盤上安裝,如下圖或者通過網絡上下載到這兩個軟件包進行單獨安裝
rpm --Uvh clumanager-<version>.<arch>.rpm
rpm --Uvh redhat-config-cluster-<version>.noarch.rpm
注:網絡上比較多的是src軟件包,下載下來以後得使用rpmbuild命令進行重新編譯,然後在安裝
開始基本的HA配置
在linux1系統上,啟動xwindows,我這裡是gnome,開始運行配置工具
選擇左下角圖標 => 系統設置 =>服務器設置 => Cluster(或者在命令行裡運行#redhat-config-cluster)
出現以下畫面(圖裡左上角亂碼是因為我用的是遠程XWINDOWS,設置有問題)
下一步操作,點菜單欄裡的群集->配置
出現下圖所示
在Cluster Name處可以更改你設置集群的名字,在這裡我設置為test_cluster
然後我們開始添加集群內的成員,點菜單欄->新建 如下圖所示
(注:此時保證列表處選中Members,才可以出現下面內容)
將兩台機器Ip都填寫進去,如下圖
在這裡選中菜單欄裡的cluster->shared state,可以查看裸設備設置,如下圖
點擊確定繼續
然後打開菜單欄clusterdaemon properties出現以下窗口
這個窗口就是集群的配置窗口,詳細的說明請查看redhat的官方文檔
有一個說明的就是中間的那個滑動條,就是配置服務器探測等待15秒,我們不能設的太小,這裡我們就默認使用15秒
在clumembd這個窗口裡選中Enable Broadcast Heartbeating然後點確定,這時候會彈出一個窗口提示,因為我們配置的就是雙節點的HA,所以不
用管它,直接點確定然後在cluster configuration選擇保存後退出此窗口
在菜單欄 群集啟動本地群集守護進程,稍等一會兒,就會出現以下狀態
這裡就顯示在linux1上的cluster配置成功
然後我們就要配置linux2了,配置linux2其實很簡單,將linux1系統下/etc/cluster.xml文件COPY到linux2的/etc/目錄下就可以了
(注:cluster.xml是在安裝完兩個軟件包的時候不會產生,它是在第一次運行redhat-config-cluster命令的時候產生的,和AS2.1裡的cluster.conf儲存內容相同,只不過換了格式而已。這就是集群主要的配置文件,一定要確保集群上每個節點的此文件都是相同的,另外在redhat的官方文檔上強烈警告用戶:不要去手動的修改這個xml文件,)
將此文件copy上linux2以後,在linux2命令行裡執行
#service clumanager start
系統顯示執行成功,再稍等一會兒,你就會發現在linux1上出現了變化,如下圖
啟動關閉集群服務的命令是service clumanager start | stop
(注:如果你在配置完成以後不想用圖形界面監控節點運行,在shell裡運行
#clustat –i 10 / / 狀態監控,每10秒中刷新一次
出現如下結果
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
-------------- -------- ---------------- --------------- --- --------
這樣,一個沒有包含任何服務的“裸”的集群系統就配置成功了,因為它沒有包含任何應用,也沒有什麼意義,下一步我們就在上面配置一個大家最常用的http服務來測試一下
四、舉例說明:配置HTTP Server的HA服務
1.給http服務增加共享磁盤
磁盤上將存儲兩個系統上apache共用的程序文件,也就是說,把apache的DocumnetRoot放到這個共享磁盤上,創建方法同創建裸設備時一樣,請注意,這個共享磁盤的作用不同於上面的裸設備
2.創建共享磁盤加載點,配置兩台機器上的http服務
啟動兩台機器,我這裡新添加硬盤為sdc,我以ext3格式將其格式化,在每個機器的根目錄下創建文件夾www,為apache的web目錄,同時將創建的sdc1分區加載到/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”,出現如下圖
先給httpd服務增加共享設備Add Device,設備點為我們創建的sdc1,加載點為/www,格式為ext3,模式為”rw”讀寫模式,點確定,在給此服務添加一個IP地址,這個IP就是客戶浏覽器訪問的IP,我們設置為10.0.0.157,掩碼同網絡設置,這裡設置為255.0.0.0,廣播地址設置為10.0.0.255
這樣就完全添加成功了,如下圖
保存設置,回到集群監控狀態
以上所有操作均是在linux1上進行,現在為保證linux1和linux2集群配置相同,將linux1的/etc/cluster.xml復制到linux2的/etc/cluster.xm
l,同時啟動兩台機器上的集群服務,再次查看監控狀態圖,就發現有新的服務添加了,點擊上面的"啟用"及"運行"此服務,HTTP服務就開始運行了
這樣,整個集群下的http服務就配置完成,並開始運行了
五、對配置好的服務進行簡單的測試
1.基本功能的測試
在win的機器上IE裡輸入10.0.0.157,你就可以看到你准備在/www目錄下的測試頁
2.故障測試 任意的關閉掉其中一台機器,你就會發現10.0.0.157依然可以訪問,你用ssh工具去連接這個IP地址,就會發現你連接的就是現在正在運行的機器了。
3.手動的去關閉apache服務,集群軟件依然會將apache服務啟動起來,也就是說:此時的服務由集群軟件控制,而不是人為去控制了,除非你將clumanger服務停掉。
六、後記
使用AS3.0的集群軟件,配置還是相當靈活的,在其官方文檔上,就舉例說明了如何裡用這個軟件來配置Oracle、MySQL、Samba、NFS、HTTP等多種服務,我也正在准備去配置一下Oracle的HA服務。由於本人水平有限,本文裡肯定有不少錯誤,其實有的地方我也是一知半解,有錯誤的地方請大家指出,最近無事,我一直在研究集群、負載均衡這方面的東西,下一步就是作研究一下lvs了,對此感興趣的朋友可以一起來研究研究,Email:[email protected]。
在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、顯示當前裸設備狀態
redhat-config-cluster-cmd –sharedstate
4、添加一個集群節點,名字為“10.0.0.155”
redhat-config-cluster-cmd --add_member --name=10.0.0.155
5、修改一個節點名字由member2到member3
redhat-config-cluster-cmd --member=member2 --name=member3
6、刪除一個名為member3的節點
redhat-config-cluster-cmd --member=member3 --del_member
7、列出當前集群內的服務
redhat-config-cluster-cmd –services
8、添加一個名為httpd的服務
redhat-config-cluster-cmd --add_service --name=httpd
9、列出名為httpd的這個服務下的子節點
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、設置共享磁盤的參數
redhat-config-cluster-cmd --service=httpd \
--device=/dev/sdc1 \
--mount \
--mountpoint=/www \
--fstype=ext3 \
--options=rw \
19、啟用10.0.0.155節點上的httpd服務
clusvcadm -e httpd -m 10.0.0.155
20、禁用10.0.0.155節點上的httpd服務
clusvcadm -d httpd -m 10.0.0.155
21、停止10.0.0.155節點上的httpd服務
clusvcadm -s httpd -m 10.0.0.155
更多命令請在控制台執行以下命令
#man redhat-config-cluster-cmd