

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

# 开始使用 Gateway 负载均衡器 AWS CLI
<a name="getting-started-cli"></a>

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

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

**Topics**
+ [概览](#overview-cli)
+ [先决条件](#prerequisites-aws-cli)
+ [第 1 步：创建网关负载均衡器并注册目标](#create-load-balancer-aws-cli)
+ [第 2 步：创建网关负载均衡器端点](#create-endpoint-aws-cli)
+ [步骤 3：配置路由](#configure-routing-aws-cli)

## 概览
<a name="overview-cli"></a>

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

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

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

![\[使用网关负载均衡器端点访问端点服务\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/gateway/images/vpc-endpoint-service-gwlbe-new.png)


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

**从互联网到应用程序的流量（蓝色箭头）：**

1. 流量通过互联网网关进入服务使用者 VPC。

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

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

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

1. 将流量发送到应用程序服务器（目的地子网）。

**从应用程序到互联网的流量（橙色箭头）：**

1. 根据应用程序服务器子网上配置的默认路由表，将流量发送到网关负载均衡器端点。

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

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

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

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

### 路由
<a name="route-tables"></a>

互联网网关的路由表必须具有将发往应用程序服务器的流量路由到网关负载均衡器端点的条目。要指定网关负载均衡器端点，请使用 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 | 

## 先决条件
<a name="prerequisites-aws-cli"></a>
+  AWS CLI 如果您使用的版本不支持 Gateway Load Balancers，请安装 AWS CLI 或更新到当前版本的。有关更多信息，请参阅AWS Command Line Interface 《用户指南》**中的[安装 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。
+ 确保服务使用者 VPC 在包含应用程序服务器的每个可用区中至少有两个子网。其中一个子网用于网关负载均衡器端点，另一个用于应用程序服务器。
+ 确保服务提供者 VPC 在包含安全设备实例的每个可用区中至少有两个子网。一个子网用于网关负载均衡器端点，另一个用于实例。
+ 在服务提供者 VPC 的每个安全设备子网中启动至少一个安全设备实例。这些实例的安全组必须允许端口 6081 上的 UDP 流量。

## 第 1 步：创建网关负载均衡器并注册目标
<a name="create-load-balancer-aws-cli"></a>

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

**创建网关负载均衡器并注册目标**

1. 使用[create-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-load-balancer.html)命令创建类型的负载均衡器`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
   ```

1. 使用[create-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-target-group.html)命令创建目标组，指定您在其中启动实例的服务提供商 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
   ```

1. 使用 [register-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/register-targets.html) 命令将您的实例注册到目标组。

   ```
   aws elbv2 register-targets --target-group-arn targetgroup-arn --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890
   ```

1. 使用 [create-listener](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-listener.html) 命令为您的负载均衡器创建一个侦听器，该侦听器带有将请求转发到目标组的默认规则。

   ```
   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
   ```

1. （可选）您可以使用以下[describe-target-health](https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-target-health.html)命令验证目标组的注册目标的运行状况。

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

## 第 2 步：创建网关负载均衡器端点
<a name="create-endpoint-aws-cli"></a>

按照以下过程创建网关负载均衡器端点。网关负载均衡器端点是基于可用区的。我们建议您在每个可用区中创建一个网关负载均衡器端点。有关更多信息，请参阅 [通过 AWS PrivateLink访问虚拟设备](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway-load-balancer.html)。

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

1. 使用 [create-vpc-endpoint-service-configuration](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint-service-configuration.html) 命令使用您的 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）。

1. 使用 [modify-vpc-endpoint-service-permis](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-endpoint-service-permissions.html) sions 命令允许服务使用者为您的服务创建终端节点。服务使用者可以是用户、IAM 角色或 AWS 账户。以下示例添加了对指定项的权限 AWS 账户。

   ```
   aws ec2 modify-vpc-endpoint-service-permissions --service-id vpce-svc-12345678901234567 --add-allowed-principals arn:aws:iam::123456789012:root
   ```

1. 使用[create-vpc-endpoint](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html)命令为您的服务创建 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：配置路由
<a name="configure-routing-aws-cli"></a>

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

**配置路由**

1. 使用 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令将向互联网网关的路由表添加会将发往应用程序服务器的流量路由到网关负载均衡器端点的条目。

   ```
   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
   ```

1. 使用 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令将向应用程序服务器所在子网的路由表添加一条会将来自应用程序服务器的所有流量路由到网关负载均衡器端点的条目。

   ```
   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
   ```

1. 使用 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令将向网关负载均衡器端点所在子网的路由表添加一条会将来自应用程序服务器的所有流量路由到互联网网关的条目。

   ```
   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
   ```

1. 对每个可用区中的每个应用程序子网路由表重复此操作。