网络攻击,服务器单点故障,区域网络波动都在影响着网络应用的服务质量。
基于HAProxy的多层网络布局,可部分解决这些问题。

下载安装

HAProxy
http://www.haproxy.org/
HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的,借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。
大多数带包管理系统的Linux系统都可以直接安装HAProxy,也可以从官网上下载源码包自行编译。

配置

HAProxy有TCP和HTTP的代理转发,负载均衡,生存检测等很多功能,一般应用只需要简单使用部分配置即可。
默认配置文件在/etc/haproxy/haproxy.cfg

1
2
3
4
5
6
7
8
defaults
timeout connect 6000
timeout client 30000
timeout server 30000
timeout client-fin 15s
timeout server-fin 15s
option redispatch
maxconn 8000

HTTP转发

1
2
3
4
5
6
7
8
9
10
11
listen web80
bind *:80
mode http
http-request set-header Host modify-host.com #可修改Host访问数据
http-request set-header X-Forwarded-For %[src] #可将源链接IP写入Forwarded头
acl site_dead nbsrv lt 1
tcp-request connection reject if site_dead
server line1 1.1.1.1:80 check inter 3000 rise 3 fall 3
server line2 2.2.2.2:80 check inter 3000 rise 3 fall 3
server line3 3.3.3.3:80 check inter 3000 rise 3 fall 3 backup
server line4 4.4.4.4:80 check inter 3000 rise 3 fall 3 backup

line1和line2负载均衡,line3和line4作备线,如果转发线路全部失效,则监听端口拒绝所有tcp连接。

TCP转发

1
2
3
4
5
6
7
8
9
listen qq4000
bind *:4000
mode tcp
timeout tunnel 15s
acl site_dead nbsrv lt 1
tcp-request connection reject if site_dead
server line1 1.1.1.1:4000 check inter 1500 rise 3 fall 3
server line2 2.2.2.2:4000 check inter 1500 rise 3 fall 3 backup
server line3 3.3.3.3:4000 check inter 1500 rise 3 fall 3 backup

状态查看

使用hatop -s /run/haproxy/haproxy-sock-name.sock来查看状态
日志默认在/var/log/haproxy-***.log文件
修改完配置后使用service haproxy reload重加载配置

参考