2013年2月4日 星期一

lvs負載均衡及ha高可用集群



應用背景
 
隨著互聯網應用的普及以及人們對互聯網的要求也越來越高,在流量增加的同時,要求速度快,線上時間長或出故障的時間短或故障後能及時恢復等等。為了解決這些問題,各種負載均衡及集群技術應運而生
 
其中,LVS便是一個解決大流量分流很好的解決方案
詳細請參考 http://www.linuxvirtualserver.org/zh/lvs1.html
 HA
High Availability),則是高可用的意思,也可以說是雙機熱備雙機等的應用。如在一些線上時間有特別的要求或是在故障後要在很短的時間內恢復,就有必要應用到這個ha
 
本文的應用,由兩台機組成的一個LVSHA,主要是解決分流及單點故障。
AB機,正常情況下,A機為LVS轉分機,同時又是提供web的服務機,當A機有問題時,B機接管A機的服務,同時自己也是一個web服務機。由於本文的應用中,機器數量有限,所以,將ha,lvs,realserver都放在一起了。在機器允許的情況下,最好分開,如:
LVS
轉發為獨立一台機,再在這轉發機上配置HA避免轉發機故障,再用一台機來做轉發及HA的備機,當主轉發機故障時就可接管服務

應用環境
機器兩台
系統為由本人基於CentOS 5.4 x86_64的定製版
可以看 51cto.com/centos5.4_x86_64
heartbeat + ldirectord + lvs
結構如下:
VIP:192.168.1.90
Wd1 192.168.1.91
Wd2 192.168.1.92
安裝
1
可以用源碼安裝,也可以用yum安裝,用源碼安裝,定制性強一點,但用yum安裝,很方便,如:
yum install -y heartbeat
yum install -y heartbeat-ldirectord
即可完成
2 配置(本例的設定檔沿用1.X的風格,2.X以上的功能很強大,也較複雜)
主要的設定檔有以下幾個:
Authkeys
ha.cf
ldirectord.cf
haresources
檔內容
# cat authkeys
auth 1
1 crc
# cat ha.cf
#wdlinux.cn conf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
keepalive 8
deadtime 60
warntime 60
initdead 120
udpport 694
ucast eth0 192.168.1.92
auto_failback on
node    wd1
node    wd2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster

# cat ldirectord.cf
#wdlinux.cn conf
checktimeout=10
checkinterval=8
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
logfile="local0"
quiescent=no
virtual=192.168.1.90:80
        real=192.168.1.91:80 gate
        real=192.168.1.92:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        request="lt.html"
        receive="Test Page"
        scheduler=wrr
        persistent=30
        protocol=tcp
        checktype=negotiate
        checkport=80

# cat haresources
Wd1 lvs IPaddr::192.168.1.90/24/eth0:0 ldirectord
wd2上的lvs指令檔
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
/sbin/ipvsadm --set 10 10 10
Wd2上的lvs指令檔
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
# wdlinux.cn
VIP=192.168.1.90
/etc/rc.d/init.d/functions
/sbin/ipvsadm --set 10 10 10
case "$1" in
        start)
        /sbin/ifconfig lo:0 down
        /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
        /sbin/route add -host $VIP dev eth0:0
        ;;
        stop)
        /sbin/ifconfig eth0:0 down
        /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
        /sbin/route add -host $VIP dev lo:0
        ;;
        *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac
#cat /etc/hosts
192.168.1.91 wd1
192.168.1.92 wd2
cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
iptables 增加一個對方IP的訪問,否則在切換時會有問題
此文的連接:51cto.com/ha-lvs-loadbalance 
[
我的Linux,Linux更易用: 51cto.com :QQ 12571192]
原創內容,轉載請保留此資訊
本文的pdf下載 51cto.com/doc/lvs負載均衡及ha高可用集群.pdf 
Word
版下載 51cto.com/doc/lvs負載均衡及ha高可用集群.doc

沒有留言: