Heartbeat_ldirector+LB+NFS實作HA及LB、檔案共享
高可用叢集是指一組通過硬體和軟體連接配接起來的獨立計算機,它們在使用者面前表現為一個單一系統,在這樣的一組計算機系統内部的一個或者多個節點停止工作,服務會從故障節點切換到正常工作的節點上運作,不會引起服務中斷,是保證業務連續性的有效解決方案
一個很關鍵的元件叫做heartbeat,heartbeat的工作原理:heartbeat最核心的包括兩個。部分,心跳監測部分和資源接管部分,心跳監測可以通過網絡鍊路和序列槽進行,而且支援備援鍊路,它們之間互相發送封包來告訴對方自己目前的狀态,如果在指定的時間内未收到對方發送的封包,那麼就認為對方失效,這時需啟動資源接管子產品來接管運作在對方主機上的資源或者服務
案例拓撲:
實驗原理:
兩個director實作HA(高可用性)群集
兩個web伺服器實作LB(負載均衡)群集
後方NFS伺服器實作給web伺服器提供共享資源
對外呈現虛拟ip位址:192.168.20.100/24
實驗步驟:
Director配置:
配置yum源:
[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
安裝所需軟體包:
[root@node1 ~]# yum install -y ipvsadm
[root@node1 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpmheartbeat-devel-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm heartbeat-ldirectord-2.1.4-9.el5.i386.rpm --nogpgcheck
拷貝ldirector的配置檔案,用于和heartbeat結合,内含ipvsadm規則:
[root@node1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
[root@node1 ~]# vim /etc/ha.d/ldirectord.cf
虛拟ip:192.168.20.100
Realserver:192.168.20.12和192.168.20.13
後方用于回報資訊的隐藏檔案.test.html,用于director對後方伺服器的監測
不是靜默模式(一旦停止就删除掉規則條目)
生成heartbeat的配置檔案,密碼檔案以及資源檔案
[root@ node1~]# cd /usr/share/doc/heartbeat-2.1.4/
[root@ node1 heartbeat-2.1.4]# cp ha.cf /etc/ha.d/
[root@ node1 heartbeat-2.1.4]# cp authkeys /etc/ha.d/
更改密碼檔案權限
[root@ node1~]# chmod 600 /etc/ha.d/authkeys
[root@ node1 heartbeat-2.1.4]# cp haresources /etc/ha.d/
Heartbeat消息從eth1口廣播出去
[root@node1 ~]# vim /etc/ha.d/ha.cf
兩個director主機的主機名
生成随機MD5加密數
[root@node1 ~]# dd -f=/dev/randombs=512 count=1 |md5sum
[root@node1 ~]# vim /etc/ha.d/authkeys
Node1.a.com這台主機作為主director
[root@node1 ~]# vim /etc/ha.d/haresources
[root@node1 ~]# service heartbeat start
更改hosts檔案為下面拷貝檔案做準備
[root@node1 ~]# vim /etc/hosts
192.168.20.200node1.a.com
192.168.20.201node2.a.com
Director2相關配置和director1相同這裡直接拷貝
[root@node1 ~]# scp /etc/hosts node2.a.com:/etc/hosts
[root@node1 ~]# scp /etc/ha.d/ha.cf node2.a.com:/etc/ha.d/ha.cf
[root@node1 ~]# scp /etc/ha.d/authkeys node2.a.com:/etc/ha.d/authkeys
[root@node1 ~]# scp /etc/ha.d/haresources node2.a.com:/etc/ha.d/haresources
[root@node1 ~]# scp /etc/ha.d/ldirectord.cf node2.a.com:/etc/ha.d/ldirectord.cf
[root@node1 ~]# scp /etc/yum.repos.d/rhel-debuginfo.repo node2.a.com:/etc/yum.repos.d/
[root@node1 ~]# chmod 600 /etc/ha.d/authkeys
[root@node2 ~]# yum install -y ipvsadm
[root@node2 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpmheartbeat-devel-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm heartbeat-ldirectord-2.1.4-9.el5.i386.rpm –nogpgcheck
NFS伺服器配置:
確定伺服器端已經安裝以下有關nfs的軟體包
# rpm -qa |grep nfs
nfs-utils-lib-1.0.8-7.6.el5
nfs-utils-1.0.9-42.el5
檢視rpc工作狀态
# rpcinfo -p
program vers protoport
1000002tcp111portmapper
1000002udp111portmapper
1000241udp653status
1000241tcp656status
1000111udp663rquotad
1000112udp663rquotad
1000111tcp666rquotad
1000112tcp666rquotad
1000032udp2049nfs
1000033udp2049nfs
1000034udp2049nfs
1000211udp38515nlockmgr
1000213udp38515nlockmgr
1000214udp38515nlockmgr
1000032tcp2049nfs
1000033tcp2049nfs
1000034tcp2049nfs
1000211tcp34341nlockmgr
1000213tcp34341nlockmgr
1000214tcp34341nlockmgr
1000051udp677mountd
1000051tcp680mountd
1000052udp677mountd
1000052tcp680mountd
1000053udp677mountd
1000053tcp680mountd
把/usr/local/nginx/html/website作為共享目錄,并修改權限
# chmod 777 /usr/local/nginx/html/website
編輯共享清單資訊
# vim /etc/exports
/usr/local/nginx/html/website192.168.20.0/24(rw,sync)(給192.168.20.0/24網段的使用者對/usr/local/nginx/html/website有讀寫權限)
# exportfs –r(重新整理共享清單)
# servicenfsrestart
建立共享網頁
在/usr/local/nginx/html/website下建立一個隐藏的.test.html用于director對伺服器的監控時回報資訊
# cd /usr/local/nginx/html/website
# echo ‘ok’ .test.html
Web伺服器配置:
Web伺服器上搭建有lamp環境,前面已有詳細介紹
建立挂載目錄
# mkdir /var/www/website
1000241udp675status
1000241tcp678status
檢視伺服器共享清單清單
# showmount -e 192.168.20.10
Export list for 192.168.20.10:
/usr/local/nginx/html/website 192.168.20.0/24
編輯開機腳本,使動态網站開機就能挂載到本地
# vim /etc/fstab
加入下面代碼
192.168.20.10:/usr/local/nginx/html/website /var/www/websitenfsrw,soft,intr00
添加虛拟端口并配置路由,web伺服器回應用戶端時使用虛拟端口
# ifconfig lo:0 192.168.20.100 broadcast 192.168.20.100 netmask 255.255.255.255
# route add -host 192.168.20.100 dev lo:0
更改系統控制檔案,在接收arp請求時不給予回應以防沖突
# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
更改web主站點路徑到挂載目錄
# vim /etc/httpd/httpd.conf
213 DocumentRoot "/var/www/website"
# service httpd restart
stoping httpd......ok
starting apache.......ok
測試:
檢視director1上面的規則:
Director1規則:
把ip資源分給了director1
作為備份的director2此時沒有資源:
把web伺服器down掉一個:
# service httpd stop
通過虛位址通路内部網站:
再次檢視規則已經有一條比對:
再次重新整理浏覽器:(符合rr輪訓的規則)
把director1 down掉,在director2上立馬有規則,得到資源: