阿泰老师曾在群里说过,七层负载的话,
HAproxy
要优于
Nginx
Haproxy
比
Nginx
强的地方是对后端
realserver
的健康检查功能,是通过在
WWW
主目录下设定一个特定文件(如
welcome.htm
)并定时检查来实现的。还有一个是支持
session
会话保持功能,即同一个
IP
只转发到一台服务器上。这个功能
LVS
有,现在
Nginx
里有一个第三方扩展模块
Nginx_upstream_ivn_route
,是基于
cookies
的
session sticky
功能(基于
cookies
的会话保持模块),不过效果如何我暂时还没有测试。
一,
安装
Haproxy
tar �Czxvf haproxy- 1.2.17 .tar.gz
cd haproxy- 1.2.17
make
TARGET=linux26 #
看
README
,找到自己的系统符合的标志
这样,在该目录下生成了
haproxy
命令文件
二,配置文件
自己创建配置文件
haproxy.cfg
如下:
global
maxconn 5120
ulimit-n 65536
chroot /usr/share/haproxy # haproxy
安装目录
uid 99
gid 99
daemon
quiet
#
通过
nbproc
多设置几个
haproxy
并发进程,这样每个进程的
task_queue
相对就会短很多,性能自然就能提高不少
nbproc 2
#pidfile /var/run/haproxy-private.pid
defaults
log global
mode http
option httplog
option dontlognull
log 127.0.0.1 local3
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
#listen SDS.DMS.COM 10.0.0 .0:80 #
监听
IP
及端口,域名是在
Web
界面显示的标识
listen 123 0.0.0 .0:80 #
这个
123
是区别不同的负载名称,因为一个
listen
定义一个负载池
mode http
stats uri /haproxy #
监控
haproxy
状态虚拟目录
stats realm Haproxy\statistics
stats auth gao:gao #
设置状态监控的用户名为
gao
密码为
gao
balance roundrobin #
负载均衡算法,轮询,
1.3.14
以上版本支持多种算法
cookie SERVERID insert indirect
option httpclose
option forwardfor
option httpchk HEAD /welcome.htm HTTP/1.0 #
健康检测
每一台的
WEB
根目录存放
# weblocme.htm
文件(靠这个文件检查健康状况!!!)
#
下面是节点服务器
#server APP01 10.0.1 .10:80 cookie app1inst1 check inter 2000 rise 2 fall 5
#server APP02 10.0.1 .11:80 cookie app1inst2 check inter 2000 rise 2 fall 5
server APP03 192.168.109.5:81 cookie app1inst3 check inter 2000 rise 2 fall 5
server APP04 192.168.109.3:80 cookie app1inst4 check inter 2000 rise 2 fall 5
三,
启动
/usr/local/src1/HAproxy/haproxy- 1.2.17 /haproxy -f /usr/local/src1/HAproxy/haproxy.cfg
正常启动的话,是什么都不输出的,没有
OK
之类反馈
我现在的环境是两台虚拟机
192.168.109.4
和
192.168.109.3
在
192.168.109.4
上另设置了一个
IP
:
192.168.109.5
,让
Apache
专门监听这个
IP
的
81
端口
在算法是轮询的前提下,测试
[root@xxw HAproxy]# for i in $(seq 10); do curl
http://192.168.109.4 ;done
192.168.109.3 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.3 It is work!
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.5 It is work!
192.168.109.3 It is work!
192.168.109.5 It is work!
算法改为
source
,测试
#!/bin/bash
for ((i=0;i<10;i++))
do curl
http://192.168.109.4
done
[root@xxw HAproxy]# sh ~/test/test
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
192.168.109.5 It is work!
1.3.14
版本支持以下负载算法:
*
简单的轮询,
balance roundrobin
;
*
根据请求的源
IP
,
balance source
;
*
根据请求的
uri
,
balance uri
;
*
根据请求
RUL
中的参数,
balance url_param
在
http://192.168.109.4/hproxy上可以看到详细的状态
(帐户就是
haproxy.cfg
上的
gao:gao
)
LVS
太笨重了,如果
Nginx
健康检查好的话,还是转向
Nginx
吧,尽管配置比
HAproxy
稍稍复杂
HAproxy
支持双机热备,注意搜集一下这方面的资料,下一步是测试
Nginx
的会话保持功能。
本文出自 “西瓜皮” 博客,谢绝转载!