LVS+Heartbeat 實施案例及經驗分享

來源:互聯網
上載者:User

 IT營運專家網                                                       
http://www.linuxtone.org
LVS+Heartbeat 實施案例及經驗分享
作者:NetSeek http://www.linuxtone.org(IT營運專家網|叢集架構|效能調優)

歡迎轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本聲明.
一. 基本介紹
  背景描述
某大型商業網站由於業務量的發展非常迅速,目前的網站架構根本無法緩解使用者訪問
壓力及單點故障。急需一套高可用的負載平衡叢集解決方
案,http://www.linuxTone.org(IT 營運專家網)根據這家商業網站在的狀況,部署了一套負
載均衡及高可用的叢集方案及相關最佳化,項目實施以後該商業網站得 WEB 壓力得到
了很好的解決,訪問速度大幅度提升.以下是相關配置文檔,拿出來與朋友們分享希望
對更多想瞭解 LVS/HA的朋友有協助。
  本文特色
      1.介紹 LVS+Heartbeat 兩種案裝方法
     2.   採用 heartbeat 2.x style 的配置(使用 cib.xml)
     3.   測試日誌分析及相關技巧
     4.   兩個在真實案例中的經驗分享 
 
二.網路拓樸圖及相關描述
 
1.主機名稱: (/etc/hosts)
192.168.1.102 primarylb.linuxtone.org
192.168.1.103 backuplb.linuxtone.org
2.VIP[eth0:0] 192.168.1.106  
  Realserver1 192.168.1.104
  Realserver2 192.168.1.105
3.Heartbeat心跳線
a)使用一根串口直連線纜(serial null modem cable)Heartbeat
  b) eth1:10.0.0.1 10.0.0.2    (交叉線直連 Heartbeat)
 
三.安裝 Heartbeat[yum安裝,編譯安裝]
1.通過 Yum安裝 Heartbeat
#yum install heartbeat-*              //安裝 HA
#yum install heartbeat-ldirectord       //安裝 ldirectord 實現 LVS的高可用性
作者:NetSeek http://www.linuxtone.org(IT營運專家網|叢集架構|效能調優)     MSN:cnseek@msn.com IT營運專家網                                                       
http://www.linuxtone.org
# rpm -qa|grep heartbeat        //查看安裝相關的包
heartbeat-stonith-2.1.3-3.el5.centos
heartbeat-devel-2.1.3-3.el5.centos
heartbeat-pils-2.1.3-3.el5.centos
heartbeat-2.1.3-3.el5.centos
heartbeat-ldirectord-2.1.3-3.el5.centos
heartbeat-gui-2.1.3-3.el5.centos
 
#rpm -q heartbeat –d       //查看 Heartbeat 相關doc 目錄
將相關設定檔拷貝到/etc/ha.d 目錄下
# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d
 
 
2.  編譯安裝Heartbeat
下載相關軟體包:
http://linux-ha.org/DownloadSoftware

http://www.packetfactory.net/libnet/dist/libnet.tar.gz

編譯安裝
#tar -xvzf libnet.tar.gz
#cd libnet
#./configure
#make;make install
 
#groupadd -g 694 haclient
#useradd -u 694 -g haclient hacluster
 
# tar -xvzf heartbeat-2.1.3.tar.gz
# cd heartbeat-2.1.3
# ./ConfigureMe configure  
# make;make install  
 
#cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
#cp ldirectord/ldirectord.cf /etc/ha.d/
 
【注意】
heartbeat 軟體包在 RHEL 或者 CentOS安裝盤中都能找到。所需軟體包: heartbeat、 libnet、
net-snmp、net-snmp-libs、perl-Compress-Zlib、perl- HTML-Parser、perl-HTML-Tagset、
perl-libwww-perl、perl-Mailinuxtoneools、perl- TimeDate、perl-URI、ipvsadm.以上軟體包,
有的在 rhel5光碟片中,有的要在網上搜尋的。
 
 
四.  配置 Heartbeat實現服務高可用性.
作者:NetSeek http://www.linuxtone.org(IT營運專家網|叢集架構|效能調優)     MSN:cnseek@msn.com IT營運專家網                                                       
http://www.linuxtone.org
1.分別配置兩台 HA的主機名稱.
#vi /etc/hosts
192.168.1.102 primarylb.linuxtone.org
192.168.1.103 backuplb.linuxtone.org
 
2. /etc/ha.d/ha.cf  配置介紹
#cd /etc/ha.d
#cat ha.cf|grep -v ^#
logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
baud    19200
serial  /dev/ttyS0      # Linux
#ucast eth2 10.0.0.3
ucast eth0 192.168.1.103
auto_failback on
watchdog /dev/watchdog
crm on
node primarylb.linuxtone.org
node backuplb.linuxtone.org
ping 192.168.1.103
ping_group lbgroup 10.0.0.1 10.0.0.2
ping_group lbgroup 192.168.1.102 192.168.1.103
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
 
3. /etc/ha.d/authkeys
#vi authkeys
auth 1
1 sha1 Hey!
#chmod 600 authkeys
 
4./etc/ha.d/haresources
# cat haresources |grep -v "#"
primarylb.linuxtone.org lvs ldirectord
 
5.  建立軟串連讓 HA自動接管 lvs-dr.sh,ldirectord等資源.
#ln -s /etc/init.d/lvs /etc/ha.d/resource.d/       //etc/init.d/lvs 存放LVS啟動相關指令碼世紀

#ln -s /usr/sbin/ldirectord /etc/ha.d/resource.d
 
作者:NetSeek http://www.linuxtone.org(IT營運專家網|叢集架構|效能調優)     MSN:cnseek@msn.com IT營運專家網                                                       
http://www.linuxtone.org
6.採用 Heartbeat 2.x style,利用 crm 來管理資源.
#/usr/lib/heartbeat/haresources2cib.py  -stout -c /etc/ha.d/ha.cf /etc/ha.d/haresources

將產生的 cib.xml 檔案在/var/lib/heartbeat/crm  目錄
【注意】
關於 crm(Cluster Resource Manager):crm資源配置方法是在新的版本中引入的,如果
想使用該格式來配置資源(ip,服務,共用磁碟等) ,可以參看配置樣本:
http://www.linux-ha.org/v2/Examples/Simple 。 /var/lib/heartbeat/crm/cib.xml 檔案的作用與
/etc/ha.d/haresources相同,是二者擇一的關係。
# cat /dev/null > haresources          //把 haresources 清空,採用 crm來管理資源
 
7. /etc/ha.d/ldirectord.cf 配置
# Global Directives
checktimeout=3
checkinterval=1
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
emailalert="cnseek@gmail.com"
emailalertfreq=3600
emailalertstatus=all
quiescent=no
 
# Sample for an http virtual service
virtual=192.168.1.106:80
 real=192.168.1.104:80 gate
 real=192.168.1.105:80 gate
   #fallback=127.0.0.1:80 gate
 #service=http
 #request="index.html"
 #receive="Test Page"
 #virtualhost=some.domain.com.au
 scheduler=wrr
 persistent=5
 #netmask=255.255.255.255
 protocol=tcp
    checktype=connect
    checkport=80
   #request="index.html"
   #receive="Test Page"
   #virtualhost=www.x.y.z
【注意】
Ldirectord 的作用是監測 Real Server,當 Real Server失效時,把它從 Load Balancer列表
中刪除,恢複時重新添加,在安裝 heartbeat 時已經安裝了 Ldirectord.配置中 quiescent=no
作者:NetSeek http://www.linuxtone.org(IT營運專家網|叢集架構|效能調優)     MSN:cnseek@msn.com IT營運專家網                                                       
http://www.linuxtone.org
設定
實現如果 Realserver機器down 掉以後,立即從 IPVS 列表中刪除,恢複時重新添加.
 
8.啟動 Heartbeat 服務
# /etc/init.d/heartbeat start
 
五.測試 Heartbeat 及日誌分析
1.  測試串口線配置是否正常
串列串連通過兩個節點的串口,使用一根直連線纜將它們串連起來。現在測試串列串連,
如下所示:在 primarylb(接收者)上輸入以下內容:
cat < /dev/ttyS0  
在 backuplb(寄件者)上輸入以下內容:
echo "Serial Connection test! Welcome http://www.linuxtone.org !" > /dev/ttyS0

 
2.  如果主節點需要維護時,可先將其轉移到備份伺服器上
/usr/lib/heartbeat/hb_standby (hb_standby命令把資源強迫到遷移到備份伺服器)
如果主節點要切回來掌管服務:
/usr/lib/heartbeat/hb_takeover
 
3.  拔掉網線,測試在 primary節點的網路斷開後的切換情況
4.  停掉 primary的 heartbeat(/etc/init.d/heartbeat stop) 查看 backup是否能正常接管資源
5. shutdown primary主機,測試是否能夠正常切換,基本上和上面測試 2 差不多。
【注意】
  # tail -f /var/log/messages    //在兩台負載平衡伺服器上注意查看日誌變化來排錯。
 
六.  相關注意事項及參考
    
1.項目實施過程遇到的問題及總結.【經驗分享】
【以下是項目中遇到的兩個問題,提出方便對你有協助】
 a)  假如兩台 VS 之間使用的互備關係,那麼當一台 VS 接管 LVS 服務時,可能會網路
不通,這時因為路由器的 MAC 緩衝表裡無法及時重新整理 MAC.關於 vip 這個地址的 MAC
地址還是替換的 VS 的 MAC,有兩種解決方案,一種是修改新 VS 的 MAC 位址,另一
種是使用 send_arp /arpiing 命令.   以arping 命令為例.
      /sbin/arping -I eth0 -c 3 -s ${vip} ${gateway_ip} > /dev/null 2>&1
例如:
      /sbin/arping -I eth0 -c 3 -s 192.168.1.6 192.168.1.1
 
 b)某台Realserver服務down掉以後如何從IPVS列表自動中刪除恢複時如何自動添加?
配置 ldirectord.conf
  quiescent=no  或  echo 1 > /proc/sys/net/ipv4/vs/expire_nodest_conn
 
2.ha.cf相關注釋
auto_failback設定為 on 時,一旦主節點重新恢複聯機,將從從節點取回所有資源。
Stonith 裝置是一種能夠自動關閉電源來響應軟體命令的裝置
作者:NetSeek http://www.linuxtone.org(IT營運專家網|叢集架構|效能調優)     MSN:cnseek@msn.com IT營運專家網                                                       
http://www.linuxtone.org
Watchdog 在實現上可以是硬體電路也可以是軟體定時器,能夠在系統出現故障時自動重
新啟動系統。
 
3.lvs  狀態查看
操作步驟詳細到命令列層級
查看 LVS的串連情況: ipvsadm -L -n
查看 LVS的輸送量情況: ipvsadm -L -n -rate
查看 LVS的統計資訊: ipvsadm -L -n –stat
即時查看 LVS串連狀態變化: watch ipvsadm –ln
 
 4.  附上 LVS(DR)指令碼
#!/bin/bash
# description: start LVS of DirectorServer
#Written by :NetSeek http://www.linuxtone.org

GW=192.168.1.1
 
# website director vip.
WEB_VIP=192.168.1.106  
WEB_RIP1=192.168.1.104
WEB_RIP2=192.168.1.105
 
 
. /etc/rc.d/init.d/functions
 
logger $0 called with $1
 
case "$1" in
 
start)
        # Clear all iptables rules.
         /sbin/iptables -F
        # Reset iptables counters.
         /sbin/iptables -Z
         # Clear all ipvsadm rules/services.
         /sbin/ipvsadm -C
 
 #set lvs vip for dr
        /sbin/ipvsadm --set 30 5 60
        /sbin/ifconfig eth0:0 $WEB_VIP broadcast $WEB_VIP netmask 255.255.255.255

up
        /sbin/route add -host $WEB_VIP dev eth0:0
                /sbin/ipvsadm -A -t $WEB_VIP:80 -s wrr -p 3
                /sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP1:80 -g -w 1
                /sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP2:80 -g -w 1
作者:NetSeek http://www.linuxtone.org(IT營運專家網|叢集架構|效能調優)     MSN:cnseek@msn.com IT營運專家網                                                       
http://www.linuxtone.org
        touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
        
        # set Arp
                /sbin/arping -I eth0 -c 5 -s $WEB_VIP $GW >/dev/null 2>&1  
       ;;
stop)
        /sbin/ipvsadm -C
        /sbin/ipvsadm -Z
        ifconfig eth0:0 down
        route del $WEB_VIP  >/dev/null 2>&1
        rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
                /sbin/arping -I eth0 -c 5 -s $WEB_VIP $GW
        echo "ipvsadm stoped"
       ;;
 
status)
 
        if [ ! -e /var/lock/subsys/ipvsadm ];then
                echo "ipvsadm is stoped"
                exit 1
        else
                ipvsadm -ln
                echo "..........ipvsadm is OK."
        fi
      ;;
 
*)
        echo "Usage: $0 {start|stop|status}"
        exit 1
esac
 
exit 0
 
5.  關於ldirectord.cf檔案詳解:
http://www.linuxtone.org/thread-1388-1-1.html 
   LVS高可用性方案匯總: http://www.linuxtone.org/thread-1402-1-1.html [推薦]

   LVS負載平衡資料匯總: http://www.linuxtone.org/thread-1191-1-1.html [推薦]

    更多的資料請參考: http://www.linuxtone.org/forum-26-1.html 

 
6.  聯絡我們[如果你遇到問題歡迎聯絡我們]:
   IT營運專家網  http://www.linuxtone.org Mail:
cnseek@gmail.com
 
作者:NetSeek http://www.linuxtone.org(IT營運專家網|叢集架構|效能調優)     MSN:cnseek@msn.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.