HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
环境:
Haproxy:192.168.1.106
Web1: 192.168.1.107
Web2: 192.168.1.108
安装:
tar zxvf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
uname -a
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
编辑配置文件:
cp /soft/haproxy-1.4.22/examples/haproxy.cfg /usr/local/haproxy/
vim /usr/local/haproxy/haproxy.cfg
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
|
global
log 127.0.0.1 local0 #全局日志
maxconn 4096 #最大连接数
chroot /usr/local/haproxy
uid 99 #用户ID
gid 99 #组ID
daemon #后台运行
nbproc 1 #创建进程数
pidfile /usr/local/haproxy/haproxy.pid #pid文件
defaults
log 127.0.0.1 local3
mode http #支持的模式
option httplog #日志格式
option httpclose #请求完成后关闭http通道
option dontlognull
option forwardfor #apache日志转发
option redispatch
retries 3 #重连次数
maxconn 2000
balance roundrobin #算法类型
stats uri /haproxy-stats #状态统计页面
#stats auth admin:admin #状态页面用户密码,可选
contimeout 5000 #连接超时
clitimeout 50000 #客户端超时
srvtimeout 50000 #服务器超时
listen proxy 172.16.19.103:8080 #访问地址及端口
option httpchk HEAD /index.html HTTP/1.0 #健康检查页面
server web1 192.168.1.107:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server web2 192.168.1.108:80 cookie app1inst2 check inter 2000 rise 2 fall 5
|
或
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
34
35
|
global
log 127.0.0.1 local2
chroot /usr/local/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
stats uri /admin
frontend main *:80
default_backend app
backend app
balance roundrobin
server app1 192.168.1.107:80 check
server app2 192.168.1.108:80 check
|
测试:
root@ubuntu:~# while true;do curl 192.168.1.106;sleep 1;done
I'am web2
I'am web1
I'am web2
I'am web1
I'am web2
I'am web1
I'am web2
I'am web1
I'am web2
加上日志支持:
#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
HAProxy的算法有如下8种:
-
一、roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
-
二、static-rr,表示根据权重,建议关注;
-
三、leastconn,表示最少连接者先处理,建议关注;
-
四、source,表示根据请求源IP,建议关注;跟LVS的persistent和Nginx的ip_hash一样,是让客户机访问时始终访问后端的某一台真实的web服务器;
-
五、uri,表示根据请求的URI;
-
六、url_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name
-
七、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
-
八、rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
其实这些算法各有各的用法,我们平时应用得比较多的应该是roundrobin、source和lestconn,大家可以重点关注下。
参考:
http://addict.blog.51cto.com/1183172/1179270
http://sfzhang88.blog.51cto.com/4995876/1229620
http://johnsz.blog.51cto.com/525379/715922
http://dngood.blog.51cto.com/446195/1120487
http://pesen.blog.51cto.com/4575807/1137200
(责任编辑:IT) |