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