10_阿里云应用型负载均衡 ALB 配置指南:从公网入口到后端服务的完整链路
应用型负载均衡 ALB(Application Load Balancer)是阿里云面向 HTTP、HTTPS、QUIC、gRPC 等应用层协议提供的七层负载均衡服务。相比传统四层负载均衡,ALB 更适合需要域名、路径、Header、Cookie、请求方法等条件进行精细化转发的 Web、微服务和云原生业务场景。
本文按真实流量链路组织配置顺序:用户域名 -> DNS 解析 -> ALB 实例 -> 监听 -> 转发规则 -> 服务器组 -> ECS/ECI 后端服务。这样配置时不容易来回跳,也更容易排查问题。
说明:文中的控制台入口和字段名称可能会随阿里云控制台版本微调,实际操作时以控制台当前页面为准。
一、ALB 适合解决什么问题
ALB 的核心价值是把外部请求稳定、可控地转发到后端应用,并在七层完成协议、安全和路由能力的统一治理。
- 七层负载均衡:支持 HTTP、HTTPS、QUIC、gRPC 等应用层协议,适合 Web 应用、API 网关、微服务入口等场景。
- 基于内容的路由:可按域名、路径、HTTP Header、查询字符串、Cookie、请求方法、Source IP 等条件把请求转发到不同服务器组。
- HTTPS 卸载:可在 ALB 侧绑定证书,外部使用 HTTPS 访问,后端按业务需要使用 HTTP 或 HTTPS。
- 高可用入口:公网 ALB 通常绑定多个可用区和 EIP,避免单可用区入口故障。
- 云原生集成:可与 ACK、SAE、函数计算等服务联动,也可作为云原生 Ingress 网关使用。
- 弹性计费:公网访问通过 EIP、共享带宽等方式计费,ALB 本身按实例费、LCU 等维度计费,适合弹性流量场景。
需要注意的是,ALB 并不是“所有网络流量”的通用入口。它主要工作在七层,如果只是 TCP/UDP 四层转发,应优先评估 NLB 或 CLB 的四层能力。
二、先理解一条完整访问链路
在开始配置前,先把链路想清楚:
用户浏览器 -> 访问业务域名 -> DNS 将业务域名 CNAME 到 ALB 提供的 DNS 名称 -> 请求进入 ALB 公网入口 -> ALB 根据监听端口和协议接收请求 -> ALB 根据默认转发动作或转发规则选择服务器组 -> ALB 通过私网访问后端 ECS/ECI 的业务端口 -> 后端应用返回响应后续所有配置都围绕这条链路展开。建议先完成后端应用和端口规划,再创建服务器组、监听和域名解析。
三、配置前准备
1. 明确网络类型
ALB 实例分为公网和私网两类:
| 类型 | 适用场景 | 说明 |
|---|---|---|
| 公网 ALB | 互联网用户访问业务 | 需要绑定 EIP,建议至少选择两个可用区 |
| 私网 ALB | VPC 内部服务访问 | 仅在内网提供访问入口,不直接暴露公网 |
如果业务需要通过互联网访问,例如https://api.example.com,选择公网 ALB。如果只是内网服务间调用,选择私网 ALB。
2. 规划可用区、VPC 和交换机
创建 ALB 时需要选择 VPC、可用区和交换机。建议:
- 生产环境至少选择两个可用区,提高入口层高可用能力。
- 每个可用区选择一个可用 IP 足够的交换机。
- ALB 会在指定交换机内占用私网 IP,建议交换机内预留充足地址,避免后续扩容或健康检查异常。
3. 准备后端服务
后端 ECS/ECI 需要提前确认:
- 应用已经启动,并监听正确端口,例如
10980、10981。 - 应用健康检查路径可访问,例如
/health、/actuator/health。 - 安全组允许 ALB 访问后端业务端口。
- 后端服务与 ALB 在可连通的 VPC 网络内。
4. 准备域名和证书
如果使用 HTTPS:
- 证书必须与实际访问域名匹配,例如访问
api.example.com,证书也应覆盖该域名。 - 如果证书不在当前阿里云账号,需要先上传到当前账号的数字证书管理服务。
- 如果域名和 ALB 不在同一个账号,可能需要进行域名持有者身份校验,通常通过添加 TXT 记录完成。
四、标准配置流程
第一步:创建 ALB 实例
进入阿里云控制台,创建应用型负载均衡 ALB 实例。
建议按以下顺序填写:
- 选择地域:应与后端 ECS/ECI 所在地域一致或满足网络连通要求。
- 选择网络类型:互联网访问选择公网,内网访问选择私网。
- 选择 VPC:选择后端服务所在的 VPC。
- 选择可用区和交换机:生产环境建议至少选择两个可用区。
- 选择协议版本:一般选择 IPv4;如业务需要 IPv6,再按实际情况启用。
- 选择功能版本:如果只是基础 HTTP/HTTPS 转发,基础版通常够用;如果需要重定向、重写、自定义 TLS 安全策略、WAF 增强等高级能力,应根据控制台能力选择标准版或更高版本。
第二步:创建服务器组
服务器组是 ALB 转发流量的后端目标集合。建议按“业务服务 + 端口”拆分服务器组,例如:
| 业务 | 后端端口 | 建议服务器组名称 |
|---|---|---|
| API 服务 | 10980 | sg-api-10980 |
| 管理后台 | 10981 | sg-admin-10981 |
创建服务器组时重点关注以下配置:
- 服务器组类型:ECS/ECI 场景通常选择服务器类型。
- VPC:选择与 ALB、后端服务一致的 VPC。
- 后端协议:根据后端应用实际协议选择 HTTP 或 HTTPS。
- 调度算法:一般选择轮询;如果不同机器承载能力不同,可配合权重使用。
- 健康检查:建议开启,并配置真实可访问的健康检查路径。
修正点:不要简单理解为“监听端口必须等于后端端口”。监听端口是用户访问 ALB 的入口端口,后端端口是 ALB 访问应用的端口。二者可以相同,也可以不同。例如外部访问
443,ALB 卸载 HTTPS 后转发到后端80或10980都是常见做法。
第三步:添加后端服务器
在服务器组中添加一台或多台 ECS/ECI,并填写实际业务端口。
建议配置项:
- 服务器:选择实际部署应用的 ECS/ECI。
- 端口:填写后端应用真实监听端口,例如
10980。 - 权重:默认可保持一致;如果某台机器配置更高,可适当提高权重。
- 健康检查:添加后确认健康检查状态为正常。
如果后端服务器健康检查失败,优先检查以下几点:
- 应用进程是否启动。
- 端口是否监听在正确网卡上。
- 安全组是否放行 ALB 到后端端口的访问。
- 健康检查路径是否返回正常 HTTP 状态码。
- 后端应用是否限制了 Host、Header 或来源 IP。
第四步:创建监听
监听定义 ALB 对外接收请求的协议和端口,例如:
| 外部访问方式 | 监听协议 | 监听端口 | 典型用途 |
|---|---|---|---|
http://example.com | HTTP | 80 | 普通 HTTP 访问或跳转到 HTTPS |
https://example.com | HTTPS | 443 | 标准 HTTPS 访问 |
https://example.com:10980 | HTTPS | 10980 | 非标准 HTTPS 端口访问 |
创建监听时建议按以下顺序:
- 选择协议和端口。
- 如果选择 HTTPS,绑定与业务域名匹配的 SSL 证书。
- 选择默认服务器组,通常指向前面创建的业务服务器组。
- 按需配置 TLS 安全策略、HTTP/2、访问日志、会话保持等能力。
如果业务没有特殊原因,公网 HTTPS 建议优先使用标准443端口。使用10980这类非标准端口也可以,但用户访问时必须显式带端口,例如:
https://api.example.com:10980第五步:配置转发规则
如果一个监听只对应一个后端服务,可以只使用默认转发动作。
如果一个域名或端口下有多个业务路径,则建议配置转发规则,例如:
| 匹配条件 | 转发目标 |
|---|---|
Host = api.example.com且Path = /api/* | sg-api-10980 |
Host = admin.example.com且Path = /admin/* | sg-admin-10981 |
Path = /static/* | 静态资源服务器组 |
配置转发规则时,优先级要从“更具体”到“更通用”。例如/api/order/*应优先于/api/*,否则更具体的规则可能永远匹配不到。
五、配置域名解析
域名解析是很多问题的高发点,尤其需要注意记录值。
1. 找到 ALB 的 DNS 名称
在 ALB 实例详情页找到系统分配的 DNS 名称,也可以理解为 ALB 默认域名。
重要修正:CNAME 记录的记录值应填写ALB 的 DNS 名称/默认域名,不是 ALB 实例 ID。
错误示例:
api.example.com CNAME alb-xxxxxx正确示例:
api.example.com CNAME alb-xxxxxxxx.region.alb.aliyuncs.com具体 DNS 名称以控制台展示为准。
2. 添加 CNAME 记录
在域名 DNS 控制台添加解析:
| 字段 | 示例 |
|---|---|
| 主机记录 | api |
| 记录类型 | CNAME |
| 记录值 | ALB 实例详情页展示的 DNS 名称 |
| TTL | 默认即可 |
配置完成后,可使用以下命令验证:
nslookupapi.example.com或:
digapi.example.com3. 跨账号域名校验
如果域名在 A 账号,ALB 在 B 账号,在 B 账号添加或管理该域名时,可能需要证明你拥有该域名。一般做法是:
- 在 B 账号控制台获取 TXT 校验记录。
- 登录 A 账号的 DNS 控制台。
- 添加对应 TXT 记录。
- 等待校验通过后,再添加 CNAME 解析到 ALB DNS 名称。
六、配置安全组和后端连通性
ALB 能接收请求并不代表一定能访问后端。后端安全组需要允许来自 ALB 的私网访问。
建议按以下原则放行:
- 放行后端真实业务端口,例如
10980、10981。 - 来源优先填写 ALB 所在交换机网段或后端安全组允许的可信网段。
- 不建议为了省事直接对
0.0.0.0/0放行后端业务端口,除非该端口本身就是公网服务且有额外安全控制。
七、访问测试
完成 ALB、监听、服务器组、安全组和 DNS 解析后,可以按以下顺序测试。
1. 测试 DNS 是否生效
nslookupapi.example.com确认返回链路中能看到 ALB 的 CNAME 或相关解析结果。
2. 测试 HTTPS 证书
curl-Ihttps://api.example.com如果使用非标准端口:
curl-Ihttps://api.example.com:10980如出现证书不匹配,检查:
- 访问域名是否在证书 SAN 中。
- 监听绑定的证书是否正确。
- 是否访问了错误的域名或端口。
3. 测试后端转发
curl-ihttps://api.example.com/health如果 ALB 返回 502、503 或健康检查异常,通常从以下方向排查:
- 后端服务器组是否有健康实例。
- 监听默认转发动作是否指向正确服务器组。
- 转发规则优先级是否匹配到预期服务器组。
- 后端端口是否填写正确。
- 安全组是否允许 ALB 访问后端端口。
- 后端应用是否只接受特定 Host 或路径。
八、推荐配置顺序总结
最稳妥的配置顺序如下:
- 准备后端 ECS/ECI 应用,确认端口和健康检查路径可用。
- 创建 ALB 实例,选择公网/私网、VPC、可用区和交换机。
- 创建服务器组,并配置健康检查。
- 添加后端服务器,填写真实业务端口和权重。
- 创建监听,绑定证书,并设置默认服务器组。
- 如有多业务路径或多域名,配置转发规则。
- 配置后端安全组,允许 ALB 访问业务端口。
- 将业务域名 CNAME 到 ALB 的 DNS 名称。
- 使用
nslookup、curl和控制台健康检查状态进行验证。
最终链路可以概括为:
用户 -> 业务域名 -> DNS CNAME 到 ALB DNS 名称 -> ALB 监听端口 -> 监听默认动作或转发规则 -> 服务器组 -> 后端 ECS/ECI 业务端口按照这个顺序配置,思路会更清晰:先保证后端能服务,再让 ALB 能转发,最后再把域名切到 ALB。这样即使出现访问异常,也能沿着链路逐段定位。
参考资料
- 阿里云文档:应用型负载均衡 ALB 产品文档
- 阿里云文档:创建应用型负载均衡 ALB 实例
- 阿里云文档:创建服务器组、添加后端服务器、配置监听和转发规则
- 阿里云文档:使用 CNAME 将业务域名解析到 ALB DNS 名称