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

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

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

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

在本教程中,我们将使用网关Load Balancer和网关Load Balancer终端节点实施检查系统。

Overview

安全设备在服务提供商 VPC 的子网中运行。网关 Load Balancer 位于服务提供商 VPC 的另一个子网中。

应用程序服务器在服务使用者 VPC 的子网中运行。网关 Load Balancer 终端节点的网络接口位于服务使用者 VPC 的另一个子网中。通过 Internet 网关进入服务使用者 VPC 的所有流量将路由到网关 Load Balancer 终端节点进行检查,然后再路由到目标子网。同样,离开 EC2 实例的所有流量都会路由到网关 Load Balancer 终端节点进行检查,然后再路由到 Internet。


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

Routing

互联网网关的路由表必须有一个条目,以将目标为应用程序服务器的流量路由到网关Load Balancer终端节点。要指定网关 Load Balancer 终端节点,请使用 VPC 终端节点的 ID。

目的地 目标
10.0.0.0/16 本地
10.0.1.0/24 vpc-endpoint-id

具有应用程序服务器的子网的路由表必须有一个 条目,该条目将所有流量从应用程序服务器路由到网关 Load Balancer 终端节点 (0.0.0.0/0)。

目的地 目标
10.0.0.0/16 本地
0.0.0.0/0 vpc-endpoint-id

具有网关 Load Balancer 终端节点的子网的路由表必须将 从检查返回的流量路由到其最终目的地。对于源自 Internet 的流量,本地路由可确保它到达应用程序服务器。对于源自应用程序服务器的流量,请添加一个将所有流量路由到 Internet 网关的条目 (0.0.0.0/0)。

目的地 目标
10.0.0.0/16 本地
0.0.0.0/0 internet-gateway-id

Prerequisites

  • 如果您使用的版本不支持网关负载均衡器,请安装 AWS CLI 或更新到 AWS CLI 的当前版本。有关更多信息,请参阅《AWS 命令行界面用户指南》中的“安装 AWS 命令行界面”。

  • 确保服务使用者 VPC 对于每个包含应用程序服务器的可用区至少具有两个子网。一个子网用于网关Load Balancer终端节点,另一个子网用于应用程序服务器。

  • 确保服务提供商 VPC 对于每个包含安全设备实例的可用区至少拥有两个子网。一个子网用于网关Load Balancer,另一个子网用于实例。

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

步骤 1:创建网关 Load Balancer 并注册目标

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

创建网关Load Balancer并注册目标

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

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

    输出包含负载均衡器的 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:创建网关 Load Balancer 终端节点

要创建网关Load Balancer终端节点,请按照以下过程操作。Gateway Load Balancer 终端节点为可用区。我们建议您为每个区域创建一个网关Load Balancer终端节点。有关更多信息,请参阅网关 Load Balancer 终端节点 (AWS PrivateLink

要创建网关负载均衡器终端节点

  1. 使用 create-vpc-endpoint-service-configuration 命令通过网关 Load Balancer 创建终端节点服务配置。

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

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

  2. 使用 modify-vpc-endpoint-service-permissions 命令可允许服务使用者创建与您的服务连接的终端节点。服务使用者可以是 IAM 用户、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 命令为您的服务创建网关 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

    输出包含网关 Load Balancer 终端节点的 ID(例如vpce-01234567890abcdef

步骤 3:配置路由

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

配置路由

  1. 使用 create-route 命令向 Internet 网关的路由表添加一个条目,以将发往应用程序服务器的流量路由到网关 Load Balancer 终端节点。

    aws ec2 create-route --route-table-id gateway-rtb --destination-cidr-block 10.0.1.0/24 --vpc-endpoint-id vpce-01234567890abcdef
  2. 使用 create-route 命令向应用程序服务器的子网的路由表添加一个条目,以将来自应用程序服务器的所有流量路由到网关 Load Balancer 终端节点。

    aws ec2 create-route --route-table-id application-rtb --destination-cidr-block 0.0.0.0/0 --vpc-endpoint-id vpce-01234567890abcdef
  3. 使用 create-route 命令向具有网关 Load Balancer 终端节点的子网的路由表添加一个条目,该终端节点将来自应用程序服务器的所有流量路由到 Internet 网关。

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