负载均衡的部署模式

前言:

  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)的概念

相关推荐
梦想的颜色44 分钟前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
欢呼的太阳2 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
sdghterhd2 小时前
WebSocket 快速入门教程(附示例源码)
网络·websocket·网络协议
夜雪一千3 小时前
Python enumerate() 函数完整详解:遍历同时获取索引,告别手动计数
服务器·windows·python
donoot3 小时前
Linux系统下图书馆级电子书全自动标准化分类整理完整实施方案
大数据·linux·运维·电子书管理
xy34533 小时前
Wireshark捕获过滤器——语法元素详解
网络·测试工具·渗透测试·wireshark
spider_xcxc3 小时前
告别单点故障:阿里云CLB负载均衡从入门到实战
阿里云·云计算·负载均衡
ITKEY_3 小时前
macOS brew 安装的nginx 文件在哪里?
运维·nginx·macos
Elastic 中国社区官方博客4 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎
DLYSB_4 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯