亚马逊云负载均衡实战指南:从ALB到NLB再到GWLB的选型、配置与成本控制
一、负载均衡为什么是云上架构的“总调度”?
把业务部署到云端之后,最先要面对的难题往往不是服务器够不够快,而是流量来了之后该怎么分发。一台服务器扛不住,十台服务器又不知道该把请求递给谁——负载均衡器就是解决这个问题的核心组件。
亚马逊云的弹性负载均衡(Elastic Load Balancing,简称ELB)是一套全托管的流量分发服务,它能在多个可用区之间自动分配 incoming 流量,监控后端目标的健康状况,并在目标出现异常时自动将流量切换到健康的节点上。整个过程不需要你手动干预,也不需要自己维护任何负载均衡软件。
但很多人在初次接触亚马逊云负载均衡时,会陷入一个误区:以为只有一个“负载均衡器”产品,选一个创建就完事了。实际上,ELB下面有三个完全不同的服务——ALB、NLB和GWLB,它们分别解决不同类型的流量分发问题,选错了不仅浪费钱,还会影响架构的扩展性。
本文就从选型开始,一步一步讲清楚亚马逊云负载均衡到底该怎么用。
二、ALB、NLB、GWLB:先搞清楚谁管什么
很多人一上来就问“哪个负载均衡器最好”,其实这个问题本身就不成立。三种负载均衡器面向的是完全不同的场景,不存在谁替代谁的关系。
应用负载均衡器(ALB)工作在OSI模型的第七层,也就是应用层。它看得懂HTTP和HTTPS协议,能根据URL路径、请求头、Cookie甚至查询字符串来做路由决策。举个例子,同一个域名下面,/api开头的请求可以转发给后端的API服务集群,/images开头的请求可以转发给图片处理服务,其他请求则送给前端页面服务器。一套ALB加上不同的监听器规则,就能把整个微服务架构统一到一个入口下面。ALB还天然支持WebSocket和gRPC,对于需要长连接的实时应用来说非常友好。它还集成了AWS WAF,可以在负载均衡层面直接过滤掉SQL注入、跨站脚本等常见Web攻击。
网络负载均衡器(NLB)工作在第四层,传输层。它处理的是TCP和UDP流量,不关心数据包里面装的是什么内容。NLB的核心优势在于极致性能——单实例可以处理每秒数百万级别的连接,延迟控制在亚毫秒级别。它还有一个ALB不具备的能力:支持在每个可用区绑定弹性IP地址,让你的负载均衡器拥有固定不变的公网IP。这对于需要IP白名单对接的金融系统、游戏服务器或者物联网平台来说至关重要。如果你的业务需要保留客户端的真实IP地址,NLB也可以做到源IP保留。
网关负载均衡器(GWLB)的角色和前两者有本质区别。它不是用来分发应用流量的,而是用来把第三方网络安全设备(比如防火墙、入侵检测系统、深度包检测工具)“嵌入”到网络数据路径中。GWLB使用GENEVE封装协议,把流量透明地交给虚拟安全设备进行检查,检查完再放行。很多企业上云后需要满足合规要求,必须在网络层做流量的安全审查,GWLB就是为这个场景设计的。
简单总结一下选型逻辑:HTTP/HTTPS应用选ALB,TCP/UDP高性能场景或需要固定IP选NLB,需要在网络中插入安全设备选GWLB。三者不是互斥的,在复杂架构中可以组合使用,比如把ALB作为NLB的目标,同时获得固定IP和基于HTTP头的内容路由能力。
三、从零开始配置一个ALB:完整操作路径
理论说完了,接下来讲实操。以最常用的ALB为例,梳理一遍完整的配置流程。
3.1 前置准备
在创建负载均衡器之前,需要确认几个前提条件。目标实例或容器需要已经在运行,并且安装了Web服务器(比如Nginx或Apache)。这些实例的安全组需要允许来自负载均衡器的流量,通常是在80或443端口上。另外,ALB需要部署在至少两个不同的可用区中,这是高可用性的基本要求。
3.2 创建目标组
目标组是ALB后面的后端资源集合。创建目标组时需要指定协议和端口,比如HTTP:80或者HTTPS:443。健康检查的配置也在这一步完成——设置检查路径(比如/health)、检查间隔和判定阈值。一个实用的建议是把健康检查路径指向一个轻量级的端点,避免因为健康检查本身消耗过多后端资源。
3.3 创建负载均衡器与监听器
在EC2控制台中选择“负载均衡器”,然后创建Application Load Balancer。选择面向互联网还是内部使用,指定VPC和子网(至少两个可用区的公有子网),并分配安全组。监听器是负载均衡器接收请求的入口,通常先创建一个HTTP:80的监听器用于测试,确认后端服务正常后再升级到HTTPS:443。
3.4 配置HTTPS监听器与SSL证书
生产环境必须使用HTTPS。在创建HTTPS监听器时,需要选择或导入一个SSL/TLS证书。推荐使用AWS Certificate Manager(ACM)来管理和自动续期证书,省去手动更新的麻烦。证书的域名必须与你的自定义域名匹配,否则TLS握手会失败。ALB支持SNI(服务器名称指示),也就是说一个负载均衡器可以绑定多张证书,为不同域名提供服务。
3.5 设置监听器规则
监听器规则是ALB最强大的功能之一。每条规则包含一个或多个条件和一个动作。条件可以是路径模式、主机头、HTTP方法、查询字符串等,动作可以是转发到目标组、重定向URL或者返回固定响应。规则按照优先级从低到高依次评估,第一个匹配的规则生效。一个典型的微服务路由配置是:优先级1把/api/*转发到API目标组,优先级2把/admin/*转发到管理后台目标组,默认规则把所有其他请求转发到前端目标组。每条规则的创建都支持通过控制台或AWS CLI完成,批量管理时使用CLI或基础设施即代码工具会更高效。
四、把负载均衡融入更大的架构体系
负载均衡器从来不是孤立存在的,它需要和云上的其他服务配合才能发挥最大价值。
4.1 与自动扩展的配合
将目标组与EC2 Auto Scaling组关联是标准做法。当流量增加时,Auto Scaling自动启动新的实例并注册到目标组中;流量下降时自动缩减实例数量。负载均衡器持续对目标进行健康检查,确保只有健康的实例接收流量。这套组合让你不需要提前预估容量,系统会根据实际负载自动调整。
4.2 与容器服务的集成
在Amazon EKS环境中,AWS Load Balancer Controller可以根据Kubernetes Ingress资源自动创建和管理ALB。当你在EKS集群中定义一个Ingress对象时,控制器会预置一个ALB,并根据Ingress规则自动配置监听器和目标组。需要注意的是,EKS集群的子网必须正确打标签——公有子网需要标记为外部负载均衡器使用,私有子网标记为内部负载均衡器使用,否则控制器不知道用哪些子网来部署负载均衡器。
4.3 与全局加速器的协作
如果你的用户分布在全球各地,可以考虑在ALB或NLB前面加上AWS Global Accelerator。Global Accelerator利用AWS的全球骨干网络,把用户的请求从最近的边缘节点接入,然后通过优化路径转发到你的负载均衡器上。它还会为你的应用提供两个固定的Anycast IP地址,进一步提升连接的稳定性和性能。
4.4 安全防护的叠加
ALB可以直接关联AWS WAF的Web ACL,在流量到达后端应用之前就过滤掉恶意请求。WAF支持托管规则组,可以一键启用针对常见攻击模式(如SQL注入、XSS、恶意爬虫)的防护规则。除了WAF,还建议为负载均衡器启用删除保护功能,防止因为误操作导致负载均衡器被删除,从而造成服务中断。
五、成本控制:负载均衡费用怎么省?
亚马逊云负载均衡的计费由两部分组成:固定的小时费和基于用量的容量单位费。以ALB为例,每个ALB每小时大约收费0.0252美元,同时按照LCU(负载均衡器容量单位)计费,每个LCU小时约0.008美元。LCU的用量取四个维度中的最大值:新建连接数、活跃连接数、处理的数据量和规则评估次数。这意味着如果你的业务流量不大但配置了大量路由规则,规则评估可能成为费用的主要驱动因素。
几个实用的省钱思路。第一,定期检查是否存在闲置的负载均衡器。AWS Trusted Advisor提供“闲置负载均衡器”检查项,会报告过去7天内请求数少于100的负载均衡器,这些通常可以直接删除。第二,如果多个应用共享同一个域名,尽量用一个ALB通过基于主机头或路径的路由分发到不同的目标组,而不是为每个应用单独创建ALB。第三,NLB的小时费虽然略高于ALB,但在处理大量TCP连接时LCU消耗更少,对于纯TCP场景反而更经济。第四,新用户可以利用AWS免费套餐,每月有750小时的负载均衡器使用时间和15个LCU小时,足够一个小型项目免费运行。
六、常见故障与排查思路
负载均衡器本身是托管服务,出问题的概率很低,大多数故障都出在配置环节。
如果客户端无法连接到ALB,首先检查安全组是否允许来自客户端IP的流量到达负载均衡器的监听端口。如果目标实例显示为不健康状态,需要确认健康检查的端口、路径和协议是否与后端应用实际监听的配置一致。一个常见的错误是健康检查路径返回了重定向(比如301或302),而负载均衡器默认把非200响应码视为不健康。
对于NLB来说,如果所有目标都不健康,流量会被发送到负载均衡器部署的所有可用区。如果某个可用区的子网路由表缺少必要的路由条目,发往该可用区的流量就无法到达目标。排查时可以先确认每个目标组至少有一个健康目标,然后检查安全组是否允许来自NLB私有IP地址的健康检查流量到达目标实例的健康检查端口。
如果遇到ALB返回5XX错误,可以使用AWS提供的自动化排查工具AWSSupport-TroubleshootALB5XXErrors,它会自动诊断安全组规则、网络ACL和后端目标的健康状况。对于502错误,通常意味着后端返回了无效响应;对于504错误,一般是后端响应超时,可以检查目标的处理时间和负载均衡器的空闲超时设置是否匹配。
七、关于上饶追云逐智信息科技有限公司
在云服务领域深耕多年的上饶追云逐智信息科技有限公司,是国内综合型多云服务合作商之一,业务覆盖阿里云、腾讯云、华为云、天翼云、火山云、微软云、谷歌云、亚马逊云等八大主流公有云平台。公司拥有全职员工500人,团队架构完善、服务体系标准化,具备承接大、中、小型企业规模化上云项目的完整能力。截至目前,八大云平台全年综合销量突破20亿人民币,累计服务超100万合作客户,累计助力企业部署云服务器近1亿台。公司拥有10年以上行业经验,在亚马逊云、谷歌云、微软云、阿里云国际站、腾讯云国际站、华为云国际站等国际云业务方面,专门在香港成立了运营公司以支撑海外业务拓展。作为亚马逊云头部一级代理商,通过上饶追云逐智开通亚马逊云服务,可享受8.5折优惠或15%返点,帮助企业以更优的成本获得全球领先的云计算能力。
八、写在最后
亚马逊云负载均衡不是一个“创建了就完事”的产品,选对类型、配好规则、管好成本,这三个环节缺一不可。ALB负责应用层的智能路由,NLB负责传输层的极致性能,GWLB负责安全设备的透明嵌入——理解它们各自擅长什么,才能在设计架构时做出正确的决策。
对于刚接触亚马逊云的团队,建议先从ALB入手,配合Auto Scaling做一套最简单的Web应用架构,熟悉目标组、监听器规则和健康检查的基本操作。等业务规模扩大或者出现特定需求时,再引入NLB或GWLB。负载均衡器的价值不在于它本身有多复杂,而在于它能让你的后端架构变得简单——把流量分发的复杂性交给托管服务,你的团队就能把精力放在真正重要的业务逻辑上。
常见问题解答
问:ALB和NLB可以同时使用吗?
答:可以。常见的组合方式是把ALB作为NLB的目标,这样既能获得NLB的固定IP地址,又能利用ALB的HTTP路由能力。
问:ALB的健康检查一直失败怎么办?
答:先确认健康检查的端口和路径是否与后端服务的实际配置一致,再检查安全组是否允许来自负载均衡器的健康检查流量。
问:NLB支持SSL证书吗?
答:支持。NLB可以在TLS监听器上终止SSL连接,也支持将TLS流量直接透传到后端由应用自行处理。
问:负载均衡器的费用大概是多少?
答:ALB基础小时费约为每小时0.0252美元,加上按用量计费的LCU费用。低流量场景下每月费用通常在20至30美元左右。
问:EKS集群中如何自动创建ALB?
答:需要安装AWS Load Balancer Controller,然后创建Ingress资源即可自动预置ALB,子网需要预先打上对应的角色标签。
问:GWLB和普通的负载均衡器有什么区别?
答:GWLB不负责分发应用流量,而是将流量透明地引导到第三方安全设备进行检测,主要用于网络安全和合规场景。




