亚马逊AWS官方博客

新增功能 – 适用于网络负载均衡器的 UDP 负载均衡

网络负载均衡器旨在每秒处理数千万个请求,同时以超低延迟保持高吞吐量,而无需您作出任何努力(请参阅我的文章 New Network Load Balancer – Effortless Scaling to Millions of Requests per Second 了解详情)。

为响应客户的请求,自 2017 年末的发布以来,我们添加了一些新功能,包括跨区负载均衡、针对基于资源和基于标记的权限的支持、针对整个 AWS 托管 VPN 隧道使用的支持、使用 AWS Elastic Beanstalk 控制台创建网络负载均衡器、支持区域间 VPC 对等连接以及 TLS 终止功能

UDP 负载均衡
我们现在正增加针对另一个客户频繁请求的支持,即对 UDP 流量进行负载均衡的能力。您现在可以使用网络负载均衡器为在线游戏、物联网、流媒体、媒体传输和本机 UDP 应用程序部署无连接服务。如果您在自己的数据中心托管 DNSSIPSNMPSyslogRADIUS 和其他 UDP 服务,现在可以将这些服务移至 AWS。您还可以对服务进行部署以处理身份验证、授权和会计流程,通常称为 AAA

您现在不再需要为摄取 UDP 流量而维护一组代理服务器,而是可以针对 TCP 和 UDP 流量使用相同的负载均衡器。您可以简化架构,降低成本并提高可扩展性。

创建 UDP 网络负载均衡器
我可以像往常一样使用控制台、CLI (create-load-balancer)、API (CreateLoadBalancer) 或 CloudFormation 模板 (AWS::ElasticLoadBalancing::LoadBalancer) 创建支持 UDP 的网络负载均衡器。控制台允许我选择所需的负载均衡器;单击网络负载均衡器下的创建按钮:

我为负载均衡器命名,然后从协议菜单中选择 UDP 并选择一个端口(514 代表 Syslog):

我在 us-east-1bus-east-1c 已有合适的 EC2 实例,因此我会选择这些可用区:

然后,在端口 514 上为 UDP 协议设置一个目标组:

选择实例,然后单击添加到已注册

我会在下一页检查自己的设置,以及新 UDP 负载均衡器是否可以在一分钟之内准备好接受流量(状态起始为预置,准备就绪后会过渡为活动):

我会通过将 EC2 实例配置为集中式 Syslogd 服务器来进行测试。我只需编辑实例上的配置文件 (/etc/rsyslog.conf),使其监听端口 514,然后重启服务即可:

然后,我启动另一个 EC2 实例,并将其配置为使用我的 NLB 终端节点:

我可以看到服务器中的日志条目(ip-172-31-29-40 是我的测试实例):

我刚刚对配置做了一个小小的更改,才让一切正常运行! 使用 UDP 检查服务运行状况确实行不通,因此我单击覆盖,改为在端口 80 上指定运行状况检查:

在实际场景中,您当然希望在自己的服务中构建 TCP 样式的运行状况检查。更不用说,我将运行 Syslog 的自定义实现,以高度持久的形式集中存储日志消息。

注意事项
以下是关于该重要的 NLB 新功能的一些注意事项:

支持目标 – 实例目标类型支持网络负载均衡器上的 UDP(目前不支持 IP 目标类型和 PrivateLink)。

运行状况检查 – 如上所述,必须使用 TCP、HTTP 或 HTTPS 进行运行状况检查。

多协议 – 单个网络负载均衡器可以同时处理 TCP 和 UDP 流量。您可以为现有的负载均衡器添加另一个侦听器以获得 UDP 支持,只要使用不同的端口即可。在 DNS 此类情况下,您需要在同一端口上同时支持 TCP 和 UDP,此时您可以设置一个多协议目标组和一个多协议侦听器(针对侦听器类型和目标组使用 TCP_UDP)。

全新 CloudWatch 指标 – CloudWatch 现有指标(ProcessedBytesActiveFlowCountNewFlowCount)现在代表在指定网络负载均衡器上由 TCP、UDP 和 TLS 侦听器处理的聚合流量。

现已推出
这项功能现已推出,您可以立即在所有 AWS 商业区域中开始使用。有关定价,请参阅 Elastic Load Balancing 定价页面。

Jeff

 

本篇作者

Jeff Barr

AWS 首席布道师; 2004年开始发布博客,此后便笔耕不辍。