Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

AWS 弹性负载平衡和弹性网卡

本节概述 AWS ELB 和 ENA 功能,并介绍如何在 vSRX 虚拟防火墙实例上部署这些功能。

AWS 弹性负载平衡概述

本节提供有关 AWS ELB 的信息。

弹性负载平衡 (ELB) 是用于 Amazon Web Services (AWS) 部署的负载平衡服务。

ELB 跨 ntra 可用性区域(如 Amazon EC2 实例、容器和 IP 地址)分配传入的应用程序或网络流量。ELB 会随着应用程序流量的变化而扩展您的负载平衡器,并可以自动扩展到绝大多数工作负载。

使用应用程序负载平衡器的 AWS ELB 通过使用某些 AWS 服务实现自动化:

AWS 弹性负载平衡的优势

  • 通过自动分配传入流量,确保可用区域内的弹性负载平衡。

  • 允许您在同一实例上托管更多应用程序,并集中管理传输层安全 (TLS) 设置并从应用程序中分载 CPU 密集型工作负载,从而灵活地实现应用程序目标虚拟化。

  • 提供强大的安全功能,如集成证书管理、用户身份验证和 SSL/TLS 解密。

  • 支持自动扩展足够数量的应用程序,以满足不同级别的应用程序负载,无需手动干预。

  • 使您能够通过 Amazon CloudWatch 指标、日志记录和请求跟踪来实时监控您的应用及其性能。

  • 在同一负载平衡器跨 AWS 和本地资源实现负载平衡。

AWS 弹性负载平衡组件

AWS 弹性负载平衡 (ELB) 组件包括:

  • Load balancers— 负载平衡器充当客户端的单一联络点。负载平衡器跨多个可用性区域 (AS) 中的多个目标(如 EC2 实例)分配传入应用程序流量,从而提高应用程序的可用性。您可将一个或多个侦听器添加到负载平衡器。

  • Listeners or vSRX instances—侦听程序是使用您配置的协议和端口检查连接请求的过程。vSRX 虚拟防火墙实例作为侦听器,可使用您配置的协议和端口检查来自客户端的连接请求,并根据您定义的规则将请求转发至一个或多个目标组。每个规则都会指定目标组、条件和优先级。满足条件后,流量将转发到目标组。您必须为每个 vSRX 虚拟防火墙实例定义一个默认规则,并可以根据请求的内容(也称为基于内容的路由)添加指定不同目标组的规则。

  • Target groups or vSRX application workloads— 作为目标组的每个 vSRX 虚拟防火墙应用程序都用于将请求路由到一个或多个注册的目标。将每个 vSRX 虚拟防火墙实例创建为侦听规则时,请指定一个 vSRX 虚拟防火墙应用程序和条件。满足规则条件后,流量将被转发到相应的 vSRX 虚拟防火墙应用程序。您可以为不同类型的请求创建不同的 vSRX 虚拟防火墙应用程序。例如,为常规请求创建一个 vSRX 虚拟防火墙应用程序,创建其他 vSRX 虚拟防火墙应用程序以请求您的应用微服务。

AWS ELB 支持三种类型的负载平衡器:应用程序负载平衡器、网络负载平衡器和经典负载平衡器。您可以根据应用需求选择负载平衡器。有关 AWS ELB 负载平衡器类型的更多信息,请参阅 AWS 弹性负载平衡

应用程序负载平衡器概述

从 Junos OS 18.4R1 版开始,vSRX 虚拟防火墙实例支持使用应用程序负载平衡器 (ELB),为使用原生 AWS 服务面向互联网的流量提供可扩展的安全性。应用程序负载平衡器会自动分配传入的应用程序流量并扩展资源以满足流量需求。

您还可以配置运行状况检查来监控已注册目标的运行状况,以便负载平衡器只能向运行状况良好的目标发送请求。

应用程序负载平衡器的主要功能包括:

  • 第 7 层负载平衡

  • HTTPS 支持

  • 高可用性

  • 安全功能

  • 容器化应用程序支持

  • HTTP/2 支持

  • WebSockets 支持

  • 本机 IPv6 支持

  • 粘性会话

  • 通过运维监控、日志记录、请求跟踪进行运行状况检查

  • Web 应用程序防火墙 (WAF)

当应用程序负载平衡器收到请求时,它会按优先级顺序评估 vSRX 虚拟防火墙实例的规则,以确定要应用哪些规则,然后从 vSRX 虚拟防火墙应用程序中选择规则操作的目标。您可以配置 vSRX 虚拟防火墙实例规则,以便根据应用程序流量的内容将请求路由到不同的目标组。对于每个目标组,路由都是独立执行的,即使一个目标注册了多个目标组也是如此。

您可以随着需求的变化从负载平衡器中添加和移除目标,而不会中断向应用程序的整体请求流。随着应用程序流量随时间的推移而变化,ELB 会扩展您的负载平衡器。ELB 可以自动扩展大多数工作负载。

可以使用 vSRX 虚拟防火墙实例属性查看应用程序负载平衡器启动顺序和当前屏幕。作为 AWS 实例运行 vSRX 虚拟防火墙时,通过 SSH 登录实例可在 Junos OS 上启动会话。标准 Junos OS CLI 可用于监控 vSRX 虚拟防火墙实例的运行状况和统计信息。如果用户数据中发送了 #load_balancer=true 标记,则启动消息将提及为 ELB 和自动扩展支持配置的 vSRX 虚拟防火墙接口。然后交换接口 eth0 和 eth1。

如果将不受支持的 Junos OS 配置发送至用户数据中的 vSRX 虚拟防火墙实例,则 vSRX 虚拟防火墙实例将恢复为其出厂默认配置。如果缺少 #load_balancer=true 标记,则表示不会交换接口。

部署 AWS 应用程序负载平衡器

AWS ELB 应用程序负载平衡器可通过两种方式部署:

  • AWS ELB 应用程序负载平衡器背后的 vSRX 虚拟防火墙

  • ELB 三明治

AWS ELB 应用程序负载平衡器部署背后的 vSRX 虚拟防火墙

在这种部署中,vSRX 虚拟防火墙实例连接到应用程序负载平衡器(位于一个或多个可用性区域 (可用区)中,而应用程序工作负载位于 vSRX 虚拟防火墙实例后面。应用程序负载平衡器仅向实例的主接口发送流量。对于 vSRX 虚拟防火墙实例,主接口是管理接口 fxp0。

要在此部署中启用 ELB,您必须交换管理层和第一个收入接口。

图 1 展示了 AWS ELB 应用程序负载平衡器部署背后的 vSRX 虚拟防火墙。

图 1:AWS ELB 应用程序负载平衡器部署 vSRX Virtual Firewall Behind AWS ELB Application Load Balancer Deployment背后的 vSRX 虚拟防火墙

借助 AWS ELB 应用程序负载平衡器部署后的 vSRX 虚拟防火墙启用 AWS ELB

以下是使用 AWS ELB 应用程序负载平衡器类型的部署类型背后的 vSRX 虚拟防火墙启用 AWS ELB 的先决条件:

  • 从与 vSRX 虚拟防火墙实例关联的 ge-0/0/0 接口监控到 ELB 的所有传入和传出流量。

  • 启动时的 vSRX 虚拟防火墙实例有两个接口,其中包含接口的子网连接到互联网网关 (IGW)。两个接口限制由 AWS 自动扩展组部署设置。您需要在与 AWS ELB 相同的子网中至少定义一个接口。附加接口可以通过 lambda 函数连接。

  • vSRX 虚拟防火墙实例的 eth1 接口上禁用源或目标检查。

要使用 AWS ELB 应用程序负载平衡器方法部署 AWS ELB 应用程序负载平衡器:

vSRX 虚拟防火墙实例包含:

  • ELB 标记为 #load_balancer=true 的云初始化 (cloud-init) 用户数据。

  • 带有 #junos-config 标记、fxp0 (dhcp)、ge-0/0/0 (dhcp) 的用户数据配置(必须是 DHCP 需要定义的任何安全组)

  • Cloud-Watch 会触发简单通知服务 (SNS),进而触发 Lambda 功能,该功能会创建具有弹性 IP 地址 (EIP) 的弹性网络接口 (ENI) 并将其连接到 vSRX 虚拟防火墙实例。此实例可连接多个新 ENI(最多 8 个)。

  • vSRX 虚拟防火墙实例必须重新启动。对于使用交换接口启动 vSRX 虚拟防火墙实例的所有后续时间,都必须重新启动。

    注意:

    如果尝试在实例和 IP 监控之间交换 ENI,则不支持机箱群集。

注意:

您还可以在自动扩展组 (ASG) 中启动 vSRX 虚拟防火墙实例。可以使用云形成模板 (CFT) 实现此启动自动化。

AWS ELB 应用负载平衡器的置中部署

在这种部署模型中,您可以同时扩展安全性和应用程序。vSRX 虚拟防火墙实例和应用程序位于不同的 ASG 中,并且每个 ASG 都连接到不同的应用程序负载平衡器。这种类型的 ELB 部署十分简洁,可以手动扩展 vSRX 虚拟防火墙部署,以应对计划或预计的流量增长,同时提供多 AZ 高可用性。此部署可确保 AWS 部署的入站高可用性和扩展。

由于负载平衡器可动态扩展,因此其虚拟 IP 地址 (VIP) 是完全限定的域名 (FQDN)。此 FQDN 根据可用性区域解析为多个 IP 地址。要启用此解决方案,vSRX 虚拟防火墙实例应能够发送和接收来自 FQDN(或其解析到的多个地址)的流量。

您可以使用命令配置此 FQDN set security zones security-zone ELB-TRAFFIC address-book address ELB dns-name FQDN_OF_ELB

图 2 展示了用于 vSRX 虚拟防火墙的 AWS ELB 应用程序负载平衡器的置中部署。

图 2: AWS ELB 应用程序负载平衡器 Sandwich Deployment of AWS ELB Application Load Balancer置中部署

支持用于 vSRX 虚拟防火墙的 AWS 应用程序负载平衡器的置中部署

对于适用于 vSRX 虚拟防火墙的 AWS ELB 应用程序负载平衡器置中部署:

  • vSRX 虚拟防火墙接收云 init 用户数据中的 #load_balancer=true 标记。

  • 在 Junos OS 中,初始启动过程会扫描装载的磁盘,以检查 setup_vsrx 文件中是否存在标记文件。如果存在该文件,则表示必须配置两个不同的虚拟引用中具有 DHCP 的两个接口。如果存在标志文件,则以默认配置和用户数据为基础执行此扫描和配置更新。

    注意:

    如果存在用户数据,则第二个或第三个 mg 进程提交后的启动时间将增加。

  • 您必须重新启动 vSRX 虚拟防火墙实例。在 vSRX 虚拟防火墙实例使用交换接口启动的所有后续时间执行重新启动。

    注意:

    机箱群集不支持在实例和 IP 监控之间交换弹性网络接口 (ENIs)。

注意:

您还可以在 ASG 中启动 vSRX 虚拟防火墙实例,并使用云形成模板 (CFT) 实现部署自动化。

为 AWS 应用程序负载平衡器部署背后的 vSRX 虚拟防火墙调用云形成模板 (CFT) 堆栈创建

本主题详细介绍了如何为仅包含一个负载平衡器的非置中部署(在 AWS 应用程序负载平衡器后面使用 vSRX 虚拟防火墙)调用云形成模板 (CFT) 堆栈创建。

调用 CFT 堆栈创建之前,请确保 AWS 环境中已提供以下内容:

  • VPC 已创建并准备使用。

  • 管理子网

  • 外部子网(接收来自 ELB 流量的 vSRX 虚拟防火墙接口的子网)。

  • 内部子网(向工作负载发送流量的 vSRX 虚拟防火墙接口的子网)。

  • 要启动的 vSRX 虚拟防火墙实例的 AMI ID。

  • 用户数据(在将流量转发到工作负载之前必须提交的 vSRX 虚拟防火墙配置)。这是一个基础 64 编码的数据,长度不超过 4096 个字符;如果单个字段数据超过 4096 个字符,最多可使用三个用户数据字段。

  • EC2 密钥文件。

  • 从瞻博网络 vSRX 虚拟防火墙 GitHub 存储库获取 lambda 函数文件 add_eni.zip,并将其上传到您的实例 S3 桶。在模板的 Lambda S3 位置 字段中使用此信息。

  • 您的 AWS 帐户应有权在您所在地区的各种资源上创建 Lambda 功能。

按照以下步骤,通过 AWS ELB 应用程序负载平衡器部署后的 vSRX 虚拟防火墙为 AWS ELB 调用 CFT 堆栈创建。

  1. 登录您的 AWS 帐户,并确保右上角的区域是您想要使用的区域。

    请转至 AWS 控制台主页,在 “所有服务” 下查找 “管理和治理 ”部分,然后单击 CloudFormation 选项。

  2. 单击 CloudFormation 页面右上角的 创建堆栈 按钮。
  3. 在新页面上,选择 “上传模板文件”单选 按钮,然后单击“ 选择文件 ”按钮,然后选择您的模板文件,然后单击“ 下一步”。
  4. 打开的下一个页面是使用模板创建的表单。某些字段可能已有默认值,如果需要,可能会更改默认值。

    输入 堆栈名称,选择 VPC IDInstanceTypeMgtSubnetID外部子ID内部子NETIDImageID。粘贴 Base64 编码的用户数据(这是要提交的 vSRX 虚拟防火墙配置,并在单独的文本文件中提供)。如果 Base64 编码的 vSRX 虚拟防火墙配置超过 4096 字节,则可以根据需要使用 UserData2 和 UserData3 字段。

  5. 将最小ASGAnces 设置为 1,将 MaxASGInstances 设置为 3
  6. 选择您的 Amazon EC2 密钥对文件,然后单击 “下一步”。
  7. 使用 配置堆栈 选项和 高级 选项跳过下一页,然后单击 下一步
  8. 在下一页,您将能够查看和编辑堆栈创建详细信息。完成审核后,单击页面右下角的 “创建堆栈 ”按钮。
  9. 在下一页面上,等待堆栈创建完成。如果在创建堆栈时出现任何错误,则此页面上会显示这些错误。您必须使用上述步骤纠正错误并重新创建堆栈。
  10. 成功创建堆栈后,单击 Services>EC2 ,然后单击左侧菜单上的“ 自动扩展组 ”。

    在页面右侧,您应该会看到一个带有您创建的堆栈名称的自动扩展组 (ASG)。

    选择创建的 ASG 后,页面底部会显示 ASG 详细信息。

    单击 “扩展策略 ”选项卡可为此 ASG 创建扩展策略,从而在 ASG 中保留一定数量的 vSRX,并根据您的要求满足各种请求。请参阅本主题下方“示例数据”下的“扩展策略示例”。

    自动扩展组可监控 vSRX 虚拟防火墙实例的状态。如果检测到任何 vSRX 虚拟防火墙实例故障,它会自动重新生成新实例。您可以在 ASG 的 “活动历史记录 ”选项卡和 Cloudwatch 日志中找到更多信息。

  11. 单击 左侧菜单上的服务>EC2 ,然后单击 负载平衡器 。在页面右侧,您应该会看到一个具有您创建的堆栈名称的负载平衡器 (LB)。您可以选择此负载平衡器并在页面底部查看负载平衡器的详细信息。

    上面的 实例 选项卡将显示由此 LB 负载平衡的 vSRX 虚拟防火墙实例。将为此 LB 分配一个 DNS 名称,如上所示。发送到该主机的任何 HTTP 流量都将由 vSRX 虚拟防火墙转发到受 vSRX 虚拟防火墙保护的 Web 服务器工作负载。根据扩展标准,在设置期间使用的 最小ASGMaxASGInstance 之间,vSRX 虚拟防火墙实例的数量可能会有所不同。

  12. For Scaling a Policy:
    • 如第 11 步所述,单击自动扩展组 (ASG) 的扩展策略选项卡中的 Add policy(添加策略)并命名策略。

    • 从下拉列表中选择 指标类型 ,例如:对于平均 CPU 利用率,输入 目标值 为 75。添加 vSRX 虚拟防火墙实例需要的 30 秒预热时间,使 禁用扩展保持 不受限制。

    • 单击 “创建 ”将此策略添加到 ASG。ASG 根据需要执行策略,将平均 CPU 利用率保持在 75。

具有 vSRX 虚拟防火墙的 AWS 弹性负载平衡器 HTTP 流量配置示例

  • 您需要拥有 DNS 服务器 IP 和 Web 服务器 IP(或者,如果您的 Web 服务器在负载平衡器后面,请使用下方的负载平衡器的 IP 地址,而不是 Web 服务器 IP)。

  • 在以下配置中使用您的 IP 地址后,将此配置转换为 Base 64 格式(请参阅:https://www.base64encode.org/),然后将转换后的配置粘贴到 UserData 字段中。这样做后,在堆栈创建过程中,将以下配置应用于在 AWS 中启动的 vSRX 虚拟防火墙上的现有默认配置。

适用于 vSRX 虚拟防火墙实例的 AWS 弹性网卡 (ENA) 概述

Amazon 弹性计算云 (EC2) 提供弹性网络适配器 (ENA),这是新一代网络接口和配套驱动程序,可以在 EC2 vSRX 虚拟防火墙实例上提供增强的网络。

Amazon EC2 通过弹性网卡 (ENA) 提供增强的网络功能。

好处

  • 支持多排队设备接口。ENA 利用多个传输和接收队列来减少内部开销并提高可扩展性。存在多个队列可简化并加速传入和传出数据包映射到特定 vCPU 的过程。

  • ENA 驱动程序支持行业标准 TCP/IP 卸载功能,例如校验和卸载和 TCP 传输分段卸载 (TSO)。

  • 支持接收端扩展 (RSS) 网络驱动技术,支持跨多处理器系统中的多个 CPU 高效分配网络接收处理,从而实现多核扩展。部分 ENA 设备支持称为低延迟队列 (LLQ) 的工作模式,可节省数微秒。

了解 AWS 弹性网卡

增强型网络使用单根 I/O 虚拟化 (SR-IOV) 在受支持的实例类型上提供高性能网络功能。与传统虚拟化网络接口相比,SR-IOV 是一种设备虚拟化方法,可提供更高的 I/O 性能和更低的 CPU 利用率。增强的网络可提供更高的带宽、更高的每秒数据包 (pps) 性能,并始终如一地降低实例间延迟。使用增强型网络无需额外费用。

ENA 是一款自定义网络接口,经过优化,可提供高吞吐量和每秒数据包 (pps) 性能,并在 EC2 vSRX 虚拟防火墙实例上持续保持低延迟。使用 ENA for vSRX 虚拟防火墙 C5.large 实例(带有 2 个 vCPU 和 4-GB 内存),您可以使用高达 20 Gbps 的网络带宽。vSRX 虚拟防火墙实例支持基于 ENA 的增强型网络。

ENA 驱动程序公开一个轻量级管理界面,其中包含最少的内存映射寄存器集,并通过管理员队列提供一个可扩展命令集。该驱动程序支持各种 ENA 适配器,并且与链路速度无关(即,同一驱动程序用于 10 Gbps、25 Gbps、40 Gbps 等),并且协商并支持各种功能。ENA 通过为每个 CPU 核心提供专用的 Tx/Rx 队列对,支持高速和低开销的以太网流量处理。

https://github.com/amzn/amzn-drivers/tree/master/userspace/dpdk 提供 ENA 的 DPDK 驱动程序。

注意:

使用 AWS ELB 应用程序负载平衡器时,eth0(第一个)和 eth1(第二个)接口将交换为 vSRX 虚拟防火墙实例。AWS ENA 会检测接口,并为其相应的内核驱动程序重新绑定。