Skip to content
On this page

Haproxy + Nginx

haproxy

haproxy是一款流行的负载均衡软件

  • 优点:
    • 支持TCP和HTTP两种协议层的负载均衡,使得它的功能非常丰富。
    • 支持8种左右的负载均衡算法,尤其是在HTTP模式时,有一些高级的算法,如动态加权的最少连接算法,可以根据后端服务器的响应时间和负载情况动态调整权重。
    • 支持虚拟主机,可以根据域名、目录结构等进行分流。
    • 支持Session的保持,Cookie的引导,以及通过获取指定的URL来检测后端服务器的状态。
    • 转发性能稍高,因为它追求zero copy的forward流程,所以代码都倾向于优化在这一点上。
    • 对后端服务器一直在做健康检测,可以及时切换故障机器,提高可用性。
  • 缺点:
    • 代码模块化不足,内部结构复杂,二次开发困难。
    • 配置文件比较繁琐,需要手动修改和重启。
    • 日志功能不够强大,需要配合其他工具进行分析。
    • 健康检测机制有一定的延迟,不能完全避免故障机器的影响。

使用haproxy为nginx配置高可用

  1. 在haproxy配置文件中指定nginx服务器的地址和端口
  2. 负载均衡的算法和模式 使用roundrobin算法,将web请求均匀地分配到三台nginx服务器上 示例:
conf
global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 4096
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    option redispatch
    maxconn 2000
    contimeout 5000
    clitimeout 50000
    srvtimeout 50000

frontend web
    bind *:80
    default_backend nginx

backend nginx
    balance roundrobin
    server nginx1 192.168.1.101:80 check
    server nginx2 192.168.1.102:80 check
    server nginx3 192.168.1.103:80 check

Released under the MIT License.