HAProxy 是一款高性能、免费、开源的反向代理软件,其提供高可用性、负载均衡,以及基于 TCP 和 HTTP 的应用程序代理,被广泛应用于各大互联网公司。

HAProxy 运行在现代常见硬件体系架构中,HAProxy 能支撑数以万计的并发连接,同时,HAProxy 的运行模式使得将其整合进当前架构中是一件非常简单且安全的事。通过 HAProxy 的代理,还可以避免后端服务器直接暴露在外部网络所带来的风险。

HAProxy具有以下功能:

  • 第4层(TCP)和第7层(HTTP)负载平衡
  • 支持多种调度算法
  • 会话保持
  • URL重写
  • 限速
  • 过滤
  • 流量整形
  • SSL / TLS 支持
  • Gzip压缩
  • 代理协议支持
  • 健康检查
  • 连接和 HTTP 访问日志记录
  • HTTP/2
  • 多线程
  • 无中断重载

HAProxy 使用模型:

haproxy-pmode.png

HAProxy 简单使用

HTTP 模式

这里给出一个 http 模式的配置示例,这是一个最基础的配置文件了。

global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    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  main
    bind *:80
    default_backend             app

backend app
    balance     roundrobin
    server  app1 192.168.0.100:8080 check
    server  app2 192.168.0.101:8080 check

TCP 模式

也是一个简单的例子,可以发现 TCP 模式就没有 HTTP 模式那么多的选项了。

global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  redispatch
    retries                 3
    maxconn                 3000

frontend  main
    bind *:80
    default_backend             app

backend app
    balance     roundrobin
    server  app1 192.168.0.100:8080 check
    server  app2 192.168.0.101:8080 check

标签: haproxy

添加新评论