Nginx、Haproxy

本文介绍了Nginx作为轻量级Web服务器、反向代理服务器和负载均衡器的功能,包括其高并发、Master/Worker结构、动静分离等优势及负载均衡的6种调度算法。HAProxy作为负载均衡软件,提供L4和L7负载均衡,支持健康检查、会话保持和SSL。HAProxy的负载调度策略包括轮询、带权轮询、原地址保持和基于请求URL的调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Nginx

定义
Nginx 是开源的轻量级 Web 服务器、反向代理服务器,以及负载均衡器和 HTTP 缓存器。

优势

  • 高并发,高性能和低内存。
  • Master/Worker结构:一个 master 进程,生成一个或多个 worker 进程

功能

  • 1.反向代理
  • 2.正向代理
  • 3.负载均衡在这里插入图片描述

将原先请求集中到单个服务器上的情况改为增加服务器的数量,然后将请求分发到各个服务器上,将负载分发到不同的服务器,即负载均衡。
Nginx 负载均衡主要是对七层网络通信模型中的第七层应用层上的 http、https 进行支持。

  • 4.动静分离
    在这里插入图片描述

为了加快网站的解析速度,可以把静态页面和动态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

  • 5.高可用性
    在这里插入图片描述

为了提高系统的可用性和容错能力,可以增加nginx服务器的数量,当主服务器发生故障或宕机,备份服务器可以立即充当主服务器进行不间断工作。

缺点

  • 适用范围小:Nginx 仅能支 持http、https 和 Email 协议
  • 对后端服务器的健康检查,只支持通过端口来检测,不支持通过 ur l来检测。不支持 Session 的直接保持,但能通过 ip_hash来解决。

负载均衡原理:
1.负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表:

#动态服务器组
    upstream dynamic_zuoyu {
        server localhost:8080;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082;  #tomcat 8.5
        server localhost:8083;  #tomcat 9.0
    }

2.在upstream模块配置完成后,要让指定的访问反向代理到服务器列表:

#其他页面反向代理到tomcat容器
        location ~ .*$ {
            index index.jsp index.html;
            proxy_pass http://dynamic_zuoyu;
        }

支持调度算法(6种)

轮询
特点:
1.每个请求会按时间顺序逐一分配到不同的后端服务器。
2.在轮询中,如果服务器down掉了,会自动剔除该服务器。
3.此策略适合服务器配置相当,无状态且短平快的服务使用。
- weight

#动态服务器组
    upstream dynamic_zuoyu {
        server localhost:8080   weight=2;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082   backup;  #tomcat 8.5
        server localhost:8083   max_fails=3 fail_timeout=20s;  #tomcat 9.0
    }

特点:
1.权重方式,在轮询策略的基础上指定轮询的几率。
2.权重越高分配到需要处理的请求越多。
3.此策略比较适合服务器的硬件配置差别比较大的情况
- IP_hash

#动态服务器组
    upstream dynamic_zuoyu {
        ip_hash;    #保证每个访客固定访问一个后端服务器
        server localhost:8080   weight=2;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082;  #tomcat 8.5
        server localhost:8083   max_fails=3 fail_timeout=20s;  #tomcat 9.0
    }

特点

  • 1.基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话,可以解决session不能跨服务器的问题。
  • 2.此策略适合有状态服务,比如session。
  • 3.当有服务器需要剔除,必须手动down掉。

least_conn:最少连接数

#动态服务器组
    upstream dynamic_zuoyu {
        least_conn;    #把请求转发给连接数较少的后端服务器
        server localhost:8080   weight=2;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082 backup;  #tomcat 8.5
        server localhost:8083   max_fails=3 fail_timeout=20s;  #tomcat 9.0
    }

特点:
1.把请求转发给连接数较少的后端服务器
2.此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况

- fair(第三方策略)

#动态服务器组
    upstream dynamic_zuoyu {
        server localhost:8080;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082;  #tomcat 8.5
        server localhost:8083;  #tomcat 9.0
        fair;    #实现响应时间短的优先分配
    }

特点:按照服务器端的响应时间来分配请求,响应时间短的优先分配。

url_hash(第三方策略):依据URL分配方式

#动态服务器组
    upstream dynamic_zuoyu {
        hash $request_uri;    #实现每个url定向到同一个后端服务器
        server localhost:8080;  #tomcat 7.0
        server localhost:8081;  #tomcat 8.0
        server localhost:8082;  #tomcat 8.5
        server localhost:8083;  #tomcat 9.0
    }

特点:
1.按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。

2.HAProxy

定义:
HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。
它提供L4(TCP)和L7(HTTP)两种负载均衡能力
核心功能

  • 负载均衡:L4和L7两种模式
  • 健康检查:支持TCP和HTTP两种健康检查模式
  • 会话保持
  • SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输
  • 监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。

优点

  • 如支持 Session 的保持,Cookie 的引导;同时支持通过获取指定的 url 来检测后端服务器的状态。
  • HAProxy 支持 TCP 协议的负载均衡转发,可以对 MySQL 读进行负载均衡,对后端的 MySQL
    节点进行检测和负载均衡,大家可以用 LVS+Keepalived 对 MySQL 主从做负载均衡。

支持的负载调度策略

  • Round-robin(轮循)
  • Weight-round-robin(带权轮循)、
  • source(原地址保持)
  • RI(请求URL)
  • rdp-cookie(根据cookie)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值