今天,我们要介绍的是新版 Network Load Balancer (NLB)。它设计用于每秒处理数千万个请求,同时以超低延迟保持高吞吐量,无需您执行任何操作。Network Load Balancer 与 Application Load Balancer 保持 API 兼容,包括对目标组和目标的完全编程控制。以下是它的一些最重要的功能:
静态 IP 地址 – 每个 Network Load Balancer 均可为其权限范围内的每个可用区提供单个 IP 地址,与该 IP 地址的连接将在相应可用区中所有 VPC 子网的实例之间传输流量。如果您同时在
us-west-2a 和
us-west-2c 中有目标,NLB 将创建和管理两个 IP 地址(每个可用区一个)。您也可以为每个可用区指定现有的弹性 IP,以实现更好的控制。通过完全控制 IP 地址,Network Load Balancer 可以用于需要将 IP 地址硬编码为 DNS 记录、客户防火墙规则等的情况。
区域性 – 每可用区一个 IP 地址的功能可以通过提高性能来降低延迟,通过隔离和容错提高可用性,并使 Network Load Balancer 对客户端应用程序透明。此外,Network Load Balancer 还可将来自特定源的一系列请求路由到单个可用区中的目标,并在这些目标不可用时仍然提供自动故障转移。
源地址保留 – 借助 Network Load Balancer,传入连接的初始源 IP 地址和源端口将保持不变,因此,应用程序软件不需要支持
X-Forwarded-For、代理协议
,或其他解决方法。这也意味着您可以在目标上使用常规防火墙规则,包括 VPC 安全组。
长时间运行的连接 – NLB 可处理具有内置容错的连接,并且可以处理已打开数月或数年的连接,使其适用于物联网、游戏和消息收发应用程序。
故障转移 – NLB 由
Route 53 运行状况检查提供支持,支持区域内和跨区域的 IP 地址之间的故障转移。
要创建 Network Load Balancer,请打开 EC2 控制台,选择
负载均衡器,然后单击
创建负载均衡器:
选择“Network Load Balancer”,单击
创建,然后输入详细信息。为目标 VPC 中的每个子网选择一个弹性 IP 地址,然后标记 Network Load Balancer:
单击注册目标和要接收流量的 EC2 实例,然后单击添加到已注册目标:
确保所有设置正确无误,然后单击创建:
新负载均衡器的状态为正在预置,并将在一分钟左右切换到活动状态:
出于测试目的,我直接从控制台获取了负载均衡器的 DNS 名称(在实际操作中,您需要使用 Amazon Route 53 和更友好的名称):
然后,我向该负载均衡器发送了大量流量(我原本打算让它运行一两秒即可,但是我走神了。结果它创建了大量进程,这是一个有趣的小意外):
Bash
当然,更严格的测试会使用 Bees with Machine Guns 之类的工具!
我快速断开了一下,让一些流量传输,然后查看了 Load Balancer 的 CloudWatch 指标,发现它可以轻松应对这种突然的流量冲击:
我还查看了 EC2 实例,看看它们在加载期间的运行状况(事实证明,运行状况非常好):
后来,我的同事执行了一次更为严格的测试。他们设置了一个 Network Load Balancer,并使用自动扩展的实例队列为其提供支持。然后,他们设置了第二个由数百个 EC2 实例组成的队列,每个实例均运行 Bees with Machine Guns,并被配置为生成具有高度变化的请求和响应大小的流量。从每秒 150 万个请求开始,他们迅速提高拨入,在测试资源耗尽之前,每秒达到了 300 多万个请求和 30Gbps 的总带宽。
选择负载均衡器
与往常一样,在选择负载均衡器时,您应考虑应用程序的需求。下面是一些准则:
Network Load Balancer (NLB) – NLB 每秒能够处理数百万个请求,同时保持超低延迟,非常适合 TCP 流量的负载均衡。NLB 还经过优化,能够处理不稳定的流量模式,同时在每个可用区使用单个静态 IP 地址。
Application Load Balancer (ALB) – ALB 提供支持现代应用程序体系结构(包括微服务和基于容器的应用程序)的高级请求路由,非常适合 HTTP 和 HTTPS 流量的高级负载均衡。
Classic Load Balancer (CLB) – 非常适合在 EC2-Classic 网络中构建的应用程序。
有关并排的功能比较,请参阅 Elastic Load Balancer 详情表。
如果您当前使用的是 Classic Load Balancer,希望迁移到 Network Load Balancer,请参阅我们的负载均衡器复制实用工具。这一 Python 工具可帮助您创建与现有 Classic Load Balancer 配置相同的 Network Load Balancer。它还可以使用新的负载均衡器注册现有 EC2 实例。
定价和可用性
和 Application Load Balancer 一样,新版 NLB 的定价以负载均衡器容量单位 (LCU) 为基础。根据以下几项中的最高值,每 LCU 为 0.006 USD:
带宽 – 1GB/ LCU。
新连接 – 800 个/LCU。
活动连接 – 100,000 个/LCU。
大多数应用程序都有带宽限制,在与 Application Load Balancer 或 Classic Load Balancers 对比时,成本(负载均衡)应减少约 25%。
目前,由 AWS CloudFormation、Auto Scaling 和 Amazon ECS 提供支持的 Network Load Balancer 已面向所有 AWS 商业区域提供,中国(北京)地区除外。
作者介绍:
Jeff Barr
Jeff Barr 是 AWS 的首席布道师,从 2004 年开始写本博客以来,他开启了不停写博文的模式。
本文转载自 AWS 技术博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/new-network-load-balancer/
评论