centos7下haproxy1.7的使用与配置

centos7下haproxy1.7的使用与配置

haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

一、haproxy下载

1
http: //www.haproxy.org/#down

如:haproxy-1.7.2.tar.gz

二、安装haproxy

查看内核版本

1
> uname -r

解压haproxy,并安装

1
2
3
4
> tar xf haproxy-1.7.2.tar.gz
> cd haproxy-1.7.2
> make TARGET=linux2628 PREFIX=/data/haproxy
> make install PREFIX=/data/haproxy

安装成功后,查看版本

1
> /data/haproxy/sbin/haproxy -v

复制haproxy文件到/usr/sbin下
因为下面的haproxy.init启动脚本默认会去/usr/sbin下找,当然你也可以修改,不过比较麻烦。

1
> cp /data/haproxy/sbin/haproxy /usr/sbin/

复制haproxy脚本,到/etc/init.d下

扫描二维码关注公众号,回复: 3858308 查看本文章
1
2
> cp ./examples/haproxy.init /etc/init.d/haproxy
> chmod 755 /etc/init.d/haproxy

我们可以查看一下这个haproxy.init文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# $BASENAME 默认就是haproxy
BASENAME =` basename $0 `
if [ -L $0 ]; then
BASENAME =`find $0 -name $BASENAME -printf %l`
BASENAME =` basename $BASENAME `
fi
 
#执行文件路径
BIN=/usr/sbin/ $BASENAME
#配置文件路径
CFG=/etc/ $BASENAME / $BASENAME .cfg
#pid文件路径
PIDFILE=/ var /run/ $BASENAME .pid
#锁文件路径
LOCKFILE=/ var /lock/subsys/ $BASENAME

创建系统账号

1
> useradd -r haproxy

创建配置文件

1
2
> mkdir /etc/haproxy
> vi /etc/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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#全局配置
global
     #设置日志
     log 127.0.0.1 local3 info
     chroot /data/haproxy
     #用户与用户组
     user haproxy
     group haproxy
     #守护进程启动
     daemon
     #最大连接数
     maxconn 4000
 
#默认配置
defaults
     log global
     mode http
     option httplog
     option dontlognull
     timeout connect 5000
     timeout client 50000
     timeout server 50000
 
#前端配置,http_front名称可自定义
frontend http_front
     bind *:80
     #haproxy的状态管理页面,通过/haproxy?stats来访问
     stats uri /haproxy?stats
     default_backend http_back
 
#后端配置,http_back名称可自定义
backend http_back
     #负载均衡方式
     #source 根据请求源IP
     # static -rr 根据权重
     #leastconn 最少连接者先处理
     #uri 根据请求的uri
     #url_param 根据请求的url参数
     #rdp-cookie 据据cookie(name)来锁定并哈希每一次请求
     #hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
     #roundrobin 轮询方式
     balance roundrobin
     #设置健康检查页面
     option httpchk GET /index.html
     #传递客户端真实IP
     option forwardfor header X-Forwarded-For
     # inter 2000 健康检查时间间隔2秒
     # rise 3 检测多少次才认为是正常的
     # fall 3 失败多少次才认为是不可用的
     # weight 30 权重
     server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
     server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30

打开rsyslog配置

1
> vi /etc/rsyslog.conf

去掉下面两行前面的#号

1
2
$ModLoad imudp
$UDPServerRun 514

并添加下面一行

1
local3.* / var /log/haproxy.log

重启rsyslog

1
> systemctl restart rsyslog

启动haproxy

1
> service haproxy start

  

三、haproxy的acl规则

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
frontend http_front
     bind *:80
     stats uri /haproxy?stats
 
     #创建一个acl,is_http_back2是acl的名称,可自定义,用于判断主机名是否为www.back2.com
     acl is_http_back2 hdr_end(host) www.back2.com
     #通过正则判断主机名中是否为bbs.back.com或forum.back.com
     acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com)
     #判断ua是否为android
     acl is_ua_android hdr_reg(User-Agent) -i android
     #判断主机名开头是否为img.或css.或js.
     acl is_host_static hdr_beg(host) -i img. css. js.
     #判断url路径中是否有/bbs
     acl is_path_bbs path_beg -i /bbs
     #判断url文件结尾
     acl is_php path_end -i .php
     #通过正则判断url中结尾以
     acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$
     #效果同上
     acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif
 
     #如果主机名是www.back2.com那么就使用后端http_back2
     use_backend http_back2 if is_http_back2
 
     #默认使用的后端
     default_backend http_back
 
backend http_back
     balance roundrobin
     option httpchk GET /index.html
     option forwardfor header X-Forwarded-For
     server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
 
backend http_back2
     balance roundrobin
     option httpchk GET /index.html
     option forwardfor header X-Forwarded-For
     server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30

  

四、haproxy的动态管理

在/etc/haproxy/haproxy.cfg的global配置中添加如下项:

1
2
stats socket /data/haproxy/haproxy.sock mode 600 level admin
stats timeout 2m

安装socat工具

1
> yum install socat

查看帮助

1
> echo "help" | socat stdio /data/haproxy/haproxy.sock

查看信息

1
> echo "info" | socat stdio /data/haproxy/haproxy.sock

关闭后台主机

1
> echo "disable server http_back/node1" | socat stdio /data/haproxy/haproxy.sock

打开后台主机

1
> echo "enable server http_back/node1" | socat stdio /data/haproxy/haproxy.sock

  

五、可调优的参数

配置端口可用范围

1
> cat /proc/sys/net/ipv4/ip_local_port_range

配置端口复用

1
> cat /proc/sys/net/ipv4/tcp_tw_reuse

修改timeout的时间(不建议修改)

1
> cat /proc/sys/net/ipv4/tcp_fin_timeout

猜你喜欢

转载自blog.csdn.net/Gavinlib/article/details/72354217