项目地址
PS:
1.4.25的tar.gz下载后解压似乎有问题,改用了1.4.20
1.安装
解压之后可以读一下README,对所需的环境写的很详细
make TARGET=linux26 PREFIX=/xxxxx # make 的时候必须制定当前系统内核版本,否则会有错误提示(注意大小写,下同)
make install PREFIX=/xxx #有点受不了,make 时候的指定对 install 无效,install 必须指定,否则会安装到默认路径 /usr/local/sbin 中
编辑配置文件haproxy.cfg (名字路径都不重要,因为使用时要指定文件)
haproxy的配置不太易懂,着重说明
----------------------------------------------------
global
maxconn 5120 # 最大连接数
chroot /安装目录/haproxy
uid user_00
gid users
daemon # 使HAProxy进程进入后台运行。这是推荐的运行模式
quiet
nbproc 2 # 通过nbproc多设置几个haproxy并发进程(必须使用daemon模式),这样每个进程的task_queue相对就会短很多,性能能提高不少
pidfile /var/run/haproxy.pid # 将所有进程的pid写入文件 启动进程的用户必须有权限访问此文件
defaults # 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
log global
mode http #http的7层模式
option httplog
option dontlognull
log 127.0.0.1 local3
retries 3 #三次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
#可选项:abortonclose
# 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webfarm 0.0.0.0:80
mode http
stats uri /haproxy-stats # 监控haproxy状态
stats realm Haproxy\ statistics
stats auth netseek:52netseek # 设置状态监控的用户名为netseek密码为52netseek
balance roundrobin # 负载均衡算法
# 可选项:source
# 根据客户端IP进行哈希的方式
cookie SERVERID insert indirect
option httpclose #
option forwardfor # apache日志转发功能
option httpchk HEAD /check.txt HTTP/1.0 # 心跳检测URL的设置
# 可以根据机器的性能不同,不使用默认的连接数配置而使用自己的特殊的连接数配置
# 如minconn 10 maxconn 20
# cookie 1表示serverid为1
# check inter 1500 是检测心跳频率
# rise 3是3次正确认为服务器可用
# fall 3是3次失败认为服务器不可用
# weight代表权重
server app_bbs1 127.0.0.1:120001 cookie app1inst1 check inter 2000 rise 2 fall 5
server app_bbs2 127.0.0.1:120002 cookie app1inst2 check inter 2000 rise 2 fall 5
# 更详细的配置说明可参考 http://www.cnblogs.com/dkblog/archive/2012/03/13/2393321.html
----------------------------------------------------
----------------------------------------------------
简化版的配置
----------------------------------------------------
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /tmp/chric/haproxy
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen appli3-relais 0.0.0.0:10003
dispatch 127.0.0.1:11211
listen appli4-backup 0.0.0.0:10004
balance roundrobin
server inst1 127.0.0.1:12001 check inter 2000 fall 3
server inst2 127.0.0.1:12002 check inter 2000 fall 3 backup
----------------------------------------------------
2.测试
用简化的haproxy配置,该配置可同时使用10003和10004端口,区别只是haproxy的处理策略不同
* 启动 haproxy
./haproxy -f ./haproxy.cfg
* 启动一个监听 11211 端口的server
python -m SimpleHTTPServer 12001
* 访问 haproxy 端口
http状态返回200
* 直接访问server端口,比较用
curl http://127.0.0.1:12001
http状态返回200,与访问haproxy效果相同
* 关闭server,再次访问 haproxy 端口
返回
curl: (7) couldn't connect to host
* 关闭server,再次直接访问server端口,比较用
curl http://127.0.0.1:12001
返回
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>