华为云 ELB 负载均衡实战:构建高可用应用流量分发架构
一、引言:为什么需要负载均衡
在应用从单机走向集群、从单体走向微服务的演进过程中,负载均衡始终是基础设施中不可或缺的一环。当你的业务面临以下挑战时,负载均衡便是答案:
- 流量激增:单台服务器无法承载峰值访问量,需要横向扩展多台服务器分担流量。
- 高可用要求:任何一台服务器宕机都不应导致业务中断,流量需自动切换至健康节点。
- 灰度发布:新版本上线需要小流量验证,逐步放量,而非全量切换。
- 安全加固:需要集中管理访问控制、防 DDoS、SSL 证书等安全能力。
华为云弹性负载均衡 ELB 正是为解决上述问题而设计的流量分发服务。它支持四层(TCP/UDP)与七层(HTTP/HTTPS)负载均衡,能够自动将海量并发访问流量分发到后端多台云服务器,配合健康检查机制实现故障自动切换,是构建高可用、高性能应用架构的基石。
二、ELB 核心概念与架构
2.1 四层与七层负载均衡
理解四层和七层的区别,是正确使用 ELB 的前提:
| 维度 | 四层负载均衡 | 七层负载均衡 |
|---|---|---|
| 工作层级 | 传输层(TCP/UDP) | 应用层(HTTP/HTTPS) |
| 转发依据 | IP 地址 + 端口号 | URL、Cookie、Header 等应用内容 |
| 性能开销 | 低,仅做流量转发 | 较高,需解析应用协议 |
| 典型场景 | 数据库、游戏、视频流 | Web 应用、API 网关 |
| 华为云产品 | ELB 四层监听器 | ELB 七层监听器 |
四层负载均衡更接近"流量路由器",它不关心数据包的内容,只根据 IP 和端口做转发。因为不做内容解析,性能极高,适合对延迟敏感的场景。
七层负载均衡则更像"应用调度员",它能读取 HTTP 请求头、URL 路径、Cookie 等信息,实现基于内容的智能路由。例如,可以将 /api/ 开头的请求路由到 API 服务组,将 /static/ 开头的请求路由到静态资源服务器组。
2.2 ELB 组件架构
华为云 ELB 由以下核心组件构成:
- 负载均衡器:流量入口,拥有一个公网或私网 IP 地址,是客户端访问的统一入口。
- 监听器:定义了负载均衡器如何监听和转发流量。每个监听器配置协议、端口、转发规则。
- 后端服务器组:承载实际业务流量的服务器集合,可配置权重分配流量比例。
- 健康检查:定期探测后端服务器状态,自动隔离异常节点。
- 证书管理:HTTPS 监听器绑定的 SSL 证书,支持上传自有证书或使用华为云托管证书。
2.3 跨可用区容灾
ELB 支持跨可用区部署。当 ELB 实例跨多个可用区时,前端流量入口本身也具备多可用区冗余能力。即使某个可用区整体故障,ELB 的流量入口仍可通过其他可用区继续提供服务。
后端服务器组同样可以跨可用区部署,配合健康检查,实现真正的同城双活架构。
三、实战场景:构建高可用 Web 应用
3.1 场景概述
假设我们正在部署一个企业级 Web 应用,架构需求如下:
- 前端:Nginx 反向代理,提供静态资源服务
- 后端:Tomcat 集群,处理业务逻辑
- 数据库:RDS 主备实例(不在本文讨论范围)
- 可用区:部署在两个可用区,实现跨 AZ 容灾
- 域名:通过 HTTPS 对外提供服务
- 访问控制:仅允许公网访问,限制恶意 IP
3.2 网络拓扑
互联网用户
│
▼
┌─────────────┐
│ ELB 实例 │ ← 公网 IP,跨可用区部署
│ (HTTPS:443) │
└──────┬──────┘
│
┌───┴───┐
│ │
┌──┴──┐ ┌──┴──┐
│ AZ-A│ │ AZ-B│
│ Nginx│ │ Nginx│
└──┬──┘ └──┬──┘
│ │
┌──┴──┐ ┌──┴──┐
│Tomcat│ │Tomcat│
│ 集群 │ │ 集群 │
└─────┘ └─────┘
3.3 创建 ELB 实例
登录华为云控制台,进入 ELB 服务页面,点击"创建负载均衡器":
- 区域与可用区:选择业务所在区域,勾选至少两个可用区以实现跨 AZ 容灾。
- 实例类型:选择"公网"类型,若业务仅需内网访问则选"私网"。
- 带宽配置:按业务峰值预估选择带宽上限,建议开启"带宽峰值"防止异常流量导致费用失控。
- EIP:系统自动分配弹性公网 IP,或绑定已有 EIP。
创建完成后,ELB 实例将获得一个公网 IP 地址和对应的 DNS 域名。建议将业务域名 CNAME 解析到该 DNS 地址。
3.4 配置监听器
HTTPS 监听器(443 端口)
- 进入监听器配置页面,点击"添加监听器"。
- 选择协议:HTTPS,端口:443。
- 上传或选择 SSL 证书。证书需包含域名信息,建议使用受信任的 CA 签发的证书。
- 开启"HTTP/2"以提升现代浏览器的访问性能。
- 配置 TLS 安全策略,建议选择"TLS 安全策略 1.2",禁用不安全的 TLS 1.0/1.1。
HTTP 重定向(80 端口)
为提升安全性,建议将 HTTP 流量自动重定向到 HTTPS:
- 添加 HTTP 监听器(80 端口)。
- 配置转发规则为"重定向到 HTTPS 监听器"。
- 状态码选择 301(永久重定向)或 302(临时重定向)。
3.5 配置后端服务器组
- 创建后端服务器组,名称建议体现业务用途,如
web-app-backend。 - 选择后端协议为 HTTP,端口为后端服务的实际端口(如 8080)。
- 添加后端服务器:从已创建的云服务器中,将两个可用区的 Nginx 服务器分别加入。
- 为每台服务器设置权重:若服务器规格一致,权重均设为 100;若规格不同,可按性能比例设置(如 8 核服务器权重 150,4 核服务器权重 100)。
3.6 健康检查配置
健康检查是 ELB 实现高可用最关键的能力。配置不当会导致误判或切换延迟。
推荐配置:
- 检查协议:HTTP(七层)或 TCP(四层)。Web 应用建议使用 HTTP 检查。
- 检查路径:
/health或/healthcheck,需后端服务提供该健康检查接口。 - 检查端口:与后端服务端口一致,或使用后端端口。
- 检查间隔:5 秒。间隔太短增加后端压力,太长影响故障感知速度。
- 超时时间:3 秒。
- 健康阈值:3 次。连续 3 次检查成功,判定为健康。
- 不健康阈值:3 次。连续 3 次检查失败,判定为不健康。
- 正常状态码:200 或 200-399。
健康检查接口设计建议:
后端服务应提供一个轻量的健康检查接口,该接口应:
- 不依赖数据库或外部服务,仅检查自身进程状态。
- 响应时间小于 100 毫秒。
- 返回 HTTP 200 状态码和简单文本(如
OK)。
3.7 会话保持
对于有状态的应用(如用户登录会话存储在服务器内存中),需要开启会话保持:
- 四层监听器:基于源 IP 的会话保持,配置保持时间(如 30 分钟)。
- 七层监听器:基于 Cookie 的会话保持,支持植入 Cookie 和重写 Cookie 两种模式。
注意:会话保持会降低负载均衡的灵活性。如果应用已设计为无状态(如将会话数据存入 Redis),则应关闭会话保持,以获得更好的扩展性。
四、高级配置与调优
4.1 访问控制
ELB 支持基于 IP 地址的访问控制,可作为应用的第一道安全防线:
- 在监听器配置中,开启"访问控制"。
- 选择"白名单"模式,仅允许可信 IP 段访问。
- 或选择"黑名单"模式,屏蔽已知恶意 IP。
最佳实践:对于面向公网的管理后台,应配置 IP 白名单,仅允许企业办公网络 IP 段访问。
4.2 SSL 卸载
SSL 卸载是指将 HTTPS 加解密工作交给 ELB 处理,后端服务器以 HTTP 协议通信。这样做的好处:
- 降低后端服务器的 CPU 开销。
- 集中管理 SSL 证书,证书更新无需重启后端服务。
- 可在 ELB 层实现基于 HTTP 内容的精细路由。
安全注意:若后端服务器与 ELB 之间的网络为公网,建议开启"后端服务器加密",即 ELB 与后端服务器之间也使用 HTTPS 通信。
4.3 流量镜像
ELB 支持流量镜像功能,可将生产流量复制一份发送到镜像服务器,用于:
- 新版本灰度测试,不影响线上用户。
- 安全审计,对流量进行深度分析。
- 故障复现,将异常流量镜像到调试环境。
4.4 性能调优建议
- 连接数调优:根据后端服务器的处理能力,合理设置 ELB 的最大连接数。过大的连接数可能导致后端服务器过载。
- 空闲超时:调整客户端空闲超时时间(默认 60 秒),长连接场景可适当延长,短连接场景可缩短以释放连接资源。
- 后端服务器规格:确保后端服务器的 CPU、内存、网络带宽满足业务需求。ELB 本身不处理业务逻辑,瓶颈通常在后端服务器。
- 监控告警:在云监控中配置 ELB 相关指标的告警,包括:活跃连接数、新建连接数、后端服务器健康检查失败次数、QPS 等。
五、常见问题与排查
5.1 后端服务器健康检查失败
现象:后端服务器显示"不健康",但服务器本身运行正常。
排查步骤:
- 从 ELB 所在网络段 ping 后端服务器内网 IP,确认网络连通性。
- 从后端服务器本地 curl 健康检查接口,确认接口返回 200。
- 检查健康检查路径是否与后端服务实际路径一致。
- 检查安全组规则,确认 ELB 所在 IP 段可访问后端服务器健康检查端口。
- 检查后端服务防火墙,确认未拦截健康检查请求。
5.2 流量分配不均
现象:部分后端服务器负载过高,部分服务器负载过低。
排查步骤:
- 检查后端服务器权重配置是否合理。
- 若开启了会话保持,可能导致流量分布不均。可尝试关闭会话保持观察。
- 检查是否存在长连接场景,长连接会持续路由到同一台服务器。
5.3 HTTPS 访问失败
现象:浏览器提示"证书错误"或"连接不安全"。
排查步骤:
- 确认 SSL 证书未过期。
- 确认证书绑定的域名与访问域名一致。
- 确认证书链完整,包含中间证书。
- 确认 TLS 安全策略未被客户端浏览器版本不支持。
5.4 跨可用区容灾失效
现象:某个可用区故障后,业务仍受影响。
排查步骤:
- 确认后端服务器组中两个可用区的服务器均处于"健康"状态。
- 确认 ELB 实例已开启跨可用区部署。
- 确认业务本身具备跨 AZ 容灾能力(如数据库、缓存等依赖组件)。
六、成本优化
ELB 的计费模式包括实例费、流量费、带宽费。以下为成本优化建议:
- 按需选择实例规格:小型业务可选择"小型"规格,大型业务再升级。规格越高,单价越低。
- 合理设置带宽峰值:避免带宽峰值设置过高导致费用失控。
- 私网 ELB 免实例费:若业务仅需内网访问,使用私网 ELB 可节省实例费用。
- 监控流量趋势:定期分析流量报表,识别异常流量模式。
七、总结
华为云 ELB 作为企业级流量分发服务,为构建高可用、高性能的应用架构提供了坚实支撑。本文从基础概念出发,通过一个完整的实战场景,演示了 ELB 的创建、配置、调优全流程。核心要点回顾:
- 四层与七层分离:根据业务特性选择合适的负载均衡层级。
- 健康检查是生命线:合理配置健康检查参数,确保故障感知及时准确。
- 跨可用区部署:ELB 实例与后端服务器均跨 AZ 部署,实现真正的同城双活。
- 安全加固:通过访问控制、SSL 卸载、安全组等多层防护,保障应用安全。
- 持续监控:建立完善的监控告警体系,及时发现并处理异常。
负载均衡不是"一配永逸"的组件,而是需要随着业务增长持续调优的基础设施。建议定期审视 ELB 的配置,结合业务流量变化和云服务更新,不断优化架构,以最小的成本获得最大的可用性保障。
本文由华为云架构实践出品,内容基于华为云 ELB 产品文档及生产环境最佳实践整理。文中配置参数仅供参考,实际部署请结合业务场景调整。
- 点赞
- 收藏
- 关注作者
评论(0)