负载均衡的部署模式

前言:

  1. 负载均衡的部署模式决定了负载均衡器"站在哪里、以何种身份工作",而核心功能则定义了它"能做什么、提供什么价值"。 部署模式为功能的实现提供了网络基础和可能性,而核心功能的也反过来影响着部署模式的选择

  2. 该章节是负载均衡章节的第二章,主要介绍一下负载均衡的部署模式,会话保持等内容


一、 负载均衡的部署模式

部署模式主要解决网络流量如何流入和流出负载均衡器的问题,它为所有后续功能的实现划定了规定的空间

  • 路由模式(网关模式) :负载均衡器作为网络中的默认网关。所有进出服务器池的流量(请求和响应)都必须经过它。易于管理,但负载均衡器可能成为性能瓶颈

  • 桥接模式(透明模式):负载均衡器像网桥一样工作在网络中,对客户端和后端服务器"透明"(IP/MAC地址不变)。服务器响应可以直接返回给客户端,部署简单,效率提高

  • 服务端直接返回模式:负载均衡器只处理入站请求的分发,后端服务器处理完毕后,直接使用自己的IP地址将响应包发回给客户端(不再经过负载均衡器)。这极大减轻了负载均衡器的压力,但要求服务器与客户端路由可达

二、 会话保持(Session Persistence)

会话保持,也称会话亲和性 ,是指负载均衡器将来自同一客户端 的一系列相关联请求,持续地定向发送到同一台后端服务器上的机制

  • 为什么需要会话保持? 解释在用户登录、购物车等有状态应用中,需要将同一用户的多次请求定向到同一台后端服务器,以保证会话信息的连续性

  • 技术本质 :在客户端(或网络流)与一台特定的后端服务器之间,建立一个临时的、稳定的映射关系,该关系在一个会话周期内持续有效

  • 没有会话保持的: 如果用户A的登录请求被分发到服务器1 ,服务器1为其创建了Session。下一秒,用户A添加购物车的请求被轮询到服务器2 ,而服务器2的内存中没有 用户A的Session,系统会认为用户未登录,购物车操作失败。这会直接导致用户登录态丢失、数据混乱、操作中断

  • 常见实现方式

    • Cookie插入:负载均衡器在第一个响应中插入一个唯一Cookie,后续客户端请求会携带此Cookie,负载均衡器据此识别用户并转发

    • Cookie重写:应用服务器已经设置了Cookie,负载均衡器修改其中的服务器标识信息

    • 应用层Session ID识别:七层负载均衡器可以解析HTTP请求体或Header中的Session ID进行绑定

三、 健康检查机制详解

负载均衡的健康检查是系统高可用性的"生命线"。它如同一套7x24小时不间断的脉搏监控仪,确保流量只会被导向真正健康的服务器

  • 检查类型

    • 被动健康检查:通过观察正常请求的响应(如TCP连接失败、HTTP 5xx错误)来判断服务器状态。反应迅速,但存在漏判的情况

    • 主动健康检查 :负载均衡器主动发起探测请求到后端服务器,根据响应判断其状态。可分为:

      • TCP检查:尝试与服务器的指定端口建立TCP三次握手。成功即认为健康

      • HTTP(S) GET检查 :发送GET请求到特定URL(如/health),检查返回状态码和内容

      • 自定义脚本检查:负载均衡器在本地或通过Agent执行一个自定义脚本。脚本可以检查系统资源(CPU、内存)、依赖服务(数据库连接)、特定文件等,并返回成功或失败

  • 检查参数:间隔时间、超时时间、成功/失败阈值。这些参数的精细配置直接影响高可用性的灵敏度

四、 负载均衡的高级功能

这些功能让负载均衡从单纯的"流量分发器"变为"应用交付控制器"

  • SSL/TLS终结 :在负载均衡器上完成HTTPS请求的解密 ,并将明文的HTTP请求转发给后端服务器。响应在负载均衡器上再被加密后返回给客户端

  • 内容压缩与缓存:压缩响应内容以节省带宽;缓存静态资源(如图片、CSS),直接返回给用户,减轻后端压力

  • Web应用防火墙:提供基础的SQL注入、跨站脚本等应用层攻击防护

  • 流量整形与限速:控制到特定服务器或URL的流量速率,防止资源被滥用,保证服务公平性

  • 网络隔离与IP隐藏:作为统一的对外入口,负载均衡器背后的服务器群可以部署在私有网络中,不直接暴露公网IP

五、 负载均衡的问题

  • 单点故障:负载均衡器本身成为新的单点

  • 解决方案:高可用集群(Active-Standby或Active-Active模式),通过VRRP等协议实现故障切换

  • 性能瓶颈:负载均衡器的处理能力上限

  • 解决方案:选择更高性能的设备/软件,或采用DNS轮询+多层负载均衡架构进行横向扩展

  • 配置与管理的复杂性:特别是七层负载均衡的规则配置可能非常复杂。需要良好的运维流程和工具。

  • 后端服务器的状态同步 :当使用会话保持时,如果某台服务器故障,如何迁移用户会话?这引出了分布式会话存储(如Redis)的概念

相关推荐
DN金猿17 小时前
ubuntu在apt安装时出现的弹窗详解
linux·运维·ubuntu
Loo国昌17 小时前
【LangChain1.0】第二篇 快速上手实战
网络·人工智能·后端·算法·microsoft·语言模型
无忧智库17 小时前
一网统飞:城市级低空空域精细化管理与服务平台建设方案深度解析(WORD)
大数据·网络·人工智能
橘颂TA17 小时前
【剑斩OFFER】算法的暴力美学——力扣 692 题:前 K 个高频单词
网络·算法·leetcode·哈希算法·结构与算法
世人万千丶17 小时前
鸿蒙跨端框架 Flutter 学习 Day 4:网络交互——HTTP 请求基础与数据反序列化实战
网络·学习·flutter·ui·交互·harmonyos·鸿蒙
Whoami!17 小时前
❿⁄₁₃ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击实践 ➱ 获取并破解Net-NTLMv2哈希(下)
网络安全·信息安全·密码破解原理·net-ntlmv2哈希
恃宠而骄的佩奇17 小时前
网络安全面试题——安全服务
web安全·网络安全·面试·奇安信
大地的一角17 小时前
(Linux)进程间通信
linux·运维·服务器
乾元17 小时前
当奥本海默遇到图灵:AI 开启的网络安全新纪元
服务器·网络·人工智能·网络协议·安全·web安全
cly117 小时前
Jenkins重置管理员密码
运维·servlet·jenkins