通过 Amazon CLI 开始使用网关负载均衡器 - Elastic Load Balancing
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

通过 Amazon CLI 开始使用网关负载均衡器

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

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

概述

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

应用程序服务器与服务使用者 VPC 在同一个子网(目的地子网)中运行,而网关负载均衡器端点位于另一个子网中。通过互联网网关进入服务使用者 VPC 的所有流量首先会路由到网关负载均衡器端点,然后再路由到目标子网。

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


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

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

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

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

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

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

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

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

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

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

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

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

路由

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

目标位置 目标
VPC IPv4 CIDR 本地
VPC IPv6 CIDR 本地
子网 1 IPv4 CIDR vpc-endpoint-id
子网 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

先决条件

  • 安装 Amazon CLI 或者更新到最新版本的 Amazon CLI(如果您使用的版本不支持网关负载均衡器)。有关更多信息,请参阅《Amazon Command Line Interface 用户指南》中的安装 Amazon 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 步:创建网关负载均衡器端点

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

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

    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-permissions 命令以允许服务使用者为您的服务创建端点。服务使用者可以是用户、IAM 角色或 Amazon Web Services 账户。以下示例添加了指定 Amazon Web Services 账户的权限。

    aws ec2 modify-vpc-endpoint-service-permissions --service-id vpce-svc-12345678901234567 --add-allowed-principals arn:aws:iam::123456789012:root
  3. 使用 create-vpc-endpoint 命令为您的服务创建网关负载均衡器端点。

    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. 对每个可用区中的每个应用程序子网路由表重复此操作。