开始使用 Gateway 负载均衡器 AWS CLI - Elastic Load Balancing

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

开始使用 Gateway 负载均衡器 AWS CLI

借助网关负载均衡器可以轻松部署、扩展和管理第三方虚拟设备,例如安全设备。

在本教程中,我们将使用一个网关负载均衡器和一个网关负载均衡器端点,实现一个检验系统。

概述

Gateway Load Balancer VPC 端点是在服务提供商中的虚拟设备和服务使用者VPC中的应用程序服务器之间提供私有连接的终端节点VPC。Gateway Load Balancer 的部署方式与虚拟设备的部署方式VPC相同。这些设备将会注册到网关负载均衡器的目标组。

应用程序服务器在服务使用者的一个子网(目标子网)中运行VPC,而 Gateway Load Balancer 端点则在同一个子网的另一个子网中运行VPC。所有VPC通过 Internet 网关进入服务使用者的流量首先路由到 Gateway Load Balancer 端点,然后路由到目标子网。

同样,离开应用程序服务器(目的地子网)的所有流量会首先路由到网关负载均衡器端点,然后再路由回互联网。以下网络图形象地演示了如何使用网关负载均衡器访问端点服务。

使用网关负载均衡器终端节点访问终端节点服务

随后的编号项突出显示并解释了上面网络图中显示的元素。

从互联网到应用程序的流量(蓝色箭头):
  1. 流量VPC通过互联网网关进入服务消费者。

  2. 根据入口路由将流量发送到网关负载均衡器端点。

  3. 将流量发送到网关负载均衡器,然后由后者将流量分配到其中的一个安全设备。

  4. 安全设备完成检查后,将流量发送回网关负载均衡器端点。

  5. 将流量发送到应用程序服务器(目的地子网)。

从应用程序到互联网的流量(橙色箭头):
  1. 根据应用程序服务器子网上配置的默认路由表,将流量发送到网关负载均衡器端点。

  2. 将流量发送到网关负载均衡器,然后由后者将流量分配到其中的一个安全设备。

  3. 安全设备完成检查后,将流量发送回网关负载均衡器端点。

  4. 根据路由表配置,将流量发送到互联网网关。

  5. 流量被路由回互联网。

路由

互联网网关的路由表必须具有将发往应用程序服务器的流量路由到网关负载均衡器端点的条目。要指定 Gateway Load Balancer 终端节点,请使用VPC终端节点的 ID。以下示例显示了 dualstack 配置的路由。

目标位置 目标
VPC IPv4 CIDR 本地
VPC IPv6 CIDR 本地
Subnet 1 IPv4 CIDR vpc-endpoint-id
Subnet 1 IPv6 CIDR vpc-endpoint-id

应用程序服务器所在子网的路由表必须具有将来自应用程序服务器的所有流量路由到网关负载均衡器端点的条目。

目标位置 目标
VPC IPv4 CIDR 本地
VPC IPv6 CIDR 本地
0.0.0.0/0 vpc-endpoint-id
::/0 vpc-endpoint-id

网关负载均衡器端点所在子网的路由表必须将从检查返回的流量路由到最终目的地。对于来自互联网的流量,本地路由将确保其会到达应用程序服务器。对于来自应用程序服务器的流量,则添加会将所有流量路由到互联网网关的条目。

目标位置 目标
VPC IPv4 CIDR 本地
VPC IPv6 CIDR 本地
0.0.0.0/0 internet-gateway-id
::/0 internet-gateway-id

先决条件

  • AWS CLI 如果您使用的版本不支持 Gateway Load Balancers,请安装 AWS CLI 或更新到当前版本的。有关更多信息,请参阅AWS Command Line Interface 《用户指南》中的安装 AWS Command Line Interface

  • 确保服务使用者VPC在包含应用程序服务器的每个可用区中至少有两个子网。其中一个子网用于网关负载均衡器端点,另一个用于应用程序服务器。

  • 确保服务提供商VPC为每个包含安全设备实例的可用区至少有两个子网。一个子网用于网关负载均衡器端点,另一个用于实例。

  • 在服务提供商的每个安全设备子网中至少启动一个安全设备实例VPC。这些实例的安全组必须允许端口 6081 上的UDP流量。

第 1 步:创建网关负载均衡器并注册目标

安装以下过程创建负载均衡器、侦听器和目标组,并将安全设备实例注册为目标。

创建网关负载均衡器并注册目标
  1. 使用create-load-balancer命令创建类型的负载均衡器gateway。您可以为您启动了安全设备实例的每个可用区指定一个子网。

    aws elbv2 create-load-balancer --name my-load-balancer --type gateway --subnets provider-subnet-id

    默认设置为仅支持IPv4地址。要同时支持IPv4和IPv6地址,请添加--ip-address-type dualstack选项。

    输出包括负载均衡器的 Amazon 资源名称 (ARN),其格式如以下示例所示。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/gwy/my-load-balancer/1234567890123456
  2. 使用create-target-group命令创建目标组,指定您在其中启动实例VPC的服务提供商。

    aws elbv2 create-target-group --name my-targets --protocol GENEVE --port 6081 --vpc-id provider-vpc-id

    输出包括目标ARN组的,格式如下。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/0123456789012345
  3. 使用 register-targets 命令将您的实例注册到目标组。

    aws elbv2 register-targets --target-group-arn targetgroup-arn --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890
  4. 使用 create-listener 命令为您的负载均衡器创建一个侦听器,该侦听器带有将请求转发到目标组的默认规则。

    aws elbv2 create-listener --load-balancer-arn loadbalancer-arn --default-actions Type=forward,TargetGroupArn=targetgroup-arn

    输出包含ARN监听器的,格式如下。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:listener/gwy/my-load-balancer/1234567890123456/abc1234567890123
  5. (可选)您可以使用以下describe-target-health命令验证目标组中已注册目标的运行状况。

    aws elbv2 describe-target-health --target-group-arn targetgroup-arn

第 2 步:创建网关负载均衡器端点

按照以下过程创建网关负载均衡器端点。网关负载均衡器端点是基于可用区的。我们建议您在每个可用区中创建一个网关负载均衡器端点。有关更多信息,请参阅 通过 AWS PrivateLink访问虚拟设备

要创建网关负载均衡器终端节点
  1. 使用 create-vpc-endpoint-service-configuration 命令使用您的 Gateway Load Balancer 创建终端节点服务配置。

    aws ec2 create-vpc-endpoint-service-configuration --gateway-load-balancer-arns loadbalancer-arn --no-acceptance-required

    要同时支持IPv4和IPv6地址,请添加--supported-ip-address-types ipv4 ipv6选项。

    输出包含服务 ID(例如 vpce-svc-12345678901234567)和服务名称(例如,com.amazonaws.vpce.us-east-2.vpce-svc-12345678901234567)。

  2. 使用 modify-vpc-endpoint-service-permis sions 命令允许服务使用者为您的服务创建终端节点。服务使用者可以是用户、IAM角色或 AWS 账户。以下示例添加了对指定项的权限 AWS 账户。

    aws ec2 modify-vpc-endpoint-service-permissions --service-id vpce-svc-12345678901234567 --add-allowed-principals arn:aws:iam::123456789012:root
  3. 使用create-vpc-endpoint命令为您的服务创建 Gateway Load Balancer 终端节点。

    aws ec2 create-vpc-endpoint --vpc-endpoint-type GatewayLoadBalancer --service-name com.amazonaws.vpce.us-east-2.vpce-svc-12345678901234567 --vpc-id consumer-vpc-id --subnet-ids consumer-subnet-id

    要同时支持IPv4和IPv6地址,请添加--ip-address-type dualstack选项。

    输出包含 网关负载均衡器端点的 ID(例如,vpce-01234567890abcdef)。

步骤 3:配置路由

按VPC如下方式为服务使用者配置路由表。这将使安全设备能够对发往应用程序服务器的入站流量执行安全检查。

配置路由
  1. 使用 create-route 命令将向互联网网关的路由表添加会将发往应用程序服务器的流量路由到网关负载均衡器端点的条目。

    aws ec2 create-route --route-table-id gateway-rtb --destination-cidr-block Subnet 1 IPv4 CIDR --vpc-endpoint-id vpce-01234567890abcdef

    如果您支持IPv6,请添加以下路由。

    aws ec2 create-route --route-table-id gateway-rtb --destination-cidr-block Subnet 1 IPv6 CIDR --vpc-endpoint-id vpce-01234567890abcdef
  2. 使用 create-route 命令将向应用程序服务器所在子网的路由表添加一条会将来自应用程序服务器的所有流量路由到网关负载均衡器端点的条目。

    aws ec2 create-route --route-table-id application-rtb --destination-cidr-block 0.0.0.0/0 --vpc-endpoint-id vpce-01234567890abcdef

    如果您支持IPv6,请添加以下路由。

    aws ec2 create-route --route-table-id application-rtb --destination-cidr-block ::/0 --vpc-endpoint-id vpce-01234567890abcdef
  3. 使用 create-route 命令将向网关负载均衡器端点所在子网的路由表添加一条会将来自应用程序服务器的所有流量路由到互联网网关的条目。

    aws ec2 create-route --route-table-id endpoint-rtb --destination-cidr-block 0.0.0.0/0 --gateway-id igw-01234567890abcdef

    如果您支持IPv6,请添加以下路由。

    aws ec2 create-route --route-table-id endpoint-rtb --destination-cidr-block ::/0 --gateway-id igw-01234567890abcdef
  4. 对每个可用区中的每个应用程序子网路由表重复此操作。