整合HA和LB來實現高可用的LB集羣

首先簡單的介紹一下這個小拓撲,CIP是客戶端訪問位於RealServer上的web服務,而爲了實現負載均衡,通過LB-DR來實現負載,但是考慮到LB的單點故障,所以使用HA來實現高可用。整體規劃如下所示
一、配置Heartbeat和Directory來實現LB的高可用性的
1、#hostname node1.a.org
#vim /etc/sysconfig/network 修改HOSTNAME=node1.a.org
2、配置/etc/hosts文件,添加如下信息:
10.1.1.1 node1.a.org node1
10.1.1.2 node2.a.org node2
3、配置兩臺LB服務器相互登錄不用密碼的配置:
#ssh-keygen –t rsa  然後一路Enter下去就行了
#ssh-copy-id .ssh/id_rsa.pub [email protected]  然後輸入密碼就行了
4、配置兩個網卡的IP地址
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
##vim /etc/sysconfig/network-scripts/ifcfg-eth1
IP就照圖上的配置進行,配置完成之後重新啓動網絡
#service network restart
5、安裝Heartbeat軟件包
[root@node1 heartbeat]# ls  //列出所需的軟件包
 heartbeat-2.1.4-9.el5.i386.rpm
 heartbeat-devel-2.1.4-9.el5.i386.rpm
 heartbeat-gui-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
使用本地安裝,解除依賴關係
#yum localinstall * --nogpgcheck –y
#cd /usr/share/doc/heartbeat-2.1.4/
#cp ha.cf  haresources  authkeys  /etc/ha.d/   //拷貝配置文件模版到/etc/ha.d下
#cd /etc/ha.d
#vim /etc/ha.d/ha.cf //編輯配置文件
修改如下內容
    keepalive 2    //保持時間
    deadtime 30    //死亡時間
    warntime 10    //警告時間
    initdead 120   //啓動時間
    udpport 694    //使用udp的端口
    bcast eth1     //心跳接口
    logfile /var/log/ha-log  //日誌文件
    auto_failback on  //失敗自動退回
    node node1.a.org  //節點對應的主機名,這裏面要寫所有的
    node node2.a.org
    bcast node1.a.org
#vim authkeys
    auth 2
    2 sha1 jlasdlfladddd //這個後面的密碼可以隨意寫,也可以使用自動生成隨機數(#dd if=/dev/urandom bs=512 count=1 |md5sum )的方式來生成,但是節點之間是一樣的
#chmod 400 authkeys  //修改權限
#vim haresources
    node1.a.org ipvsd  //指定主節點和VIP和流動資源,這裏面定義的ipvsd是一個腳本,下面將介紹
#cd /usr/lib/heabeat
     ./ha_propagate //拷貝文件authkeys和ha.cf文件
#cd /etc/ha.d/
#scp haresources node2:/etc/ha.d/
下面是ipvsd腳本
#vim ipvsd
#!/bin/bash
#
# LVS script for VS/DR
#
. /etc/rc.d/init.d/functions
#
VIP=192.168.1.80         //定義一個全局的變量VIP
RIP1=192.168.1.172       //定義RealSever1的ip地址
RIP2=192.168.1.178       // 定義RealSever2的ip地址
PORT=80
#
case "$1" in
start)          
  /sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev eth0:1
# Since this is the Director we must be able to forward packets
  echo 1 > /proc/sys/net/ipv4/ip_forward
# Clear all iptables rules.
  /sbin/iptables -F
# Reset iptables counters.
  /sbin/iptables -Z
# Clear all ipvsadm rules/services.
  /sbin/ipvsadm -C
# Add an IP virtual service for VIP 192.168.0.219 port 80
# In this recipe, we will use the round-robin scheduling method.
# In production, however, you should use a weighted, dynamic scheduling method.
  /sbin/ipvsadm -A -t $VIP:80 -s wlc
# Now direct packets for this VIP to
# the real server IP (RIP) inside the cluster
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 1
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g -w 2
  /bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
# Stop forwarding packets
  echo 0 > /proc/sys/net/ipv4/ip_forward
# Reset ipvsadm
  /sbin/ipvsadm -C
# Bring down the VIP interface
  /sbin/ifconfig eth0:1 down
  /sbin/route del $VIP
 
  /bin/rm -f /var/lock/subsys/ipvsadm
 
  echo "ipvs is stopped..."
;;
status)
  if [ ! -e /var/lock/subsys/ipvsadm ]; then
    echo "ipvsadm is stopped ..."
  else
    echo "ipvs is running ..."
    ipvsadm -L -n
  fi
;;
*)
  echo "Usage: $0 {start|stop|status}"
;;
esac
這個腳本在寫完之後,要賦予執行的權限,並且把他放到/etc/ha.c/resource.d/下
#chmod +x ipvsd
#cp ipvsd /etc/ha.d/resource.d/
OK,HA和LB配置完成!接下來將配置兩個realserver了
 
二、 RealServer1上的配置:
1、配置VIP&&RIP
#ifconfig eth0 192.168.1.172/24  //配置RIP
#ifconfig lo:0  192.168.1.80 broadcast 192.168.1.80 netmask 255.255.255.255 up
#route add –host 192.168.1.80 dev lo:0
2、定義內核參數,防止ARP解析的
#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_igonre
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_igonre
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
3、安裝LAMP服務
#yum install mysql-server php httpd php-mysql php-mbstring
#echo “<h2>Real Server1</h2>” >/var/www/html/index.html
#service httpd start   //啓動服務
 
三、 RealServer2上的配置:
1、配置VIP&&RIP
#ifconfig eth0 192.168.1.178/24  //配置RIP
#ifconfig lo:0  192.168.1.80 broadcast 192.168.1.80 netmask 255.255.255.255 up
#route add –host 192.168.1.80 dev lo:0
2、定義內核參數,防止ARP解析的
#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_igonre
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_igonre
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
3、安裝LAMP服務
#yum install mysql-server php httpd php-mysql php-mbstring
#echo “<h2>Real Server2</h2>” >/var/www/html/index.html
#service httpd start   //啓動服務
當然這個過程也可以使用一個腳本實現。
現在都配置好了,接下來就是啓動HA的Heartbeat服務了:
#/etc/init.d/heartbeat start
#ssh node2 -- '/etc/init.d/heartbeat start'
我這裏都是在一個機器上啓動的,啓動完成之後,接下來就是驗證了
 
四、驗證
在瀏覽器中輸入http://192.168.1.80訪問,可以看到分別顯示兩個RealServer上的網頁,我這裏是有意把兩個網頁做的不一樣,以便區分的,由於我使用的是LB-DR的wlc算法,這個時候會響應用戶兩個頁面,而且權重比值是1:2
現在在Node1上使用ifconfig命令,可以看到一個eth0:1的端口
 
使用#ipvsadm -L -n查看,上面有對應的資源:
而在Node2上就沒有,我這裏就不展示了,下面我把HA的主服務器調成Node2
#cd /usr/lib/heartbeat
[root@node1 heartbeat]#  ./hb_standby
2011/09/11_21:11:46 Going standby [all].
這個是後我們在Node1上同樣使用ifconfig查看,原本的那個接口沒有了,而在Node2上使用ifconfig查看,就能看到上面的接口,這個時候使用#ipvsadm -L -n查看,資源已經從Node1轉到了Node2上了,如圖所示:
實驗結束!!
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章