三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

10_阿里云应用型负载均衡 ALB 配置指南:从公网入口到后端服务的完整链路

10_阿里云应用型负载均衡 ALB 配置指南:从公网入口到后端服务的完整链路

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,建议至少选择两个可用区
私网 ALBVPC 内部服务访问仅在内网提供访问入口,不直接暴露公网

如果业务需要通过互联网访问,例如https://api.example.com,选择公网 ALB。如果只是内网服务间调用,选择私网 ALB。

2. 规划可用区、VPC 和交换机

创建 ALB 时需要选择 VPC、可用区和交换机。建议:

  • 生产环境至少选择两个可用区,提高入口层高可用能力。
  • 每个可用区选择一个可用 IP 足够的交换机。
  • ALB 会在指定交换机内占用私网 IP,建议交换机内预留充足地址,避免后续扩容或健康检查异常。

3. 准备后端服务

后端 ECS/ECI 需要提前确认:

  • 应用已经启动,并监听正确端口,例如1098010981
  • 应用健康检查路径可访问,例如/health/actuator/health
  • 安全组允许 ALB 访问后端业务端口。
  • 后端服务与 ALB 在可连通的 VPC 网络内。

4. 准备域名和证书

如果使用 HTTPS:

  • 证书必须与实际访问域名匹配,例如访问api.example.com,证书也应覆盖该域名。
  • 如果证书不在当前阿里云账号,需要先上传到当前账号的数字证书管理服务。
  • 如果域名和 ALB 不在同一个账号,可能需要进行域名持有者身份校验,通常通过添加 TXT 记录完成。

四、标准配置流程

第一步:创建 ALB 实例

进入阿里云控制台,创建应用型负载均衡 ALB 实例。

建议按以下顺序填写:

  1. 选择地域:应与后端 ECS/ECI 所在地域一致或满足网络连通要求。
  2. 选择网络类型:互联网访问选择公网,内网访问选择私网。
  3. 选择 VPC:选择后端服务所在的 VPC。
  4. 选择可用区和交换机:生产环境建议至少选择两个可用区。
  5. 选择协议版本:一般选择 IPv4;如业务需要 IPv6,再按实际情况启用。
  6. 选择功能版本:如果只是基础 HTTP/HTTPS 转发,基础版通常够用;如果需要重定向、重写、自定义 TLS 安全策略、WAF 增强等高级能力,应根据控制台能力选择标准版或更高版本。

第二步:创建服务器组

服务器组是 ALB 转发流量的后端目标集合。建议按“业务服务 + 端口”拆分服务器组,例如:

业务后端端口建议服务器组名称
API 服务10980sg-api-10980
管理后台10981sg-admin-10981

创建服务器组时重点关注以下配置:

  1. 服务器组类型:ECS/ECI 场景通常选择服务器类型。
  2. VPC:选择与 ALB、后端服务一致的 VPC。
  3. 后端协议:根据后端应用实际协议选择 HTTP 或 HTTPS。
  4. 调度算法:一般选择轮询;如果不同机器承载能力不同,可配合权重使用。
  5. 健康检查:建议开启,并配置真实可访问的健康检查路径。

修正点:不要简单理解为“监听端口必须等于后端端口”。监听端口是用户访问 ALB 的入口端口,后端端口是 ALB 访问应用的端口。二者可以相同,也可以不同。例如外部访问443,ALB 卸载 HTTPS 后转发到后端8010980都是常见做法。


第三步:添加后端服务器

在服务器组中添加一台或多台 ECS/ECI,并填写实际业务端口。

建议配置项:

  • 服务器:选择实际部署应用的 ECS/ECI。
  • 端口:填写后端应用真实监听端口,例如10980
  • 权重:默认可保持一致;如果某台机器配置更高,可适当提高权重。
  • 健康检查:添加后确认健康检查状态为正常。

如果后端服务器健康检查失败,优先检查以下几点:

  • 应用进程是否启动。
  • 端口是否监听在正确网卡上。
  • 安全组是否放行 ALB 到后端端口的访问。
  • 健康检查路径是否返回正常 HTTP 状态码。
  • 后端应用是否限制了 Host、Header 或来源 IP。

第四步:创建监听

监听定义 ALB 对外接收请求的协议和端口,例如:

外部访问方式监听协议监听端口典型用途
http://example.comHTTP80普通 HTTP 访问或跳转到 HTTPS
https://example.comHTTPS443标准 HTTPS 访问
https://example.com:10980HTTPS10980非标准 HTTPS 端口访问

创建监听时建议按以下顺序:

  1. 选择协议和端口。
  2. 如果选择 HTTPS,绑定与业务域名匹配的 SSL 证书。
  3. 选择默认服务器组,通常指向前面创建的业务服务器组。
  4. 按需配置 TLS 安全策略、HTTP/2、访问日志、会话保持等能力。

如果业务没有特殊原因,公网 HTTPS 建议优先使用标准443端口。使用10980这类非标准端口也可以,但用户访问时必须显式带端口,例如:

https://api.example.com:10980



第五步:配置转发规则

如果一个监听只对应一个后端服务,可以只使用默认转发动作。

如果一个域名或端口下有多个业务路径,则建议配置转发规则,例如:

匹配条件转发目标
Host = api.example.comPath = /api/*sg-api-10980
Host = admin.example.comPath = /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.com

3. 跨账号域名校验

如果域名在 A 账号,ALB 在 B 账号,在 B 账号添加或管理该域名时,可能需要证明你拥有该域名。一般做法是:

  1. 在 B 账号控制台获取 TXT 校验记录。
  2. 登录 A 账号的 DNS 控制台。
  3. 添加对应 TXT 记录。
  4. 等待校验通过后,再添加 CNAME 解析到 ALB DNS 名称。



六、配置安全组和后端连通性

ALB 能接收请求并不代表一定能访问后端。后端安全组需要允许来自 ALB 的私网访问。

建议按以下原则放行:

  • 放行后端真实业务端口,例如1098010981
  • 来源优先填写 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 或路径。


八、推荐配置顺序总结

最稳妥的配置顺序如下:

  1. 准备后端 ECS/ECI 应用,确认端口和健康检查路径可用。
  2. 创建 ALB 实例,选择公网/私网、VPC、可用区和交换机。
  3. 创建服务器组,并配置健康检查。
  4. 添加后端服务器,填写真实业务端口和权重。
  5. 创建监听,绑定证书,并设置默认服务器组。
  6. 如有多业务路径或多域名,配置转发规则。
  7. 配置后端安全组,允许 ALB 访问业务端口。
  8. 将业务域名 CNAME 到 ALB 的 DNS 名称。
  9. 使用nslookupcurl和控制台健康检查状态进行验证。

最终链路可以概括为:

用户 -> 业务域名 -> DNS CNAME 到 ALB DNS 名称 -> ALB 监听端口 -> 监听默认动作或转发规则 -> 服务器组 -> 后端 ECS/ECI 业务端口

按照这个顺序配置,思路会更清晰:先保证后端能服务,再让 ALB 能转发,最后再把域名切到 ALB。这样即使出现访问异常,也能沿着链路逐段定位。


参考资料

  • 阿里云文档:应用型负载均衡 ALB 产品文档
  • 阿里云文档:创建应用型负载均衡 ALB 实例
  • 阿里云文档:创建服务器组、添加后端服务器、配置监听和转发规则
  • 阿里云文档:使用 CNAME 将业务域名解析到 ALB DNS 名称
← 返回列表