heartbeat+lvs

heartbeat+lvs實現高可用負載均衡原理:

兩臺heartbeat(ldirectord)主機構成高可用集羣,同時監管着lvs(負載均衡集羣)整體構成了heartbeat+lvs的高可用負載均衡

實驗環境:CentOS 6.4              

系統架構主要由四臺主機組成,兩臺heartbeat主機作爲lvs和heartbeat,兩臺Real Server主機作爲真實服務器。

實驗準備:

VIP:192.168.1.100

heartbeat:192.168.1.1  192.168.1.2

Real Server:192.168.1.3  192.168.1.4

1.在本地/etc/hosts文件中定義各個節點的解析。

2.關閉selinux和iptables

3.軟件下載:heartbeat-3.0.4-1.el6.x86_64.rpm        heartbeat-devel-3.0.4-1.el6.x86_64.rpm  

ldirectord-3.9.2-1.2.x86_64.rpm                heartbeat-libs-3.0.4-1.el6.x86_64.rpm

實驗步驟:

一、heartbeat安裝及配置:

# yum localinstall *.rpm                                 使用yum方式安裝,能夠解決本地rpm包所需要依賴(前提得需要yum源)

#less /etc/ha.d/README.config 

        ha.cf           Main configuration file                 heartbeat高可用主配置文件
        haresources     Resource configuration file      資源文件
        authkeys        Authentication information        認證文件

# cd /usr/share/doc/heartbeat-3.0.4/

# cp authkeys haresources ha.cf /etc/ha.d/

# vim ha.cf 
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2                指定心跳間隔爲2s
deadtime 30                備用節點在30s後自動接管資源
warntime 10                心跳延遲10s,10s內備用機不接受主節點心跳                    就會發出警告
initdead 60                重啓後恢復網絡的時間(至少deadtime的2倍)
udpport 666                 廣播通信使用的端口
bcast   eth0                 使用廣播() 
auto_failback on               故障轉換 宕掉的服務器重新上線後,替換備用的
watchdog /dev/watchdog             這個得加載一個模塊
node    server66.example.com        主節點和輔助節點
node    server68.example.com
ping 192.168.1.254                      測試連通性,最好是網關

respawn選項是可選的,列出與heartbeat一起啓動和關閉的進程,該進程一般是和heartbeat集成的插件,這些進程遇到故障可以自動重啓。默認使用ipfail
respawn hacluster /usr/lib64/heartbeat/ipfail    檢測和處理網絡故障
#apiauth client-name gid=gidlist uid=uidlist
apiauth ipfail gid=haclient uid=hacluster         ipfail的運行用戶和組

加載watchdog,軟fence監控heartbeat並且重啓

# modprobe softdog

# vi /etc/rc.local                                    設置開機自動加載

    modprobe softdog  

# vim authkeys        認證文件權限必須600
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!

# chmod 600 authkeys

# vim haresources

server68.example.com IPaddr::192.168.1.100/32/eth0 httpd             定義主節點,虛擬ip和監控的服務

要確定主節點的httpd服務啓動了

heartbeat默認可用監控一下目錄的服務:

/etc/init.d/     ;/etc/ha.d/resource.d/    ;/etc/ha.d/rc.d/

heartbeat安裝配置完成,此時可以在另外一臺主機上安裝heartbeat,並且進行相應的配置。(注意,在配置集羣的時候,儘量選擇相同配置的主機,這樣便於以後管理和排錯)

測試heartbeat:

#/etc/init.d/heartbeat start            分別在兩臺heartbeat主機上啓動服務

#tail -f /var/log/message             查看日誌發現server68主機接管VIP資源,此時可以ping同VIP

同時heartbeat服務監控本地httpd服務,發現httpd也會開啓

二、構建lvs負載均衡集羣

在之前兩臺heartbeat主機上進行相同的安裝配置操作(部分參數得指定)

使用lvs負載均衡會使用到三種工作方式(NAT/DR/TNU)和八種調度算法,這裏就做說明。

lvs的配置一般有三種方式:通過ipvsadm命令配置
                                    通過ldirectord(heartbeat插件)來配置
                                    通過紅帽可視化piranha軟件進行配置

通過ipvsadm命令配置lvs:

lvs.sh

#!/bin/bash
function start(){
    ipvsadm -C
    ipvsadm -At 192.168.1.100:80 -s rr              #定義一個VIP,使用輪詢
    ipvsadm -at 192.168.1.100:80 -r 192.168.1.3 -g  #定義rs使用DR模式
    ipvsadm -at 192.168.1.100:80 -r 192.168.1.4 -g
    ipvsadm -S
}
function stop(){
    ipvsadm -C
    ipvsadm -S
}
case $1 in
    "start")
        start;;
    "stop")
        stop;;
    "restart")
        stop
        start;;
     *)
        echo "Usage: $0 start|stop|restart";;
esac

cp lvs.sh /etc/init.d/lvs.sh

vim /etc/ha.d/haresources  添加

server68.example.com 192.168.1.100 lvs.sh

本章將使用ldirectord配置lvs:
ldirectord工作原理:
ldirectord 需要你在真實服務器內啓用apache服務器,並在每臺真實服務器web服務器的根目錄下建立你在配置文件所指定的文件與內容,然後ldirectord 通過循環檢查此文件來確定真實服務器是否存活,如果不存活,則自動將其權重設爲0,以確保後面客戶的連接不會再導向失效的真實服務器,如果真實服務修復上線後,則其又將它的權重設爲以使它能夠繼續爲客端連接提供服務。
ldirectord主要是通過調用ipvsadm來創建ipvs虛擬服務器表。

#yum install ipvs -y
#yum localinstall ldirectord****.rpm
perl-IO-Socket-INET6 ldirectord啓動時需要的包
#/etc/init.d/ldirectord start

使用ldirectord來配置lvs,並將ldirectord交給heartbeat控管:
將lvs交給ldirectord來監控:
注意:heartbeat上安裝ldirectord
      heartbeat上安裝lvs
      主備配置文件一致
#cp -r /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/

#vim /etc/ha.d/ldirectord.cf

virtual=192.168.0.224:80                    定義虛擬資源VIP
        real=192.168.0.103:80 gate        指定後端真實服務器,採用DR調度模式
        real=192.168.0.191:80 gate
        fallback=127.0.0.1:80 gate          當真實服務器宕機,本機自動接管
        service=http
        scheduler=rr                              使用輪詢調度算法
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80

#vim /etc/init.d/ldirectord
    #. /etc/ha.d/shellfuncs      註釋掉

#/etc/init.d/ldirectord start

Real Server需要進行一下配置:

注意:在配置lvs負載均衡時,後端真實服務器需要制定VIP和禁止arp(使用arptables軟件)

#yum install arptables_jf -y
#ifconfig lo:0 192.168.0.224 netmask 255.255.255.255
#arptables -A IN -d 192.168.0.224 -j DROP        VIP設置
#arptables -A OUT -s 192.168.0.224 -j mangle --mangle-ip-s 192.168.0.103 增加RS
#/etc/init.d/arptables_jf save
#chkconfig arptables_jf on

lvs負載均衡集羣配置成功

測試:在瀏覽器中訪問http://192.168.0.224 會自動加載103和191的web發佈頁面,刷新會自動跳轉則配置成功。


三、整合heartbeat+lvs實現高可用負載均衡

首先在另外一臺heartbeat主機上安裝並且配置LVS,並且啓動相應的服務。

修改heartbeat資源配置文件:

# vim haresources 
server68.example.com IPaddr::192.168.0.224/24/eth0 httpd ldirectord 
注意:主備心跳節點必須同步哦

這樣,就可以使用heartbeat來監控和控制lvs了(其實是heartbeat能夠監控三個目錄裏的腳本文件,就直接監控了ldirectord,而ldirectord又用來配置和監控LVS)

測試:現在直接關閉ldirectord
開啓heartbeat,會發現ldirectord開啓了,同時訪問流量器能夠訪問RS的內容
其實是lvs負載均衡過來的哦
測試高可用性和負載均衡性吧!

1.當關閉任何一個heartbeat主機,另外一個heartbeat主機會進行檢測和接管服務(VIP和ldirectord,ldirectord其實監控的lvs),因此不會影響客戶對後端真實服務的訪問。

2.負載均衡測試:在不斷的刷新過程中,會刷新出不同Real Server主機發布的頁面。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章