HAProxy提供高可用性、負(fù)載均衡以及基于TCP和HTTP應(yīng)用的代理,支持虛擬主機(jī),它是免費、快速并且可靠的一種解決方案。HAProxy特別適用于那些負(fù)載特大的web站點, 這些站點通常又需要會話保持或七層處理。HAProxy運(yùn)行在當(dāng)前的硬件上,完全可以支持?jǐn)?shù)以萬計的并發(fā)連接。并且它的運(yùn)行模式使得它可以很簡單安全的整合進(jìn)您當(dāng)前的架構(gòu)中, 同時可以保護(hù)你的web服務(wù)器不被暴露到網(wǎng)絡(luò)上。
該版本修正了配置中由于沒指定 server id 時導(dǎo)致聯(lián)系哈希算法出錯的問題;修正了分發(fā)器和 http_proxy 模塊的bug,日志中一些終結(jié)符號的問題等等,建議升級。
下載
http://haproxy.1wt.eu/download/1.4/src/
目錄
一 應(yīng)用背景
二 應(yīng)用環(huán)境
三 安裝配置
四 FAQ
一 應(yīng)用背景
[我的Linux,讓Linux更易用:http://www.fsowen.com:QQ 12571192]隨著互聯(lián)網(wǎng)應(yīng)用的普及以及人們對互聯(lián)網(wǎng)的要求也越來越高,在流量增加的同時,要求速度快,在線時間長或出故障的時間短或故障后能及時恢復(fù)等等。為了解決這些問題,各種負(fù)載均衡及集群技術(shù)應(yīng)運(yùn)而生
其中,LVS便是一個解決大流量分流很好的解決方案
詳細(xì)請參考 http://www.linuxvirtualserver.org/zh/lvs1.html
HA(High Availability),則是高可用的意思,也可以說是雙機(jī)熱備雙機(jī)等的應(yīng)用。如在一些在線時間有特別的要求或是在故障后要在很短的時間內(nèi)恢復(fù),就有必要應(yīng)用到這個ha了
本文的應(yīng)用,由兩臺機(jī)組成的一個LVS及HA,主要是解決分流及單點故障。
如A,B機(jī),正常情況下,A機(jī)為LVS轉(zhuǎn)分機(jī),同時又是提供web的服務(wù)機(jī),當(dāng)A機(jī)有問題時,B機(jī)接管A機(jī)的服務(wù),同時自己也是一個web服務(wù)機(jī)。由于本文的應(yīng)用中,機(jī)器數(shù)量有限,所以,將ha,lvs,realserver都放在一起了。在機(jī)器允許的情況下,最好分開,如:
LVS轉(zhuǎn)發(fā)為獨立一臺機(jī),再在這轉(zhuǎn)發(fā)機(jī)上配置HA避免轉(zhuǎn)發(fā)機(jī)故障,再用一臺機(jī)來做轉(zhuǎn)發(fā)及HA的備機(jī),當(dāng)主轉(zhuǎn)發(fā)機(jī)故障時就可接管服務(wù)
二 應(yīng)用環(huán)境
機(jī)器兩臺
系統(tǒng)為由本人基于CentOS 5.4 x86_64的定制版
可以看 http://www.fsowen.com/centos5.4_x86_64
heartbeat + ldirectord + lvs
結(jié)構(gòu)如下:
VIP:192.168.1.90
Wd1 192.168.1.91
Wd2 192.168.1.92
三 安裝
1 可以用源碼安裝,也可以用yum安裝,用源碼安裝,定制性強(qiáng)一點,但用yum安裝,很方便,如:
yum install -y heartbeat
yum install -y heartbeat-ldirectord
即可完成
2 配置(本例的配置文件沿用1.X的風(fēng)格,2.X以上的功能很強(qiáng)大,也較復(fù)雜)
主要的配置文件有以下幾個:
Authkeys
ha.cf
ldirectord.cf
haresources
文件內(nèi)容
# 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的訪問,否則在切換時會有問題
本文的pdf下載 http://www.fsowen.com/doc/lvs-ha.pdf
Word版下載 http://www.fsowen.com/doc/lvs-ha.doc