實驗拓撲
實驗步驟
一、配置lvs-DR
1、配置RealServer (在這裏以配置node1爲例,node2與node1配置相同)
(1)配置web服務
- 使用yum安裝
- #yum -y install httpd
- #service httpd start
- #echo "node1" > /var/www/html/index.html //添加訪問頁面
- #echo "Test Page" > /var/www/html/.test.html //測試頁面
- #elinks -dump http://192.168.0.11
- node1 //訪問成功
(2)配置參數及VIP
- #echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
- #echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
- #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
- #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
- 配置VIP
- #ifconfig lo:0 172.16.19.1 broadcast 172.16.19.1
- netmask 255.255.255.255 up
- #route add -host 172.16.19.1 dev lo:0 //添加路由
- #ifconfig //查看VIP是否添加成功
2、配置Director
(與RealServer一樣,在此以Dir1爲例配置。Dir2做相同配置即可)
(1)配置VIP
- #ifconfig eth0:0 172.16.19.1 broadcast 172.16.19.1
- netmask 255.255.255.255 up
- #route add -host 172.16.19.1 dev eth0:0
- #echo 1 > /proc/sys/net/ipv4/ip_forward //打開路由轉發
(2)安裝ipvsadm並定義規則
- #yum -y install ipvsadm
- #ipvsadm -A -t 172.16.19.1:80 -s rr
- #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.11 -g
- #ipvsadm -a -t 172.16.19.1:80 -r 192.168.0.66 -g
(3)訪問http://172.16.19.1,查看負載均衡效果
(4)保存規則,關閉服務
- #ipvsadm -S > /etc/sysconfig/ipvsadm
- #service ipvsadm stop
- #chkconfig ipvsadm off
- 停用VIP 因爲VIP也是高可用資源
- #ifconfig eth0:0 down
二、配置Director高可用
在這裏我們使用除了使用heartbeat相關軟件外,還要安裝heartbeat-ldirectord包和它的依賴包perl-MailTools。它相當於heartbeat的一個模塊,它可以管理集羣的虛擬化和資源,同時還可以檢查後端節點健康狀況,非常符合實際需求。
1、安裝前的準備工作
- Dir1與Dir2保證時間同步,可使用date命令
- #vim /etc/hosts //添加如下兩行,做主機名稱解析
- 192.168.0.100 Dir1
- 192.168.0.101 Dir2
- 建立雙機互信以便Dir1遠程啓動Dir2的heartbeat服務
- #ssh-keygen -t rsa //產生私鑰
- #ssh-copy-id -i ./ssh/id_rsa.pub root@Dir2
- #ssh Dir2 'uname -n' //測試ssh
- #scp /etc/hosts Dir2:/etc //Dir1與Dir2的hosts文件保持一致
- 在Dir2上
- #ssh-keygen -t rsa //產生私鑰
- #ssh-copy-id -i ./ssh/id_rsa.pub root@Dir2
- #ssh Dir2 'uname -n' //測試ssh
2、安裝配置軟件
- #yum -y --nogpgpcheck localinstall heartbeat-2.1.4-9.el5.i386.rpm
- heartbeat-pils-2.1.4-10.el5.i386.rpm
- heartbeat-gui-2.1.4-9.el5.i386.rpm
- heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
- heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
- perl-MailTools-1.77-1.el5.noarch.rpm
- #cd /usr/share/doc/heartbeat-2.1.4/
- #cp authkeys ha.cnf haresource /etc/ha.d/
- #cd ..heartbeat-ldirectord-2.1.4/
- #cp ldirectord.cf /etc/ha.d
- #cd /etc/ha.d/
- #vim ha.cf //編輯主配置文件
- initdead 120 //第一次啓動時等待其他節點啓動的時間
- bcast eth0 //心跳信息傳播方式
- auto_failback on //奪回資源是否開啓
- node Dir1 //定義節點
- node Dir2
- ping 172.16.0.1 //當接收不到其他節點的心跳信息時,
- 通過ping前端路由證實不是本節點發生故障
- compression bz2 //定義壓縮方式
- compression_threshold 2 //文件大於2k時才壓縮
- crm on
- #chmod 600 authkeys //必須改變其權限,否則服務無法啓動
- #vim authkeys
- auth 1
- 1 md5 f4ecab5e96446b2986
- //此處的字符串可以使用 dd if=/dev/urandom count=512 bs=1 | md5sum
- 命令生成的隨即數
- #vim ldirectord.cf
- checktimeout=3 //當檢查不到RealServer時的超時時間
- checkintervel=1 //每隔多長時間檢查一個RealServer
- autoreload=yes //當此前配置文件發生改變時會不會自動加載
- logfile="/var/log/ldirectord.log"
- virtual=172.16.19.1:80 //VIP
- real=192.168.0.11:80 gate //定義RealServer
- real=192.168.0.66:80 gate
- fallback=127.0.0.1:80 gate
- service=http //提供的服務
- request=".test.html" //通過此頁面判斷RS是否工作
- receive="Test Page" //頁面返回結果
- #virtualhost=some.domain.com.au //可定義虛擬主機
- scheduler=rr //使用的算法
- protocol=tcp
- checktype=negotiate
- checkport=80
- #scp authkeys ha.cf ldirectord.cf Dir2:/etc/ha.d
- #service ldirectord stop
- #chkconfig ldirector off
- #passwd haclustet //給hacluster用戶添加密碼redhat,在啓動圖形界面時要使用
3、啓動服務,管理資源
- #service heartbeat start
- #ssh node2 '/etc/init.d/heartbeat start'
- #hb_gui & //啓動gui界面
(1)首先添加ldirectord資源右擊'Rescources' ,選擇"Add new items"。點擊"Add Parameter"提交。
(2)添加VIP
此時沒有定義約束,資源以負載均衡的方式定義在了兩個節點上。
(4)定義並列約束
約束定義好後,兩個資源都被定義在了Dir1上。此時訪問,http://172.16.19.1一切正常。
還可以定義順序約束,方法同上不再演示。
三、測試實驗
1、測試Director是否高可用
由上圖可知,此時資源都定義在了Dir1上。現在我們模擬Dir1不能正常工作,查看資源的流轉狀況。
ok。資源順利的轉移到了dir2上。Director高可用成功。
2、Director是否能夠檢查RealServer的健康狀況
我們現有兩個realserver,我們通過iptables來限制192.168.0.66的80端口。
- #iptables -A INPUT -d 192.168.0.66 -p tcp --dport 80 -j DROP
再次訪問http://172.16.19.1。此時會發現訪問頁面只會出現“node1”。使用iptables -F 清除規則後,兩臺RealServer重新恢復負載均衡。現在可以證明Director可以實現檢查後端節點健康狀況的功能。
至此,實驗結束。