HAProxy 介绍及简单使用
HAProxy 是一款高性能、免费、开源的反向代理软件,其提供高可用性、负载均衡,以及基于 TCP 和 HTTP 的应用程序代理,被广泛应用于各大互联网公司。
HAProxy 运行在现代常见硬件体系架构中,HAProxy 能支撑数以万计的并发连接,同时,HAProxy 的运行模式使得将其整合进当前架构中是一件非常简单且安全的事。通过 HAProxy 的代理,还可以避免后端服务器直接暴露在外部网络所带来的风险。
HAProxy具有以下功能:
- 第4层(TCP)和第7层(HTTP)负载平衡
- 支持多种调度算法
- 会话保持
- URL重写
- 限速
- 过滤
- 流量整形
- SSL / TLS 支持
- Gzip压缩
- 代理协议支持
- 健康检查
- 连接和 HTTP 访问日志记录
- HTTP/2
- 多线程
- 无中断重载
HAProxy 使用模型:
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