用户工具

站点工具


linux:haproxy

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 <address> <facility> [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

linux/haproxy.txt · 最后更改: 2023/12/03 10:24 由 127.0.0.1