====== HAProxy ======
Fast and reliable http reverse proxy and load balancer.
===== Installation =====
sudo apt-get install haproxy # deb
sudo yum install haproxy # rpm
===== Configuration =====
以下以''ArchLinux''自动生成的配置来说明一下:
global
log 127.0.0.1 local2 # 格式: log [max level [min level]]
chroot /usr/share/haproxy # chroot 到该目录(保障安全)
pidfile /run/haproxy.pid
maxconn 4000 # 每个haproxy进程最大并发连接数,同ulimit -n
user haproxy
daemon
defaults
mode http # 运行在http模式,共有{ tcp, http, health }三种工作模式
log global
option httplog # 打印http请求的日志
option dontlognull # 请求为空时不打印日志
option http-server-close # 打开http协议中服务器端关闭功能,使得支持长连接,使得会话可以被重用,使得每一个日志记录都会被记录。
option forwardfor except 127.0.0.0/8 # 除了指定IP外都将请求发往后端
option redispatch # 请求后端服务器失败时重新将请求发往其他的健康服务器(redistribution)
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
###
# 下面例子为一个简单的反向代理:
# 基本模式为frontend分流,将请求导往不同的backend处理
###
frontend main *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static # 如果匹配规则符合前面定义的''url_static'',则发往''static'' backend
default_backend app # 否则默认发往 ''app'' backend
backend static
balance roundrobin
server static 127.0.0.1:4331 check
backend app
balance roundrobin
server app1 127.0.0.1:5001 check # 后端有四个服务器来负载
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
====== Reference ======
* [[http://www.haproxy.org/download/1.4/doc/configuration.txt| HAProxy documentation]]