细数下来,算是东莞的项目的话,HAProxy+Keepalived我差不多也有三套在线上跑了,另外,这套Web方案也是我的一拍网的备份方案之一,目前也在测试,如果速度和稳定性够强劲的话,我也考虑将LVS+Keepalived换成HAProxy+Keepalived,关于HAProxy的语法和安装步骤请参考我的专题系列文章http://network.51cto.com/art/201101/241997.htm,另外,此篇文章跟刘天斯的不一样,我主要用其作为Web级别的负载均衡(七层应用)。
一、线上跑的HAProxy配置文件,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
global
log 127.0.0.1 local0
maxconn 65535
chroot
/usr/local/haproxy
uid 99
gid 99
daemon
nbproc 8
pidfile
/usr/local/haproxy/haproxy
.pid
#debug
defaults
log 127.0.0.1 local3
mode http
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
balance
source
stats uri
/web-status
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen www.1paituan.com
bind *:80
mode http
option httplog
log global
option httpchk HEAD
/index
.jsp HTTP
/1
.0
server web1 203.93.236.147:80 weight 5 check inter 2000 rise 2 fall 3
server web2 203.93.236.146:80 weight 3 check inter 2000 rise 2 fall 3
|
二、HAProxy的监控脚本我没有做,因为生产环境下HAProxy宕机的可能性微乎其乎,这个实施起来也简单,我们可以用如下命令来监控,判断是否返回了正常的200代码,命令下所示:
1
|
curl -s --
head
http:
//www
.1paituan.com
/index
.jsp |
awk
'/HTTP/ {print $2}'
|
三、加上日志支持,代码如下:
1
2
3
4
5
6
7
8
|
vim
/etc/syslog
.conf
添加:
local3.*
/var/log/haproxy
.log
local0.*
/var/log/haproxy
.log
vim
/etc/sysconfig/syslog
修改:
SYSLOGD_OPTIONS=
"-r -m 0"
service syslog restart
|
四、大家需要注意的几个地方是:
1)HAProyx采用的是balance source机制,它跟Nginx的ip_hash机制原理类似,是让客户机访问时始终访问后端的某一台真实的web服务器,这样让session就固定下来了;
2)option httpchk HEAD /index.jsp HTTP/1.0 是网页监控,如果HAProxy检测不到Web的根目录下没有index.jsp,就会产生503报错。
3)有网友说HAProxy必须采用listen 203.93.236.141:80这样类似的格式,这样其实不好,做集群时会导致从机启动不了,我们可以用bind *:80的方式代替。
4)HAProxy的并发监控和日志收集分析是下一步考虑的事情。
本文转自 抚琴煮酒 51CTO博客,原文链接:http://blog.51cto.com/yuhongchun/669491,如需转载请自行联系原作者