haproxy部署

Haproxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。Haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会保持或七层处理。Haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

1.下载安装包:

wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.9.tar.gz

2.解压:

1
2
[admin@xfyun-bj-msp2 downloads]$ tar xf haproxy-1.6.9.tar.gz
[admin@xfyun-bj-msp2 downloads]$ cd haproxy-1.6.9

3.安装:

1
2
[admin@xfyun-bj-msp2 downloads]$ make TARGET=linux3100 PRFIX=/work/admin/haprpxy  //根据内核版本uname -a 选择TARGET,我的是3.10.0
[admin@xfyun-bj-msp2 downloads]$ make install PREFIX=/work/admin/haproxy

4.配置:

4.1 配置解析:

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
36
37
38
39
40
41
42
43
44
45
46
[admin@xfyun-bj-msp2 downloads]$ mkdir /work/admin/haproxy/{logs,conf}
[admin@xfyun-bj-msp2 downloads]$ cd /work/admin/haproxy/conf/
[admin@xfyun-bj-msp2 conf]$ cat haproxy.cfg
global
maxconn 51200
daemon
#quiet
nbproc 1 #进程数
pidfile /work/admin/haproxy/logs/haproxy.pid

defaults
mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
#retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
timeout connect 5000ms #连接超时
timeout client 30000ms #客户端超时
timeout server 30000ms #服务器超时
#timeout check 2000 #=心跳检测超时
log 127.0.0.1 local0 err #[err warning info debug]
balance roundrobin #负载均衡算法
# option httplog #日志类别,采用httplog
# option httpclose #每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现
# option dontlognull
# option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip

listen admin_stats
bind 0.0.0.0:8888 #监听端口
option httplog #采用http日志格式
stats refresh 30s #统计页面自动刷新时间
stats uri /stats #统计页面url
stats realm Haproxy Manager #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置
#stats hide-version #隐藏统计页面上HAProxy的版本信息

listen test1
bind :12345
mode tcp
server t1 192.168.1.101:8881
server t2 192.168.1.102:8881

listen test2 :80
option httpclose
option forwardfor
server s1 192.168.1.101:8080 check weight 1 minconn 1 maxconn 3 check inter 40000
server s2 192.168.1.102:8080 check weight 1 minconn 1 maxconn 3 check inter 40000

42. 下面是常用配置:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
global

daemon
nbproc 1
maxconn 10240
pidfile /work/admin/haproxy/logs/haproxy.pid
log 127.0.0.1 local0

defaults

mode tcp
maxconn 10240
retries 3
balance roundrobin
option redispatch
option abortonclose
timeout connect 3000ms
timeout client 50000ms
timeout server 50000ms
log global

listen mongodb1
bind 0.0.0.0:27017
balance roundrobin
mode tcp
server mongodb1.feiersmart.local dds-2ze881f6aeb1dd441.mongodb.rds.aliyuncs.com:3717 weight 1 maxconn 10240 check inter 10s
server mongodb2.feiersmart.local dds-2zeb67fd071be3541.mongodb.rds.aliyuncs.com:3717 weight 1 maxconn 10240 check inter 10s

listen activemq
bind 0.0.0.0:61616
balance roundrobin
mode tcp
server activemq1.feiersmart.local 192.168.4.58:61616 weight 20 maxconn 10240 check inter 20s
server activemq2.feiersmart.local 192.168.1.231:61616 weight 20 maxconn 10240 check inter 20s backup

listen memcached
bind 0.0.0.0:11211
balance roundrobin
mode tcp
server memcached1.feiersmart.local 192.168.4.57:11211 weight 20 maxconn 10240 check inter 20s
server memcached2.feiersmart.local 192.168.1.232:11211 weight 20 maxconn 10240 check inter 20s backup

listen status
bind 0.0.0.0:8888
mode http
stats enable
stats uri /status
#stats auth admin:password
stats realm (Haproxy\ statistic)

5.启动:

1
[admin@xfyun-bj-msp2 conf]$ /work/admin/haproxy/sbin/haproxy -f /work/admin/haproxy/conf/haproxy.cfg

6.重启:

1
[admin@xfyun-bj-msp2 conf]$ /work/admin/haproxy/sbin/haproxy -f /work/admin/haproxy/conf/haproxy.cfg -sf `cat /work/admin/haproxy/logs/haproxy.pid`

7.配置为系统服务,开机启动:

7.1 复制开机启动脚本文件

1
2
3
4
5
6
[admin@xfyun-bj-msp2 conf]$ sudo cp -r /work/admin/downloads/haproxy-1.6.9/examples/haproxy.init /etc/init.d/haproxy 

#### 修改35,37行两个配置项路径

BIN=/work/admin/haproxy/sbin/$BASENAME
CFG=/work/admin/haproxy/conf/haproxy.cfg

7.2 增加执行权限

1
2
3
4
5
6
[admin@xfyun-bj-msp2 conf]$ sudo chmod +x /etc/init.d/haproxy
[admin@xfyun-bj-msp2 conf]$ sudo systemctl enable haproxy
[admin@xfyun-bj-msp2 conf]$ systemctl is-enabled haproxy
haproxy.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig haproxy --level=5
enabled
-------------本文结束感谢您的阅读-------------