

# 使用区域 NAT 网关实现自动多可用区扩展
<a name="nat-gateways-regional"></a>

使用区域 NAT 网关可以简化网络架构、改善安全状况和默认配置高可用性。区域 NAT 网关会根据工作负载的情况自动跨可用区扩展。与在单个可用区中运行的标准 NAT 网关（称为可用区 NAT 网关）不同，区域 NAT 网关会根据您的工作负载自动提供高可用性。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/rnat.drawio.png)


左图 A 展示了可用区 NAT 网关的当前设置。首先要为每个可用区创建可用区 NAT 网关，并将您的 NAT 托管到公有子网中。然后为每个可用区配置从您的私有子网到该可用区中 NAT 的单独路由。每次将工作负载扩展到新的可用区时，都需要重复此步骤，以实现高可用性。此外还需要在每个可用区的 NAT 子网路由表中添加互联网网关的路由。

而使用区域 NAT 网关时，无需创建公有子网来托管该网关。此外也不必在每次将工作负载扩展到新的可用区时创建和删除 NAT 网关以及编辑路由表。只需创建一个具有区域模式的 NAT 网关，选择您的 VPC，然后该网关就会根据您的工作负载在所有可用区之间自动扩展和缩减，从而实现高可用性。如图 B 所示，您可以跨所有可用区将来自某个私有子网中资源的流量路由到此单一区域 NAT 网关 ID，也可使用同一路由表跨可用区中的子网执行网络地址转换。创建区域 NAT 网关后，AWS 会自动为其创建一个路由表，其中包含通往互联网网关的预配置路由。您可以使用此路由表添加到中间设备的回程路由。



## 优势
<a name="benefits"></a>

区域 NAT 网关具有以下优点：
+ **简化设置**：跨具有网络接口的所有可用区使用单个 NAT ID，从而可以将同一路由条目用于不同可用区中的子网。
+ **增强安全性**：无需使用公有子网。区域 NAT 网关是一种独立的资源，具有自己的路由表，无需使用 VPC 中的公有子网来托管区域 NAT 网关，从而减少错误将私有资源配置到具有公共连接的子网中的可能性。
+ **自动实现高可用性**：可自动根据工作负载的空间占用情况扩展和缩减，以保持可用区亲和性，默认提供高可用性。
+ **提高端口和 IP 数上限**：区域 NAT 网关支持每个可用区使用最多 32 个 IP 地址（而可用区 NAT 网关仅支持 8 个）。每个 IP 地址的热点目标（由目标 IP、目标端口和协议的唯一组合来标识）并发连接数上限增加了 55,000 个。

## 区域 NAT 网关的使用场景
<a name="when-to-use-regional-nat-gateways"></a>

所有使用案例都可考虑使用区域 NAT 网关，但需要私有连接的场景除外。区域 NAT 网关不提供私有连接；对于私有 NAT 使用案例，我们建议在可用区可用性模式下使用 NAT 网关。

## 区域 NAT 网关的工作原理
<a name="how-regional-nat-gateways-work"></a>

当您在新的可用区中启动资源时，区域 NAT 网关会检测该可用区中是否存在网络接口（ENI），然后自动扩展到该可用区。同样，NAT 网关将缩减没有活动工作负载的可用区。

区域 NAT 网关完成资源实例化后，最长可能需要 60 分钟才能扩展到新可用区。在完成此扩展之前，来自该资源的相关流量将由您的区域 NAT 网关在现有可用区之一中跨可用区处理。

区域 NAT 网关支持两种模式：
+ **自动模式**：在此模式下，AWS 会自动管理 IP 地址和可用区扩展（推荐）。如果需要在此模式下使用自己的 IP 地址并使用 Amazon VPC IPAM，请参阅《Amazon VPC IPAM 用户指南》中的[使用 IPAM 策略定义公有 IPv4 分配策略](https://docs.aws.amazon.com/ipam/define-public-ipv4-allocation-strategy-with-ipam-policies.xml)**。
+ **手动模式**：在此模式下，您可以手动管理 IP 地址并控制每个可用区的网络地址转换。在手动模式下，您负责跨可用区扩展和缩减自己的 NAT 网关。

## 定价
<a name="pricing"></a>

有关定价信息，请参阅 [Amazon VPC 定价](https://aws.amazon.com/vpc/pricing/)。

## 创建区域 NAT 网关
<a name="create-a-regional-nat-gateway"></a>

### 使用控制台
<a name="using-the-console"></a>

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 在导航窗格中，选择 **NAT 网关**。

1. 选择**创建 NAT 网关**。

1. 对于**可用性模式**，请选择**区域**。选择区域可用性后，您无需指定任何子网

1. 选择 VPC。

1. 完成其余的配置，然后选择**创建 NAT 网关**。

### 使用 AWS CLI
<a name="using-the-aws-cli"></a>

创建区域 NAT 网关

```
aws ec2 create-nat-gateway --vpc-id vpc-12345678 --availability-mode regional
```

查看 NAT 网关详细信息

```
aws ec2 describe-nat-gateways --nat-gateway-ids nat-12345678
```

添加 IP 地址（手动模式）

```
aws ec2 associate-nat-gateway-address --nat-gateway-id nat-12345678 --availability-zone us-east-1b --allocation-ids eipalloc-12345678
```

移除 IP 地址

```
aws ec2 disassociate-nat-gateway-address --nat-gateway-id nat-12345678 --association-ids eipassoc-12345678
```

删除区域 NAT 网关

```
aws ec2 delete-nat-gateway --nat-gateway-id nat-12345678
```

## 从可用区 NAT 网关转换为区域 NAT 网关
<a name="convert-from-zonal-to-regional-nat-gateways"></a>

**重要**  
这将重置现有的连接。建议在维护时段完成这些步骤。

您可以使用以下两种方法之一将现有的可用区 NAT 网关转换为区域 NAT 网关：

**如果使用具有新 IP 地址的区域 NAT 网关，请执行以下操作：**

1. 创建一个新的区域 NAT 网关

1. 更新路由表以指向该区域 NAT 网关

1. 删除原可用区 NAT 网关

此方法会使用新的 IP 地址，并在更新路由时重置现有连接。

**如果要在区域 NAT 网关中继续使用现有 IP 地址：**

1. 删除现有的可用区 NAT 网关以释放其 IP 地址

1. 使用释放的 IP 地址创建一个区域 NAT 网关

1. 更新路由表以指向该区域 NAT 网关

这种方法可以保留 IP 地址，但由于在转换期间会中断流量，因此需要在维护时段执行。