heartbeat的四個主要層次:
1、messaging layer 用來實現HA羣集中成員存活情況的探測
2、ccm 成員管理,維護HA成員的一致性
3、crm 羣集資源管理,用來聲明要接管的資源
4、resources agent 資源代理,控制要代理的一些服務
ldirectord 用來提供heartbeat與LVS之間的結合和對後方LB羣集中Server的健康探測
LVS Linux虛擬服務,用來管控後方LB羣集中的成員,實現客戶端服務請求的定向
FreeNas 提供網絡附加存儲服務,保持LB羣集中所提供服務的數據一致性
大致思路:
LVS將其權力移交至ldirectord服務,而ldirectord實際上由heartbeat掌控,後方LB羣集成員的健康探測也由ldirectord服務完成。
安裝步驟:
LVSàldirectordàheartbeatà安裝配置FreeNasà配置LB羣集中的Server
拓撲:
步驟:(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
上傳安裝ldirectord和heartbeat所需的軟件包
安裝所有軟件包
[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
上傳安裝ldirectord和heartbeat所需的軟件包
安裝所有軟件包
[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並設置共享目錄
啓動虛擬機
在這裏要注意,安裝FreeNas系統的硬盤不能作爲數據存儲盤
此時取出系統鏡像
下面爲系統成功啓動後的界面
可以登錄web界面進行管理了
將第二塊,大小爲10G的盤作爲數據存儲盤
開啓NFS服務,並將剛纔設置好的盤共享出來
最後在共享出來的目錄中創建兩個文件,一個站點的默認頁面,一個ldirectord的探測頁面,這個目錄在後面的服務器上要掛載到web站點的主目錄
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
要注意子網掩碼爲“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相同,不再列出
測試:
正常狀態下:
模擬Director1成爲備份設備:
[root@Director1 ~]# cd /usr/lib/heartbeat
[root@Director1 heartbeat]# ./hb_standby
2013/10/09_11:03:42 Going standby [all].
模擬Dirctor1恢復正常:
[root@Director1 heartbeat]# ./hb_takeover
模擬Server1失效:
模擬Server1恢復正常:
這樣就實現了高可用性和負載均衡羣集。