企业出海多云负载均衡架构实战:ALB/NLB/CLB 选型、四层七层分流与成本优化完整指南(2026 最新版)
Meta Description: 出海企业多云负载均衡完整指南:阿里云 ALB/NLB/CLB、AWS ALB/NLB/GWLB、腾讯云 CLB 与 Cloudflare 的能力与真实单价对比,LCU 计费模型拆解,四层七层选型决策表、健康检查与故障切换、Terraform 三云配置与成本优化,附完整命令与新加坡价格参考。
> 关键词: 多云负载均衡、ALB/NLB/CLB 选型、LCU 计费、四层七层分流、出海云架构、健康检查与故障切换
前言:先给结论
出海企业的多云架构里,负载均衡(Load Balancer,LB)是唯一一个既在最贵账单里、又在最容易被忽视的名单里的组件。它不像 ECS/CVM 那样一眼看得见算力,也不像对象存储那样按 GB 明码标价,结果就是:很多团队上线半年后才发现自己每月为一堆"空转"的 LB 实例付着比后端服务器更贵的钱。
一句话结论先摆在这里:单台服务器不要买云 LB;有多个后端且需要无感扩缩容时才买;买了之后第一件要做的事是打开 LCU(容量单位)监控,因为 90% 的 LB 超支来自"只按最高维度计费"这个反直觉规则。
本文聚焦流量入口最前面那一层:怎么在阿里云、AWS、腾讯云三家之间选型,四层(L4)和七层(L7)到底该用哪个,LCU 费用怎么算,健康检查怎么做,以及怎么把它接入跨云双活与故障切换。全部单价来自各家官方定价页与计费文档(2026 年 9 月核实,单位 USD),实测命令可直接复制。
一、边界表:本文与你可能已读过的网络文章分工
site7 的网络层文章已经写了七篇,每篇管一层。读错层是选型最大的坑,所以先用一张表把边界划清:
| 站内文章 | 管的层 | 回答的问题 | 与本文的关系 | |---|---|---|---| | 多云 DNS 与全局流量调度 GSLB(08-20) | DNS 解析层 | 用户该被解析到哪个地域/哪朵云 | 本文的上游:GSLB 决定"去哪朵云",LB 决定"给哪个后端" | | 多云网络互通与 Transit 架构(09-04) | 传输层(东西向) | 两朵云的 VPC 怎么打通 | 本文的底座:LB 后端跨云时依赖它 | | 多云服务网格 Istio(08-31) | 应用层(Pod 间) | 微服务之间怎么路由/熔断 | 本文的下一跳:进了集群之后交给它 | | 多云统一出网与私网访问(09-22) | 出口层(南北向向外) | 出网怎么省钱、怎么审计 | 反向:那篇管"出去",本文管"进来" | | 多云 WAF 与 API 网关(08-27) | 应用安全层 | 进来之后怎么防攻击 | 本文的安全搭档:LB 卸载 HTTPS 后交给 WAF | | 多云 DDoS 防护(09-25) | 流量清洗层 | 被打的时候怎么保命 | 本文的前置:高防 IP 在前,LB 在后 | | 本文 | 流量分发层 | 请求到了本朵云之后,怎么分给多个后端 | — |
一句话记住:GSLB 是"去哪家医院",LB 是"挂哪个医生"。两者都叫"负载均衡",但一个在 DNS 层、一个在传输/应用层,不能互相替代。
二、先回答"要不要买":四选一决策
很多出海团队的默认动作是"服务器前面挂一个 ALB",这在单机站场景下是纯亏钱。先做一次四选一判断:
| 方案 | 月成本量级 | 什么时候用 | 什么时候别用 | |---|---|---|---| | DNS 轮询 / GSLB | $0(域名费除外) | 多台机器、无状态、可接受粗暴分流量 | 需要健康检查剔除故障机、需要会话保持 | | 单机 Nginx 反向代理 | 服务器本身成本 | 后端 ≤3 台、流量不高、有运维能力 | 需要跨 AZ 高可用、需要免运维 | | 云厂商 LB(本文主角) | 十几到几百美元 | 后端多、要弹性伸缩、要免运维高可用 | 单台服务器(成本翻数倍且可用性无提升) | | CDN + 源站 | 按流量 | 静态内容为主、全球加速 | 强交互 API、需要 TCP 长连接 |
一个必须记住的边界:单台服务器不要买 LB。以 AWS 为例,如果 LCU 用量落在最低档,ALB 的固定费折算下来约 $16–23/月,而一台轻量 VPS 只要 $5/月——等于成本翻四倍,可用性却是零提升(后端只有一个)。LB 的价值来自"后端有多个、且需要动态增删"。
反过来,只要你的后端是由弹性伸缩组(ASG / ESS / ASG)自动增减的,LB 就是刚需:没有 LB,伸缩出来的机器接不到流量,自动扩缩容等于白花钱。
三、四层 vs 七层:选错了会同时贵和慢
LB 的第一个技术决策是 L4 还是 L7。两者都收"容量单位费",但做的事完全不同:
| 维度 | 四层(L4 / TCP-UDP) | 七层(L7 / HTTP-HTTPS) |
|---|---|---|
| 看得到什么 | IP、端口、TCP 连接 | URL 路径、域名、Header、Cookie |
| 典型场景 | 数据库代理、游戏长连接、MQTT、gRPC | Web API、微服务网关、灰度发布 |
| 健康检查 | TCP 端口探测 / HTTP 探测 | HTTP 状态码 + 响应体内容 |
| 会话保持 | 源 IP 哈希 | Cookie 插入 / 源 IP |
| 路径路由 | ❌ 不支持 | ✅ /api/ 与 /static/ 分流 |
| 证书卸载 | 透传(后端解密)或 SNI 卸载 | 原生卸载 + 自动续期 |
| 延迟开销 | 更低 | 略高(要解析 HTTP) |
| 单连接吞吐 | 更高(百万级并发) | 受 HTTP 解析影响 |
选型口诀:能用 L7 就用 L7,省下的运维和证书管理远比那点延迟值钱;只有"协议不是 HTTP(S)"或"需要百万级长连接"时才退回 L4。
这里有个 L4 容易被忽略的坑:L4 的"源 IP 透传"在 AWS NLB 上默认就有,但阿里云 NLB 与腾讯云 CLB 的四层监听需要显式开启"保持客户端源 IP",否则后端日志里全是 LB 的 IP,风控与审计直接失效。
四、三云产品家族映射:名字不一样,东西是一回事
第一次做多云选型最容易被命名搞晕。下面这张表把三家(外加 GCP 与 Cloudflare)的产品按"层"对齐:
| 层 | 阿里云国际版 | AWS | 腾讯云国际版 | Google Cloud | Cloudflare | |---|---|---|---|---|---| | 七层应用型 | ALB(应用型负载均衡) | ALB(Application LB) | CLB(HTTP/HTTPS 监听) | Global External HTTP(S) LB | Load Balancing | | 四层网络型 | NLB(网络型负载均衡) | NLB(Network LB) | CLB(TCP/UDP 监听) | External TCP/UDP Network LB | ❌ 不卸载四层 | | 四层经典款 | CLB(传统型,仅按量) | CLB(Classic,存量) | CLB 共享型(无 LCU 费) | — | — | | 网关型 | 无独立产品(用 NLB 替代) | GWLB(Gateway LB) | 无独立产品 | — | — | | DNS 层调度 | 云解析 GSLB | Route 53 | DNSPod | Cloud DNS | LB + 地理路由 |
三条映射结论:
1. 腾讯云没有独立的应用型/网络型产品线,ALB 与 NLB 的能力都压在 CLB 上,靠"监听器类型"区分。选型时看监听器协议,不要看产品名。 2. 网关型(GWLB)是 AWS 独有,主要用于把防火墙/DPI 设备插入流量路径(GWLB Endpoint + 第三方 appliance),阿里云与腾讯云没有对等产品,多云统一架构里要单独处理。 3. Cloudflare 只做 L7(DNS/边缘层),天然跨云、无实例费,但不卸载四层长连接、不含带宽费,适合放在最外层做"跨云流量调度",不能替代云内 LB。
五、总体架构:一张 mermaid、一张 ASCII
5.1 mermaid 流量路径图(请求从用户到后端的完整旅程)
`mermaid
graph TD
U[用户 全球] --> DNS[DNS/GSLB 解析层]
DNS -->|就近/健康| CF[Cloudflare 边缘 L7 调度]
CF --> WAF[高防IP + WAF 清洗]
WAF --> LB1[云A: ALB 七层入口]
WAF --> LB2[云B: ALB 七层入口]
LB1 -->|RDS 100%| TG1[云A 后端组 ASG/ESS]
LB1 -->|10% 灰| TG2[云B 后端组]
LB2 --> TG2
TG1 --> SVC1[应用服务/Pod]
TG2 --> SVC2[应用服务/Pod]
SVC1 --> MESH[Istio 服务网格 服务间路由]
SVC2 --> MESH
`
(说明:md2html 不支持 fenced code,mermaid 会在页面上以纯文本行展示,这是本站企业级文章的统一约定,不影响内容可读性。)
5.2 ASCII 物理拓扑全景图(双云 + 统一入口)
`
┌──────────────────────────────────────────────┐
│ 全球用户 (DNS 解析) │
└───────────────────┬──────────────────────────┘
│
┌───────────────────▼──────────────────────────┐
│ Cloudflare / 高防 IP (L7 边缘调度 + 清洗) │
│ 健康检查 · 地理路由 · A/B · DDoS 吸收 │
└───────┬───────────────────────────┬──────────┘
│ │
┌─────────────────▼──────────┐ ┌────────────▼──────────────┐
│ 阿里云 新加坡 (主) │ │ AWS 新加坡 (备/双活) │
│ ┌────────────────────────┐ │ │ ┌─────────────────────┐ │
│ │ ALB (L7 HTTPS 卸载) │ │ │ │ ALB (L7 HTTPS 卸载) │ │
│ │ 实例费+LCU │ │ │ │ 实例费+LCU │ │
│ └───────┬────────────────┘ │ │ └──────┬──────────────┘ │
│ │ 健康检查 /healthz │ │ │ 健康检查 │
│ ┌───────▼────────────────┐ │ │ ┌──────▼──────────────┐ │
│ │ 后端组: ESS 弹性伸缩 │ │ │ │ 后端组: ASG 弹性伸缩 │ │
│ │ ECS × 3 (跨 2 AZ) │ │ │ │ EC2 × 3 (跨 2 AZ) │ │
│ └───────┬────────────────┘ │ │ └──────┬──────────────┘ │
│ │ │ │ │ │
│ ┌───────▼────────────────┐ │ │ ┌──────▼──────────────┐ │
│ │ RDS / PolarDB (主库) │ │ │ │ RDS (只读/灾备) │ │
│ └────────────────────────┘ │ │ └─────────────────────┘ │
└──────────────────────────────┘ └───────────────────────────┘
▲ ▲
└──── CEN / Transit / 跨云 VPN ────┘
(承载 LB 后端跨云同步/管理流量)
`
架构三原则:
1. LB 只放"有多个后端"的地方。单后端引 LB 是纯成本。 2. 每朵云的 LB 只服务本朵云的后端,跨云切换由上游 GSLB/DNS 完成(把云 B 的 LB 当云 A 的"后端"会让故障域扩散、延迟不可控)。 3. LB 与弹性伸缩组必须联动:实例注册/注销由伸缩组自动完成,不要手工维护后端 IP 列表。
六、LCU 计费模型拆解:为什么你的账单总是超预期
这一节是全文最重要的部分。三家云(AWS/Aliyun/腾讯)的 LB 计费结构高度相似——都是"固定实例费 + 容量单位费",但容量单位的计算规则里藏着三个反直觉的点。
6.1 容量单位(LCU)是什么
LCU 不是"每秒请求数",而是一个四维取最大值的复合指标。以 AWS ALB 的定义为例(三家口径几乎一致):
| 维度 | AWS ALB 的 1 个 LCU 折算 | 阿里云 LCU 系数 | 腾讯云 LCU 系数 | |---|---|---|---| | 新建连接 | 25 个/秒 | 25 个/秒 | HTTP 25 / TCP 800 / UDP 400 个每秒 | | 活跃连接 | 3,000 个/分钟 | 3,000 个/分钟 | HTTP 3,000 / TCP 100,000 并发 | | 处理流量 | 1 GB/小时 | 1 GB/小时 | 1 GB/小时 | | 规则求值 | 1,000 个/秒 | 1,000 个/秒 | 1,000 个/秒 |
关键规则:只按最高的那一维计费,四个维度不累加。 这是好消息,也是坏消息——好消息是你不用为"四个都低"付四次钱;坏消息是只要有一个维度飙高,账单就跟着飙,其他维度再低也救不回来。
6.2 三个反直觉的计费事实
事实一:规则数会偷偷变成计费维度。 当你的 LB 上配了大量路径路由规则,且 QPS 又高时,"规则求值/秒"可能成为最高维度。各家都给了免费额度:阿里云 ALB/CLB 前 25 条规则求值免费,AWS 与腾讯云是前 10 条。跨厂商对比时这是一个可写差异点——规则多且 QPS 高的业务,阿里云的免费额度更宽松。
事实二:闲置照样计费。 阿里云官方口径明确:只要 ALB 实例不释放,即使后端全部摘除、实例完全空闲,实例费仍按小时收。这意味着"为双活演练临时建的 LB"如果忘了释放,会一直扣钱。
事实三:L7 的"数据处理量"是双向的。 在 Google Cloud 的模型里,区域数据处理费 $0.008/GiB 且入向与出向各计一次,等于实际按 2 倍流量计。GCP 官方给的降本路径也很直白:用 Cloud CDN 把静态内容挡在 LB 之外、用 Cloud Armor 把垃圾流量挡在 LB 之外——不过 LB 的流量不计费。
6.3 三家 LCU 单价速查(USD,2026-09 官方口径)
| 产品 | 实例费(每小时) | 容量单位费 | 其他必付项 | |---|---|---|---| | 阿里云 ALB(基础/标准/WAF 版) | 0.007 / 0.021 / 0.035 | 0.007/LCU | 出网数据费(走 EIP) | | 阿里云 NLB | 0.02 | 0.005/LCU | 出网数据费 | | 阿里云 CLB(传统型,仅按量) | 0.021 | 0.007/LCU | 公网 IP 保留费 + 公网费 | | AWS ALB | 0.0225 | 0.008/LCU | 出网数据费 | | AWS NLB | 0.0225 | 0.006/NLCU | 出网数据费 | | AWS GWLB | 0.0125 | 0.004/GLCU | 端点 $0.01/小时/AZ + $0.0035/GB | | 腾讯云 CLB(LCU 型) | 需登录购买页 | 0.0072/LCU | 公网网络费 + 跨地域绑定费 |
读表要注意:三家官网的"官方算例"流量模型各不相同,直接比算例金额没有意义。下面这张表是把各家官网算例原文照录,仅供看数量级:
| 场景 | 阿里云算例折算 | AWS 官方算例 | 腾讯云官方算例 | |---|---|---|---| | L7 轻量场景 | ALB ≈ $23/月(含实例费 + 基础 LCU) | ALB $22.42/月(1 新连接/秒、5 请求/秒、300KB/秒、60 规则) | HTTP 6 LCU → $31.10/月 | | L4 轻量场景 | NLB ≈ $17/月 | NLB $20.86/月(1 新 TCP 连接/秒、300KB/秒) | TCP+UDP 各 0.36 LCU → 合计 $3.73/月 | | 网关型 | — | GWLB $12.10/月 | — |
⚠️ 免责声明:以上为各家官网示例流量的折算,流量模型不同、地域不同,只看数量级不要横向硬比;实际以官网实时报价与计费文档为准。腾讯云 CLB 的实例费未在公开文档中给出,表格中标注"以购买页为准(需登录)"。
七、能力对比:五家 LB 横向对比表
选型时除了价格,还要看能力边界。下表按 12 个维度横向拉平(✅ 原生支持 / ⚠️ 需配置或有限 / ❌ 不支持):
| 维度 | 阿里云 ALB/NLB | AWS ALB/NLB | 腾讯云 CLB | Google Cloud LB | Cloudflare LB | |---|---|---|---|---|---| | L7 路径路由 | ✅ | ✅ | ✅ | ✅ | ✅ | | L4 长连接卸载 | ✅(NLB) | ✅(NLB) | ✅(TCP 监听) | ⚠️(Network LB) | ❌ | | 证书自动续期 | ✅ | ✅(ACM) | ✅ | ✅(Google 托管证书) | ✅ | | WebSocket/HTTP2 | ✅ | ✅ | ✅ | ✅ | ✅ | | gRPC 支持 | ✅ | ✅ | ✅ | ✅ | ⚠️ | | 源 IP 透传 | ⚠️ 需开启 | ✅ 默认(NLB) | ⚠️ 需开启 | ✅ | 天然(XFF) | | 会话保持 | ✅ Cookie/源 IP | ✅ | ✅ | ✅ | ✅ | | WAF 原生集成 | ✅(ALB WAF 版) | ✅(WAF 关联) | ✅ | ✅(Cloud Armor) | ✅(自带) | | 跨 AZ 自动 HA | ✅ | ✅ | ✅ | ✅ | N/A(边缘) | | 跨地域/跨云 | ⚠️ 多可用区 | ⚠️ 多可用区 | ✅ 跨地域绑定 | ✅ 全域转发 | ✅ 天然跨云 | | 免费规则额度 | 25 条 | 10 条 | 10 条 | 按规则计费 | 按 healthcheck 计 | | 无实例费选项 | ❌ | ❌ | ⚠️(共享型无 LCU) | ❌ | ✅($5/月起) |
四条选型结论:
1. 纯 AWS 单云 → ALB(L7)+ NLB(L4 或需要固定 IP/超高性能时)(组合最成熟,GWLB 还能插安全设备)。 2. 纯阿里云 → ALB(L7)+ NLB(L4)(规则免费额度最大,适合路径路由规则多的业务)。 3. 纯腾讯云 → CLB 一族按监听器协议选,注意区分"LCU 型"与"共享型"实例(共享型无 LCU 费,但规格受限)。 4. 多云跨云统一入口 → Cloudflare Load Balancing 放在最外层做跨云调度,各云内再用原生 LB 管本云后端。这是"云中立入口"的最省钱组合:CF 起步价 $5/月、无实例费、天然跨云,不占任何云上资源。
八、实操:三云创建 LB 与挂载后端
以下命令均为官方 API 口径,变量用大写占位符(<REGION>、<VPC_ID> 等)替换。
8.1 AWS:ALB 从创建到挂载
`bash
// 1. 创建 ALB(七层,跨 2 个公网子网)
aws elbv2 create-load-balancer \
--name prod-alb \
--type application \
--scheme internet-facing \
--subnets subnet-aaaa subnet-bbbb \
--security-groups sg-0123456789 \
--region <REGION>
// 2. 创建目标组(含健康检查路径与间隔) aws elbv2 create-target-group \ --name prod-tg \ --protocol HTTP --port 8080 \ --vpc-id <VPC_ID> \ --health-check-path /healthz \ --health-check-interval-seconds 15 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 3 \ --region <REGION>
// 3. 创建 HTTPS 监听器(证书走 ACM) aws elbv2 create-listener \ --load-balancer-arn <ALB_ARN> \ --protocol HTTPS --port 443 \ --certificates CertificateArn=<ACM_ARN> \ --default-actions Type=forward,TargetGroupArn=<TG_ARN> \ --region <REGION>
// 4. 创建 HTTP 监听器 301 跳转到 HTTPS
aws elbv2 create-listener \
--load-balancer-arn <ALB_ARN> \
--protocol HTTP --port 80 \
--default-actions 'Type=redirect,RedirectConfig={Protocol=HTTPS,Port=443,StatusCode=HTTP_301}' \
--region <REGION>
`
要点:ALB 最少跨 2 个可用区(否则创建失败);健康检查路径要独立于业务逻辑(/healthz 只探依赖连通性,别做重查询),否则健康检查会变成自我 DDoS。
8.2 阿里云:ALB 创建与后端注册
`bash
// 1. 创建 ALB 实例(负载均衡版,按量付费)
aliyun alb CreateLoadBalancer \
--LoadBalancerName prod-alb \
--AddressType Internet \
--LoadBalancerBillingConfig '{"PayType":"PostPay"}' \
--VpcId <VPC_ID> \
--ZoneMappings '[{"VSwitchId":"<VSW_A>","ZoneId":"<ZONE_A>"},{"VSwitchId":"<VSW_B>","ZoneId":"<ZONE_B>"}]'
// 2. 创建服务器组 aliyun alb CreateServerGroup \ --ServerGroupName prod-sg \ --VpcId <VPC_ID> \ --Protocol HTTP --HealthCheckConfig '{"HealthCheckEnabled":true,"HealthCheckPath":"/healthz","HealthCheckInterval":15}'
// 3. 注册后端(ECS 实例) aliyun alb AddServersToServerGroup \ --ServerGroupId <SG_ID> \ --Servers '[{"ServerId":"i-xxxx","ServerType":"Ecs","Port":8080,"Weight":100}]'
// 4. 创建 HTTPS 监听并绑定证书
aliyun alb CreateListener \
--LoadBalancerId <ALB_ID> \
--ListenerPort 443 --ListenerProtocol HTTPS \
--Certificates '[{"CertificateId":"<CERT_ID>"}]' \
--DefaultActions '[{"Type":"ForwardGroup","ForwardGroupConfig":{"ServerGroupTuples":[{"ServerGroupId":"<SG_ID>"}]}}]'
`
要点:阿里云 ALB 用"服务器组(ServerGroup)"概念,一个组可以有多个监听引用;后端是 ECS 实例 ID 而非 IP,弹性伸缩组里的机器会自动加入。
8.3 腾讯云:CLB 创建与监听配置
`bash
// 1. 创建 CLB(公网、按量、跨 2 个可用区)
tccli clb CreateLoadBalancer \
--LoadBalancerType OPEN \
--LoadBalancerName prod-clb \
--VpcId <VPC_ID> \
--SubnetId <SUBNET_ID> \
--MasterZoneId ap-singapore-1 \
--BackupZoneId ap-singapore-2 \
--InternetAccessible '{"InternetChargeType":"BANDWIDTH_POSTPAID_BY_HOUR","InternetMaxBandwidthOut":100}'
// 2. 创建 HTTPS 七层监听器(证书绑定的 CLB 要选 HTTPS) tccli clb CreateListener \ --LoadBalancerId <CLB_ID> \ --Ports.0 443 \ --Protocol HTTPS \ --Certificate '{"SSLMode":"UNIDIRECTIONAL","CertId":"<CERT_ID>"}' \ --HealthCheck '{"HealthSwitch":1,"IntervalTime":15,"HealthNum":2,"UnHealthNum":3,"HttpCheckPath":"/healthz"}'
// 3. 注册后端 CVM
tccli clb RegisterTargetsWithClassicalLB \
--LoadBalancerId <CLB_ID> \
--Targets.0 InstanceId=ins-xxxx --Targets.0 Port=8080 --Targets.0 Weight=100
`
要点:腾讯云要用 --MasterZoneId + --BackupZoneId 显式指定多可用区;InternetChargeType 决定带宽计费方式(按带宽包月 vs 按流量),这一步选错会在后面收到一笔意外的公网费。
九、Terraform 三云骨架:LB 即代码
手工创建的 LB 在灾备重建时是最大的坑——生产建议全部 IaC 化。以下是三云最小骨架(Terraform 语法,注释已移到正文以免渲染成标题):
AWS 侧(ALB + 目标组 + 监听器 + 健康检查):
`hcl
resource "aws_lb" "prod" {
name = "prod-alb"
internal = false
load_balancer_type = "application"
security_groups = [aws_security_group.alb.id]
subnets = var.public_subnet_ids
enable_deletion_protection = true
}
resource "aws_lb_target_group" "prod" { name = "prod-tg" port = 8080 protocol = "HTTP" vpc_id = var.vpc_id
health_check { path = "/healthz" interval = 15 healthy_threshold = 2 unhealthy_threshold = 3 matcher = "200" } }
resource "aws_lb_listener" "https" { load_balancer_arn = aws_lb.prod.arn port = 443 protocol = "HTTPS" ssl_policy = "ELBSecurityPolicy-TLS13-1-2-2021-06" certificate_arn = var.acm_cert_arn
default_action {
type = "forward"
target_group_arn = aws_lb_target_group.prod.arn
}
}
`
阿里云侧(三资源联动):
`hcl
resource "alicloud_alb_load_balancer" "prod" {
load_balancer_name = "prod-alb"
address_type = "Internet"
vpc_id = var.vpc_id
load_balancer_billing_config {
pay_type = "PostPay"
}
zone_mappings {
vswitch_id = var.vswitch_a
zone_id = var.zone_a
}
zone_mappings {
vswitch_id = var.vswitch_b
zone_id = var.zone_b
}
}
resource "alicloud_alb_server_group" "prod" { server_group_name = "prod-sg" vpc_id = var.vpc_id protocol = "HTTP"
health_check_config {
health_check_enabled = true
health_check_path = "/healthz"
health_check_interval = 15
}
}
`
腾讯云侧(CLB + 监听器):
`hcl
resource "tencentcloud_clb_instance" "prod" {
clb_name = "prod-clb"
network_type = "OPEN"
vpc_id = var.vpc_id
master_zone_id = "ap-singapore-1"
backup_zone_id = "ap-singapore-2"
internet_charge_type = "BANDWIDTH_POSTPAID_BY_HOUR" internet_max_bandwidth_out = 100 }
resource "tencentcloud_clb_listener" "https" { clb_id = tencentcloud_clb_instance.prod.id listener_name = "https-443" port = 443 protocol = "HTTPS" certificate_id = var.cert_id
health_check_switch = true
health_check_interval = 15
health_check_health_num = 2
health_check_unhealth_num = 3
health_check_http_path = "/healthz"
}
`
三条 IaC 纪律:
1. enable_deletion_protection = true(AWS)能防止误删生产 LB;阿里云/腾讯云对应"删除保护"开关,务必打开。
2. 健康检查参数必须显式写死,不要依赖默认值——各家默认间隔/阈值不同,跨云排障时"为什么云 A 3 秒摘除、云 B 30 秒才摘除"就是这里来的。
3. LB 的 IaC 与伸缩组的 IaC 放在同一个 State 里(或用 remote_state 引用),否则伸缩组注册到 LB 的绑定关系会在两次 apply 之间漂移。
十、成本优化:把 LB 账单压下来六种手段
LB 的钱分两块:固定实例费(几乎不可优化,除非换产品)和容量单位费(可优化空间大)。按收益从高到低排序:
| 手段 | 做法 | 预期效果 | 注意 | |---|---|---|---| | 1. 静态内容交给 CDN | 图片/CSS/JS 走 CDN,源站只在回源时才走 LB | processed-bytes 维度可降 50–80% | CDN 缓存策略要配好,否则回源率不降 | | 2. 垃圾流量挡在 LB 之外 | 高防 IP / WAF / Cloud Armor 前置清洗 | 恶意流量不占 LCU | LB 前的清洗层本身也有成本,算总账 | | 3. 合并 LB 实例 | 多个业务共用一个大 ALB,用路径规则分流 | 省 N-1 份实例费 | 免费规则额度只有 10–25 条,规则别爆 | | 4. 精简规则数 | 把 200 条精确路径合并成前缀规则 | 规则求值维度下降 | 改规则要先压测,别改错路由 | | 5. 承诺用量折扣 | AWS ALB 可预留 LCU(官方算例:200 LCU-小时 $1.60/小时) | 高流量场景省 30%+ | 预留不足要按 $0.008 照付,预测要准 | | 6. 关掉闲置 LB | 释放演练/测试环境的 LB | 直接归零 | 闲置也计费,这是最容易漏的一笔 |
一个必须内化的成本直觉:LB 的实例费是"按小时乘 720"。所以任何"临时建一个 LB 试试"的操作,如果忘了释放,一个月后就是 0.021 × 720 ≈ $15 到 0.035 × 720 ≈ $25。建立"临时资源打 expire-at 标签 + 到期告警"的习惯(标签治理的细节见 09-24 架构治理篇)。
关于跨云流量费:LB 后端如果跨云(云 A 的 LB 转发到云 B 的后端),流量会走跨云链路——这笔跨云数据传输费通常比 LB 本身贵。所以架构上应坚持"每朵云的 LB 只服务本朵云后端"(见第五节架构三原则),跨云只做故障切换、不做常态分流。
十一、健康检查与故障切换:跨云双活的关键一环
LB 的健康检查是"自动故障转移"的触发器。做跨云双活时,检查策略需要分两层设计:
| 检测层 | 检测者 | 检测对象 | 动作 | |---|---|---|---| | 应用层(本云内) | 云 LB 健康检查 | 单个后端实例 | 摘除故障实例,流量给健康实例 | | 地域/云层(跨云) | GSLB / Cloudflare 健康检查 | 整朵云的入口(LB 的公网地址) | 整朵云不可用时,DNS 解析切到另一朵云 |
配置要点(以下为通用逻辑,注意各家默认值不同,必须显式对齐):
- 健康检查端点要轻:/healthz 只做"进程活着 + 关键依赖可达"判断,不要在里面查数据库做聚合。
- 阈值要错开:本云摘除阈值为 2 次失败 / 间隔 15 秒(约 30 秒摘除),跨云切换阈值设为 3 次失败 / 间隔 30 秒(约 90 秒切换)。先摘除坏的实例,再切整朵云,避免"一台机器抖动导致全站切云"。
- 检查路径返回码要精确:只把 200 视为健康(matcher = "200"),不要接受 3xx——否则一个错误的 301 跳转会让 LB 认为后端健康,实际用户拿到的是跳转死循环。
- 灰度与故障切换共用一条链路:用 LB 的加权转发(云 A 90% / 云 B 10%)做跨云灰度,参数与故障切换是同一套权重配置,演练时不要另建通道。
跨云故障切换的验证方法:定期做"摘除演练"——手工把云 A 的 LB 后端全部下线,观察 DNS/GSLB 是否按预期在 90 秒内切到云 B,并检查 RTO 实测值(灾备编排的自动化脚本见 08-28 灾备篇)。
十二、安全:LB 是 HTTPS 卸载点,也是攻击面
LB 是流量入口,安全上有四个必做项:
1. HTTPS 全站卸载,HTTP 强制 301:证书统一在 LB 层管理(AWS ACM / 阿里云 SSL 证书 / 腾讯云证书管理),后端只跑 HTTP,证书生命周期一处续期。
2. TLS 版本下限提到 1.2,优先 1.3:AWS 用 ELBSecurityPolicy-TLS13-1-2-2021-06,阿里云/腾讯云在监听器里选 TLS 1.2+ 策略。禁用 TLS 1.0/1.1 是合规审计的常见检查项。
3. LB 后面必须接 WAF:LB 卸载 HTTPS 后,L7 规则(SQL 注入、XSS、CC 攻击)交给 WAF 处理(多云 WAF 统一策略见 08-27 WAF/API 网关篇)。
4. 源站 IP 要隐藏:后端安全组只放行来自 LB 安全组的流量,禁止后端持有公网 IP。后端一旦有公网 IP,LB 就形同虚设——攻击者可以绕过 WAF 直连后端。
另外,LB 的访问日志(ALB access log / CLB 日志)应投递到集中日志平台(SLS / CloudWatch / CLS),它同时是安全审计数据源和性能分析数据源(可观测性架构见 08-16 篇)。
十三、参考价格表(新加坡区域,USD)
下表用于出海业务的量级估算,实际以官网实时报价为准:
| 计费项 | 阿里云国际版 | AWS | 腾讯云国际版 | |---|---|---|---| | L7 LB 实例费 | ALB 0.007–0.035/小时 | ALB 0.0225/小时 | 以购买页为准(需登录) | | L4 LB 实例费 | NLB 0.02/小时 | NLB 0.0225/小时 | 以购买页为准 | | L7 容量费 | 0.007/LCU | 0.008/LCU | 0.0072/LCU | | L4 容量费 | 0.005/LCU | 0.006/NLCU | 0.0072/LCU | | 免费规则额度 | 25 条 | 10 条 | 10 条 | | 公网 IP 保留费 | CLB 0.006/小时(新加坡) | 含在实例费 | 计在公网网络费 | | 公网出流量 | 走 EIP 计费 | 走 EIP 计费 | 0.081/GB(新加坡) | | 承诺用量折扣 | 资源包(如有) | 预留 LCU $1.60/小时(200 LCU 档) | — | | 起步替代方案 | — | — | Cloudflare LB $5/月起(跨云) |
腾讯云公网费地域表(USD/GB,写预算时极值差近 1 倍):弗吉尼亚/克雷塔罗 0.075 · 硅谷/法兰克福/新山 0.077 · 新加坡 0.081 · 曼谷/孟买 0.100 · 利雅得 0.117 · 香港 0.120 · 东京/大阪 0.130 · 圣保罗 0.150。
阿里云公网 IP 保留费地域表(USD/IP/小时):中国大陆 0.003 · 硅谷/弗吉尼亚/墨西哥 0.005 · 新加坡/法兰克福/曼谷/雅加达/吉隆坡/马尼拉/伦敦 0.006 · 沙特 0.008 · 香港/东京/迪拜/首尔 0.009。
十四、90 天落地路线
| 阶段 | 时间 | 关键动作 | 验收口径 | |---|---|---|---| | 摸底 | 第 1–2 周 | 盘点现有 LB:谁在用、后端几个、LCU 用量、有无闲置 | 每台 LB 都能回答"为谁服务、后端几个" | | 收口 | 第 3–6 周 | 单后端 LB 下线、闲置 LB 释放、静态内容迁 CDN | LB 月账单下降,无单后端 LB | | 标准化 | 第 7–10 周 | 健康检查参数统一、TLS 策略统一、IaC 化 | 三云健康检查阈值对齐、无手工创建的 LB | | 高可用 | 第 11–13 周 | 跨云 GSLB 前置、故障切换演练、LB 接入可观测 | RTO 实测达标、演练报告留档 |
常见问题 FAQ
Q1:我已经有单机 Nginx,还需要买云 LB 吗? 不需要。单机 Nginx 反代能覆盖后端 ≤3 台、流量不高的场景,成本只是服务器本身。只有当后端数量会动态变化(弹性伸缩)或需要跨可用区自动高可用时,云 LB 的免运维价值才能盖过它的实例费。 判断标准很简单:如果你的服务器从来不会因为流量自动增减,就先别买。
Q2:ALB 和 NLB 到底该用哪个? 默认选 ALB(七层)。只有三种情况退回 NLB(四层):一是协议不是 HTTP(S)(数据库代理、MQTT、部分 gRPC 场景);二是需要固定/弹性 IP 或百万级并发长连接;三是需要在 LB 后面插安全设备(AWS 用 GWLB)。七层换来的是路径路由、证书卸载、会话保持这些"省运维"的能力,绝大多数 Web 业务都该吃这个红利。
Q3:为什么我的 LB 账单比服务器还贵? 三个最常见原因:一是 LB 上只挂了一台后端(成本翻数倍、可用性零提升);二是"闲置也计费"被忽略(实例不释放就一直按小时扣);三是规则数太多导致"规则求值"成为 LCU 最高维度。先查 LCU 四个维度里哪个最高,再对症下药。
Q4:LCU 是怎么算的?会不会四个维度叠加收费? 不会叠加。LCU 是四维取最大值:新建连接数、活跃连接数、处理流量、规则求值,四个维度各自折算成一个数,取最大的那个作为计费依据。所以"四维都低"最省钱,"三维低一维高"照样按高的一维付钱。
Q5:跨云双活时,能不能让云 A 的 LB 直接转发到云 B 的后端? 技术上可以做(LB 支持 IP 类型后端),但不推荐作为常态方案:一是流量走跨云链路,跨云数据传输费通常比 LB 本身贵;二是故障域会扩散(跨云链路抖动会同时影响两朵云)。正确做法是每朵云的 LB 只服务本云后端,跨云切换交给上游 DNS/GSLB。
Q6:健康检查配几秒合适?会不会太频繁打挂后端?
本云内建议 间隔 15 秒 / 连续 2 次失败摘除(约 30 秒摘除),跨云层 间隔 30 秒 / 连续 3 次失败切换。关键是健康检查端点要极轻(只探进程和关键依赖),不要在里面做复杂查询——健康检查本身变成压力的案例非常常见。
Q7:腾讯云 CLB 的实例费为什么在文档里查不到? 腾讯云 CLB 的实例费未在公开计费文档中给出,需登录购买页查看。写作与预算时不要用记忆里的价格补齐,表格里如实标注"以购买页为准(需登录)"。这也是为什么本站给出的腾讯云单价只有 LCU 费($0.0072/LCU,来自官方计费算例反推)和公网费(地域表)。
Q8:多云场景下,用 Cloudflare Load Balancing 能不能替代各云的 LB? 不能完全替代,但可以放在最外层做跨云调度。Cloudflare LB 只做 L7(DNS/边缘层)分流,不卸载四层长连接、不含带宽与服务器费用。最省钱的组合是:CF 在最外层做跨云/地理路由,各朵云内用原生 LB 管本云后端。CF 起步价 $5/月、无实例费、不占云资源,是"云中立入口"性价比最高的选择。
Q9:LB 的 IaC 和弹性伸缩组的 IaC 要不要放一起?
要。如果 LB 与伸缩组分属两个 State,两次 apply 之间后端注册关系会漂移(伸缩组扩出来的机器不一定被 LB 认到)。用同一个 State,或用 remote_state/数据源显式引用,保证"实例创建"和"实例注册到 LB"是原子操作。
总结
企业出海的多云负载均衡,说到底就四句话:
1. 先判断要不要买:单后端不买,多后端+弹性伸缩才买。LB 的价值来自"后端会变"。 2. 先选层再选产品:默认七层,只有非 HTTP 或百万级长连接才退回四层。三家的产品名不同但能力对齐,别被命名搞晕。 3. 先看 LCU 再谈优化:四维取最大值、闲置照样计费、规则数会变成计费维度——这三条决定了 90% 的超支。 4. 入口分层设计:Cloudflare/GSLB 在最外层决定"去哪朵云",各云内原生 LB 决定"给哪个后端",两层职责不要混。
把这四件事做对,LB 就从"账单里说不清的一笔"变成可控、可观测、可切换的架构组件。
> 🚀 企业出海需要云架构咨询?通过 7.chengzicloud.cloud 联系我们,获取专属方案。我们提供多云负载均衡选型、跨云双活架构设计与成本优化的一站式咨询。
相关阅读
- 多云 DNS 与全局流量调度 GSLB 实战 — LB 的上游:用户该被解析到哪朵云 - 多云网络互通与 Transit 架构实战 — LB 后端跨云时的传输底座 - 多云 WAF 与 API 网关安全架构 — LB 卸载 HTTPS 后的安全搭档 - 海外云服务器成本优化:预留+Spot+自动伸缩组合策略 — LB 后端伸缩组的成本侧 - 多云灾备编排与自动化切换实战 — 健康检查触发的跨云切换落地 - 企业出海多云 DDoS 防护架构实战 — LB 前置的流量清洗层
> 本文由 7.chengzicloud.cloud 提供,点击访问首页了解更多