Heartbeat+Ldirectord+LVS+FreeNas實現HA和LB羣集

heartbeat的四個主要層次:

1messaging layer 用來實現HA羣集中成員存活情況的探測

2ccm 成員管理,維護HA成員的一致性

3crm 羣集資源管理,用來聲明要接管的資源

4resources agent 資源代理,控制要代理的一些服務


ldirectord 用來提供heartbeatLVS之間的結合和對後方LB羣集中Server的健康探測


LVS Linux虛擬服務,用來管控後方LB羣集中的成員,實現客戶端服務請求的定向


FreeNas 提供網絡附加存儲服務,保持LB羣集中所提供服務的數據一致性


大致思路:

LVS將其權力移交至ldirectord服務,而ldirectord實際上由heartbeat掌控,後方LB羣集成員的健康探測也由ldirectord服務完成。


安裝步驟:

LVSàldirectordàheartbeatà安裝配置FreeNasà配置LB羣集中的Server


拓撲:

130526615.jpg

步驟:(Director1-->Director2-->FreeNas-->Server1-->Server2-->測試)

Director1

[root@Director1 ~]# vim /etc/hosts

添加兩行解析記錄:

192.168.2.1 Director1.a.com

192.168.2.2 Director2.a.com


爲了便於安裝軟件包,使用本地yum

[root@Director1 ~]# vim/etc/yum.repos.d/rhel-debuginfo.repo

1 [rhel-Server]

2 name=Red Hat Enterprise Linux Server

3 baseurl=file:///mnt/cdrom/Server

4 enabled=1

5 gpgcheck=1

6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

7 [rhel-Cluster]

8 name=Red Hat Enterprise Linux Cluster

9 baseurl=file:///mnt/cdrom/Cluster

10 enabled=1

11 gpgcheck=1

12 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release


掛載光盤

[root@Director1 ~]# mkdir /mnt/cdrom

[root@Director1 ~]# mount /dev/cdrom/mnt/cdrom/

mount: block device /dev/cdrom iswrite-protected, mounting read-only


安裝ipvsadm

[root@Director1 ~]# yum install ipvsadm –y


確保ipvsadm服務關閉並且不隨系統啓動自啓動

[root@Director1 ~]# service ipvsadm stop

Clearing the current IPVS table: [ OK ]

[root@Director1 ~]# chkconfig ipvsadm off


上傳安裝ldirectordheartbeat所需的軟件包

114846602.jpg


安裝所有軟件包

[root@Director1 heartbeat]# yumlocalinstall *.rpm --nogpgcheck –y


設置heartbeat接管ldirectord服務

拷貝幾個需要的配置文件

[root@Director1 heartbeat]# cd/usr/share/doc/heartbeat-2.1.4/

[root@Director1 heartbeat-2.1.4]#cp ha.cf haresources authkeys /etc/ha.d/

[root@Director1 heartbeat-2.1.4]#cd /etc/ha.d/


編輯ha.cf文件來聲明HA羣集的成員以及心跳探測的方法

[root@Director1 ha.d]# vim ha.cf

91 bcast eth1 # Linux /////eth1口發送廣播來進行Director之間的心跳探測


聲明HA羣集內的成員

211 node Director1.a.com

212 node Director2.a.com


設置Director加入HA羣集的驗證方式

[root@Director1 ha.d]# chmod 600 authkeys

[root@Director1 ha.d]# vim authkeys

23 auth 3 /////使用第三種驗證方式

24#1 crc

25#2 sha1 HI!

26 3 md5 Director /////啓用這種驗證方式


[root@Director1 ha.d]# vim haresources /////設置heartbeat的資源清單

45 Director1.a.com 192.168.2.100/24/eth0 ldirectord::ldirectord.cf /////使Director1成爲主Director


[root@Director1 ha.d]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf ./

設置LVS移交權力至ldirectord服務

[root@Director1 ha.d]# vim ldirectord.cf

21 quiescent=no /////不使用靜默,探測不到後方Server就把Server踢出ipvsadm的定向規則

22

23 #Sample for an http virtual service

24 virtual=192.168.2.100:80

25 real=192.168.2.3:80 gate

26 real=192.168.2.4:80 gate

27 service=http

28 request=".test.html" /////後方Server上的探測頁面,ldirectord探測不到該頁面即視爲Server失效

29 receive="ok" /////探測頁面的內容

30 #virtualhost=some.domain.com.au

31 scheduler=rr /////LVS選擇的算法

32 #persistent=600

33 #netmask=255.255.255.255

34 #protocol=tcp

35 #checktype=negotiate

36 #checkport=80

37 #request="index.html"

38 #receive="Test Page"



確保ldirectord服務關閉並且不隨系統啓動自啓動

[root@Director1 ha.d]# service ldirectord stop

Stopping ldirectord... success

[root@Director1 ha.d]# chkconfig ldirectord off


啓動heartbeat服務並設置其隨系統啓動而自啓動

[root@Director1 ha.d]# service heartbeat start

Starting High-Availability services:

2013/10/08_20:40:27 INFO: Resource isstopped

[ OK ]

[root@Director1 ha.d]# chkconfig heartbeat on



Director2

[root@Director2 ~]# vim /etc/hosts

添加兩行解析記錄:

192.168.2.1 Director1.a.com

192.168.2.2 Director2.a.com


爲了便於安裝軟件包,使用本地yum

[root@Director2 ~]# vim/etc/yum.repos.d/rhel-debuginfo.repo

1 [rhel-Server]

2 name=Red Hat Enterprise Linux Server

3 baseurl=file:///mnt/cdrom/Server

4 enabled=1

5 gpgcheck=1

6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

7 [rhel-Cluster]

8 name=Red Hat Enterprise Linux Cluster

9 baseurl=file:///mnt/cdrom/Cluster

10 enabled=1

11 gpgcheck=1

12 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release


掛載光盤

[root@Director2 ~]# mkdir /mnt/cdrom

[root@Director2 ~]# mount /dev/cdrom/mnt/cdrom/

mount: block device /dev/cdrom iswrite-protected, mounting read-only


安裝ipvsadm

[root@Director2 ~]# yum install ipvsadm –y


確保ipvsadm服務關閉並且不隨系統啓動自啓動

[root@Director2 ~]# service ipvsadm stop

Clearing the current IPVS table: [ OK ]

[root@Director2 ~]# chkconfig ipvsadm off


上傳安裝ldirectordheartbeat所需的軟件包

115907958.jpg


安裝所有軟件包

[root@Director2 heartbeat]# yumlocalinstall *.rpm --nogpgcheck –y


設置heartbeat接管ldirectord服務並且將LVS權力移交至ldirectord服務

拷貝幾個需要的配置文件

Director1

[root@Director1 ha.d]# scp ha.cf haresources authkeys ldirectord.cfDirector2.a.com:/etc/ha.d


確保ldirectord服務關閉並且不隨系統啓動自啓動

[root@Director2 ~]# service ldirectord stop

Stopping ldirectord... success

[root@Director2 ~]# chkconfig ldirectordoff


啓動heartbeat服務並設置其隨系統啓動而自啓動

[root@Director2 ~]# service heartbeat start

Starting High-Availability services:

2013/10/08_20:41:17 INFO: Resource isstopped

[ OK ]

[root@Director2 ~]# chkconfig heartbeat on



FreeNas

安裝FreeNas並設置共享目錄

120543191.jpg

啓動虛擬機

120552461.jpg

在這裏要注意,安裝FreeNas系統的硬盤不能作爲數據存儲盤

120559177.jpg

120603204.jpg

120609329.jpg

120613261.jpg

此時取出系統鏡像

下面爲系統成功啓動後的界面

120626981.jpg

120632895.jpg

可以登錄web界面進行管理了

120650391.jpg

120701133.jpg

將第二塊,大小爲10G的盤作爲數據存儲盤

120719334.jpg

120738269.jpg

開啓NFS服務,並將剛纔設置好的盤共享出來

120759318.jpg

120809182.jpg

最後在共享出來的目錄中創建兩個文件,一個站點的默認頁面,一個ldirectord的探測頁面,這個目錄在後面的服務器上要掛載到web站點的主目錄

120810440.jpg



Server1

設置參數使Server1不宣告自己的IP

[root@Server1 ~]# echo"net.ipv4.conf.all.arp_announce = 2" >>/etc/sysctl.conf

[root@Server1 ~]# echo"net.ipv4.conf.all.arp_ignore = 1" >>/etc/sysctl.conf

[root@Server1 ~]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route =0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 4294967295

kernel.shmall = 268435456

net.ipv4.conf.all.arp_announce= 2

net.ipv4.conf.all.arp_ignore= 1


要在lo:0接口設置VIP,保證Server能與Director通信即可,不需要將網關指向Director

[root@Server1 ~]# setup

121616695.jpg

121618657.jpg

121624411.jpg

121629649.jpg

121632502.jpg

要注意子網掩碼爲“255.255.255.255”

[root@Server1 ~]# service network restart


安裝Apache

[root@Server1 ~]# mkdir /mnt/cdrom

[root@Server1 ~]# mount /dev/cdrom/mnt/cdrom/

mount: block device /dev/cdrom iswrite-protected, mounting read-only

[root@Server1 ~]# rpm -ivh/mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm

warning: /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm:Header V3 DSA signature: NOKEY, key ID 37017186

Preparing... ########################################### [100%]

1:httpd ########################################### [100%]

[root@Server1 ~]# service httpd start

Starting httpd: [ OK ]

[root@Server1 ~]# chkconfig httpd on


掛載後方FreeNas共享的目錄

[root@Server1 ~]# showmount -e 192.168.3.3

Export list for 192.168.3.3:

/mnt/web (everyone)

[root@Server1 ~]# mount192.168.3.3:/mnt/web /var/www/html/ /////臨時掛載


實現永久掛載

[root@Server1 ~]# vim /etc/fstab

192.168.3.3:/mnt/web /var/www/html nfs defaults,soft,intr 0 0 /////重啓系統後生效


Server2上的操作與Server1相同,不再列出



測試:

正常狀態下:

121841215.jpg

121844392.jpg

121848765.jpg


模擬Director1成爲備份設備:

[root@Director1 ~]# cd /usr/lib/heartbeat

[root@Director1 heartbeat]# ./hb_standby

2013/10/09_11:03:42 Going standby [all].

121940720.jpg

121942318.jpg


模擬Dirctor1恢復正常:

[root@Director1 heartbeat]# ./hb_takeover

122025259.jpg

122034698.jpg



模擬Server1失效:

122037572.jpg

122042298.jpg

122312742.jpg


模擬Server1恢復正常:

122312155.jpg

122315979.jpg


這樣就實現了高可用性和負載均衡羣集。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章