阿里云SLB负载均衡配置详解
负载均衡是分布式系统的流量入口,直接影响服务的可用性和性能。阿里云SLB(Server Load Balancer)提供四层和七层负载均衡能力,是构建高可用架构的核心组件。本文将深入讲解SLB的配置方法和最佳实践。
一、SLB产品体系
阿里云SLB已升级为ALB(Application Load Balancer)和NLB(Network Load Balancer)双产品体系:
| 产品 | 协议层 | 特点 | 适用场景 | |------|--------|------|---------| | ALB | 七层(HTTP/HTTPS) | 智能路由、内容缓存、WAF集成 | Web应用、API网关 | | NLB | 四层(TCP/UDP) | 超高性能、百万级并发、超低延迟 | 游戏、IoT、金融交易 | | CLB | 四层+七层 | 经典版,兼容旧架构 | 存量用户迁移 |
新项目推荐:
- Web/HTTP流量 → ALB
- TCP/UDP流量 → NLB
- 旧架构兼容 → CLB
与其他云厂商对比
| 特性 | 阿里云ALB | 腾讯云 CLB | AWS ALB | |------|----------|-----------|------| | 最大QPS | 100万+ | 50万+ | 100万+ | | 路由规则 | 域名+URL+Header+Cookie | 域名+URL | 域名+URL+Header | | HTTPS卸载 | 支持 | 支持 | 支持 | | WAF集成 | 原生集成 | 需额外配置 | AWS WAF | | gRPC支持 | 支持 | 部分 | 支持 | | 按量计费 | LCU单位 | 带宽/连接数 | LCU单位 |
二、ALB配置详解
2.1 创建ALB实例
- 登录 阿里云控制台
- 选择「应用型负载均衡ALB」→「创建实例」
- 关键配置:
| 配置项 | 推荐设置 | 说明 | |-------|---------|------| | 地域 | 与ECS同地域 | 负载均衡与后端必须同地域 | | 可用区 | 至少选择2个 | 实现跨可用区高可用 | | 网络类型 | 公网 | 面向互联网的服务 | | IP模式 | 固定IP | 便于DNS解析和安全组配置 | | 功能版本 | 标准 | 满足大部分需求 |
2.2 ALB计费模式
ALB采用LCU(Load Balancer Capacity Unit)按量计费:
| 计费项 | 单价 | 说明 | |-------|------|------| | 实例费 | ¥0.24/小时 | 基础实例保有费 | | LCU费 | ¥0.028/LCU/小时 | 按实际处理能力 | | 公网流量费 | ¥0.48/GB | 仅公网实例 |
LCU按以下四个维度取最大值计算:
| 维度 | 1 LCU对应 | |------|----------| | 新建连接数 | 25个/秒 | | 并发连接数 | 3000个 | | 处理数据量 | 1GB/小时 | | 规则评估数 | 1000次/秒 |
费用估算: 一个日PV 50万的Web应用,月费用约¥500-800。
2.3 配置监听
监听定义了ALB如何接收和转发请求:
HTTP监听
| 参数 | 推荐值 | 说明 | |------|-------|------| | 监听端口 | 80 | 接收HTTP请求 | | 调度算法 | 加权轮询(WRR) | 默认推荐 | | 会话保持 | 按需开启 | 有状态应用需要 | | 连接空闲超时 | 60秒 | 防止连接堆积 | | 请求超时 | 60秒 | 上游响应超时保护 |
HTTPS监听
| 参数 | 推荐值 | 说明 | |------|-------|------| | 监听端口 | 443 | 接收HTTPS请求 | | 证书 | 上传或选择免费证书 | 建议使用云盾证书 | | TLS策略 | tls_cipher_policy_1_2 | 最低TLS 1.2 | | HTTP2 | 开启 | 提升性能 | | 强制HTTPS | 开启重定向 | HTTP→HTTPS自动跳转 |
2.4 配置服务器组
服务器组是后端ECS实例的集合:
# 使用CLI创建服务器组
aliyun alidns CreateServerGroup \
--LoadBalancerId lb-xxx \
--ServerGroupName web-servers \
--Protocol HTTP
| 配置项 | 说明 | 推荐值 | |-------|------|-------| | 后端协议 | 与监听一致 | HTTP | | 后端端口 | 应用监听端口 | 8080 | | 健康检查路径 | 应用健康端点 | /health | | 健康检查间隔 | 检测频率 | 2秒 | | 不健康阈值 | 连续失败次数 | 3次 | | 健康阈值 | 连续成功恢复 | 3次 |
三、健康检查配置
健康检查是负载均衡自动故障摘除的核心机制:
3.1 HTTP健康检查
GET /health HTTP/1.1
Host: backend-service
| 参数 | 默认值 | 生产建议 | |------|-------|---------| | 检查间隔 | 2秒 | 2-5秒 | | 超时时间 | 5秒 | 3-5秒 | | 不健康阈值 | 3次 | 2-3次 | | 健康阈值 | 3次 | 2-3次 | | 检查路径 | / | /health(专用端点) | | HTTP状态码 | http_2xx,http_3xx | http_2xx |
3.2 TCP健康检查
适用于非HTTP服务(数据库、缓存等):
- 使用TCP SYN探测
- 无需应用层端点
- 检测更快,但无法判断应用层健康
3.3 健康检查端点设计
# Flask示例
@app.route('/health')
def health():
# 检查数据库连接
db_ok = check_db_connection()
# 检查缓存连接
cache_ok = check_redis_connection()
if db_ok and cache_ok:
return 'OK', 200
return 'Unhealthy', 503
四、高级路由配置
4.1 基于域名的路由
一个ALB实例可托管多个域名:
| 域名 | 转发到 | 优先级 | |------|--------|-------| | api.example.com | api-server-group | 1 | | www.example.com | web-server-group | 2 | | admin.example.com | admin-server-group | 3 |
4.2 基于URL路径的路由
| 路径 | 转发到 | 说明 | |------|--------|------| | /api/* | api-server-group | API服务 | | /static/* | oss-server-group | 静态资源→OSS | | /* | web-server-group | 默认路由 |
4.3 基于Header的路由
实现灰度发布、A/B测试:
| 条件 | 转发到 | 说明 | |------|--------|------| | Header: X-Version=v2 | v2-server-group | 新版本 | | 其他 | v1-server-group | 当前版本 |
五、NLB配置详解
5.1 创建NLB
aliyun nlb CreateLoadBalancer \
--LoadBalancerName game-nlb \
--AddressType Internet \
--ZoneMappings.1.ZoneId cn-beijing-a \
--ZoneMappings.1.VSwitchId vsw-xxx \
--ZoneMappings.2.ZoneId cn-beijing-b \
--ZoneMappings.2.VSwitchId vsw-yyy
5.2 NLB性能指标
| 指标 | NLB | |------|-----| | 最大并发连接数 | 1亿 | | 新建连接数/CPS | 100万 | | 转发延迟 | 微秒级 | | 支持协议 | TCP/UDP/TLS | | 客户端IP保留 | 是(Proxy Protocol) |
NLB特别适合游戏服务器、金融交易系统等对延迟和并发有极高要求的场景。与 GCP 的Network Load Balancer相比,NLB在并发连接数上具有数量级优势。
六、安全配置
| 安全措施 | ALB | NLB | |---------|-----|------| | 访问控制(ACL) | 支持 | 支持 | | WAF集成 | 原生 | 不支持 | | DDoS防护 | 云盾DDoS | 云盾DDoS | | HTTPS证书管理 | 支持 | TLS监听支持 | | 安全组 | 支持 | 支持 |
WAF配置
ALB与云盾WAF原生集成,无需额外部署:
- 在ALB监听中开启「WAF防护」
- 选择防护策略(基础防护/自定义规则)
- 开启「日志分析」记录攻击事件
七、监控与告警
| 监控指标 | 说明 | 告警阈值建议 | |---------|------|-----------| | QPS | 每秒请求数 | >预期峰值80% | | 后端响应时间 | 平均RT | >500ms | | 健康检查失败数 | 异常后端数 | >0 | | 4xx/5xx比例 | 错误率 | >1% | | 连接数使用率 | 当前/最大 | >70% |
八、成本优化
- 合理选择ALB/NLB:七层需求用ALB,四层需求用NLB(NLB更便宜)
- 多域名复用:一个ALB实例通过路由规则服务多个域名
- 内网SLB:内部服务使用内网类型,节省公网带宽费
- 预留LCU:稳定负载可购买LCU资源包降低单位成本
总结
阿里云SLB/ALB/NLB提供从七层智能路由到四层超高性能的完整负载均衡方案。合理配置健康检查和路由规则,可以构建高可用、高性能的流量分发架构。
多云(Duoyun Cloud) 作为阿里云合作伙伴,提供SLB/ALB/NLB的配置咨询和资源代购。通过多云下单,负载均衡实例可享受5%-10%的专属折扣,并获得免费架构评审和中文技术支持。欢迎访问 duoyun.io 了解更多优惠。