Skip to content
作者:daily5am创建:-更新:-
字数:预计阅读: 分钟访问量:--

负载均衡

AI生成声明: 本文档由AI辅助生成,旨在提供负载均衡的基础知识和实践指南。

🎯 学习目标

通过本章节的学习,你将能够:

  • 理解负载均衡的原理和作用
  • 掌握常见的负载均衡算法
  • 了解四层和七层负载均衡的区别
  • 学习负载均衡的实践应用

📚 什么是负载均衡

负载均衡(Load Balancing)是将网络请求分发到多个服务器上的技术,目的是提高系统的可用性、性能和可扩展性。

核心作用

  1. 提高性能: 分散请求压力,充分利用服务器资源
  2. 提高可用性: 单机故障时自动切换,保证服务可用
  3. 水平扩展: 通过增加服务器提升系统容量
  4. 故障隔离: 问题服务器自动剔除,不影响整体服务

🔍 负载均衡的分类

按网络层次分类

四层负载均衡(L4)

工作在网络传输层,基于IP和端口进行转发。

特点:

  • 性能高,转发速度快
  • 不解析应用层协议
  • 适用于高并发场景

常见方案:

  • LVS(Linux Virtual Server)
  • F5硬件负载均衡器
  • AWS ELB(Classic Load Balancer)

七层负载均衡(L7)

工作在应用层,可以解析HTTP/HTTPS协议。

特点:

  • 可以基于URL、Header等进行路由
  • 支持SSL终止
  • 功能更丰富,但性能相对较低

常见方案:

  • Nginx
  • HAProxy
  • AWS ALB(Application Load Balancer)

按部署位置分类

  • 硬件负载均衡: F5、A10等专用设备
  • 软件负载均衡: Nginx、HAProxy等软件方案
  • 云负载均衡: AWS ELB、阿里云SLB等云服务

🎲 负载均衡算法

1. 轮询(Round Robin)

按顺序将请求依次分发到每台服务器。

优点: 简单公平 缺点: 不考虑服务器性能差异

2. 加权轮询(Weighted Round Robin)

根据服务器性能设置权重,按权重比例分发请求。

优点: 考虑了服务器性能差异 缺点: 需要手动配置权重

3. 最少连接(Least Connections)

将请求分发到当前连接数最少的服务器。

优点: 适用于长连接场景 缺点: 需要维护连接状态

4. IP哈希(IP Hash)

根据客户端IP计算哈希值,将相同IP的请求分发到同一服务器。

优点: 保证会话一致性 缺点: 可能造成负载不均

5. 一致性哈希(Consistent Hash)

使用一致性哈希算法,节点增减时影响最小。

优点: 适合分布式缓存场景 缺点: 实现相对复杂

🏗️ 负载均衡架构

典型架构

客户端 → 负载均衡器 → 应用服务器集群

                   数据库/缓存

高可用部署

               负载均衡器(主)
              /              \
客户端 →                      → 应用服务器集群
              \              /
               负载均衡器(备)

关键点:

  • 主备切换(Keepalived)
  • 健康检查
  • 自动故障转移

🚀 实践应用

Nginx负载均衡配置

nginx
upstream backend {
    # 轮询
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    
    # 加权轮询
    server 192.168.1.12:8080 weight=3;
    
    # 健康检查
    server 192.168.1.13:8080 backup;
}

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

健康检查

  • 主动检查: 定时向服务器发送心跳
  • 被动检查: 根据响应结果判断健康状态
  • 检查参数: 响应时间、HTTP状态码、响应内容

⚠️ 注意事项

1. 会话保持

对于有状态的Web应用,需要保证同一用户的请求路由到同一服务器。

解决方案:

  • IP哈希
  • Cookie/Session粘性
  • 使用分布式Session

2. 故障处理

  • 快速检测故障服务器
  • 自动剔除和恢复
  • 优雅降级

3. 性能优化

  • 连接复用
  • SSL/TLS卸载
  • 静态资源缓存

📖 推荐资源

💡 下一步


最后更新时间: 2025-01-20