> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 准备 VPC

> 确保在安装 AutoMQ 之前准备好 AWS 资源，包括 VPC、EKS、S3 等基础设施。本文详述在 AWS 上准备各种云资源的步骤和注意事项。

AutoMQ Cloud BYOC 环境的所有组件部署在用户 AWS 账户内，以确保数据隐私和安全。安装 AutoMQ 之前需要提前准备各种 AWS 资源。本文介绍如何在 AWS 公共云上准备 AutoMQ 需要的各种云资源。

<Info>
  本文中提及 AutoMQ 产品服务方、AutoMQ 服务方、AutoMQ，均特指 AutoMQ HK Limited及其附属公司。
</Info>

## 准备 VPC

您可以选择在安装 AutoMQ 时使用现有的 VPC，或者为 AutoMQ 创建一个全新的 VPC。对于生产环境，我们建议您检查并调整现有 VPC 的配置以满足 AutoMQ 的要求。对于 POC 测试，创建一个新 VPC 是更快捷的选择。

### VPC 要求

在 AWS 上部署 AutoMQ BYOC 环境，您的 VPC 必须满足以下条件：

| **资源**         | **要求说明**                                                                                                                                            |
| :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |
| **控制面子网**      | **1 个**。用于部署 AutoMQ BYOC 环境控制台，需要支持通过 NAT 等方式连通公网。                                                                                                  |
| **数据面子网**      | **1 个或 3 个**。用于部署 AutoMQ 数据面集群。根据您选择的单可用区或三可用区部署模式，需要对应数量的内网子网。                                                                                     |
| **S3 网关终端节点**  | **1 个**。确保 AutoMQ 组件通过 AWS 内网访问 S3，避免产生公网流量费用。终端节点的路由表必须覆盖所有内网子网。                                                                                   |
| **EC2 接口终端节点** | **1 个**。确保 AutoMQ 组件通过 AWS 内网调用 EC2 和 Auto Scaling 的 API。                                                                                           |
| **DNS 配置**     | **启用**。VPC 必须启用 **DNS 主机名**和 **DNS 解析**，因为 AutoMQ 依赖 Route 53 提供 VPC 内的 DNS 解析服务。                                                                   |
| **NAT 网关**     | **1 个**。如果您计划将 AutoMQ 数据面集群部署在 EKS 上，则必须为 EKS 工作节点所在的内网子网配置 NAT 网关和正确的公网出口路由。<br /><Danger> **注意**：如果未正确配置 NAT 网关，在 EKS 上安装 AutoMQ 集群将会失败。</Danger> |

### 场景一：创建新 VPC

如果您需要为 AutoMQ 创建一个全新的 VPC，建议您使用 AWS VPC 控制台的 **VPC and more** 功能。

1. 登录到 [AWS VPC 控制台](https://console.aws.amazon.com/vpc/home)。
2. 在左侧导航栏中，选择 **Your VPCs**，然后点击 **Create VPC**。
3. 在 **VPC settings** 中，选择 **VPC and more**。
4. 在 **Name tag auto-generation** 部分，为您的 VPC 设置一个清晰的名称。
5. 配置 **IPv4 CIDR block**，**Number of Availability Zones**，**Number of public subnets** 和 **Number of private subnets**。
6. 根据您的部署需求，选择是否创建 **NAT gateway(s)** 和 **VPC endpoints**。
   * **NAT Gateway**：如果您计划在 EKS 上部署 AutoMQ，请至少选择 **1 per AZ**。
   * **VPC Endpoints**：选择 **S3 Gateway**，这将自动创建一个网关类型的 S3 终端节点。
7. 确保 **DNS options** 下的 **Enable DNS hostnames** 和 **Enable DNS resolution** 均已勾选。
8. 点击 **Create VPC**。

VPC 创建完成后，您还需要手动为其创建一个 EC2 接口终端节点。

1. 在 [AWS VPC 控制台](https://console.aws.amazon.com/vpc/home) 的左侧导航栏中，选择 **Endpoints**。
2. 点击 **Create endpoint**。
3. **Name tag**：为终端节点命名。
4. **Service category**：选择 **AWS services**。
5. **Services**：搜索并选择 `com.amazonaws.<region>.ec2` 接口服务。
6. **VPC**：选择您刚刚创建的 VPC。
7. **Subnets**：选择所有用于部署 AutoMQ 的内网子网。
8. **Security groups**：选择或创建一个安全组，并添加入站规则，允许来自您的 VPC CIDR 的 HTTPS (443) 流量。
9. 点击 **Create endpoint**。

### 场景二：配置现有 VPC

如果要在现有 VPC 中部署 AutoMQ，请逐一核对以下配置是否满足要求。

#### 1. 检查 DNS 配置

1. 在 [AWS VPC 控制台](https://console.aws.amazon.com/vpc/home) 的左侧导航栏中，选择 **Your VPCs**。
2. 选择您的目标 VPC，然后查看 **Details** 标签页。
3. 确认 **DNS hostnames** 和 **DNS resolution** 的值均为 **Enabled**。如果不是，请点击 **Actions** -> **Edit VPC settings** 进行修改。

#### 2. 检查 S3 终端节点

1. 在 [AWS VPC 控制台](https://console.aws.amazon.com/vpc/home) 的左侧导航栏中，选择 **Endpoints**。
2. 搜索并检查是否存在一个类型为 **Gateway** 的 S3 终端节点（服务名称为 `com.amazonaws.<region>.s3`）已关联到您的 VPC。
3. 如果不存在，请点击 **Create endpoint** 创建一个。
   * 创建时，请确保其路由表（**Route tables**）关联了所有将用于部署 AutoMQ 的内网子网。

#### 3. 检查 EC2 终端节点

1. 在 **Endpoints** 页面，继续搜索并检查是否存在一个类型为 **Interface** 的 EC2 终端节点（服务名称为 `com.amazonaws.<region>.ec2`）已关联到您的 VPC。
2. 如果不存在，请点击 **Create endpoint** 创建一个。
   * **Subnets**：确保选择了所有将用于部署 AutoMQ 的内网子网。
   * **Security groups**：选择或创建一个安全组，并添加入站规则，允许来自您的 VPC CIDR 的 HTTPS (443) 流量。
   * **Enable DNS name**：务必勾选 **Enable DNS name**，开启 Private DNS 解析，以确保 AutoMQ 组件能够通过私有 DNS 名称正确访问 EC2 API。

## 准备 Private DNS（可选）

AutoMQ 集群通过 Private DNS 对应用暴露服务地址，这依赖于 VPC 内的私有域名解析，因此需要配置 Private DNS 来提供可靠的域名解析服务。您可以选择由 AutoMQ 控制台自动创建 Private DNS Zone 或者参考下方教程自行准备 Private DNS Zone。

### Private DNS Zone 要求

配置 Private DNS 时，必须满足以下两个关键条件：

| **条件**<br />          | **说明**<br />                                      | **重要性**<br /> |
| --------------------- | ------------------------------------------------- | ------------- |
| **关联 VPC**<br />      | Private DNS 必须与部署 AutoMQ 的 VPC 进行关联               | **必需**        |
| **域名和 TLS 一致性**<br /> | 如果后续需要使用 TLS 功能，Private DNS 的域名必须与 TLS 证书中的域名保持一致 | **按需**        |

### 配置 Private DNS 步骤

#### 步骤 1：检查现有 Private DNS

1. 登录 AWS 控制台，访问 [Route53 控制台](https://console.aws.amazon.com/route53/)。
2. 在左侧导航栏选择 **Hosted zones**。
3. 查看是否已经存在与目标 VPC 关联的 Private DNS。

#### 步骤 2：创建或配置 Private DNS

**如果已有 Private DNS：**

1. 选择目标 Private DNS，点击 **Details**。
2. 确认 **Type** 为 **Private hosted zone**。
3. 检查 **VPCs** 部分，确保包含部署 AutoMQ 的 VPC。
4. 记录域名信息，用于后续 TLS 功能配置。

**如果需要新建 Private DNS：**

1. 点击 **Create hosted zone**
2. 配置基本信息：
   * **Domain name**：输入私有域名（如：internal.example.com）。
   * **Type**：选择 **Private hosted zone**。
   * **VPC**：选择部署 AutoMQ 的 VPC 和对应区域。
3. 点击 **Create hosted zone**。

#### 步骤 3：验证配置

1. 在 Private DNS 详情页面，确认 VPC 关联状态。
2. 检查域名配置是否符合 TLS 功能规划需求。
3. 记录 Private DNS 的 ID 和域名，后续安装时需要提供给 AutoMQ 组件使用。

## 准备集群安全组（可选）

在集群部署过程中，您可以选择使用一个预先配置好的安全组来精确控制网络访问策略。如果您选择此方式，需要预先创建一个安全组，并根据下表配置其入站规则。如果您希望简化网络配置，也可以选择在创建集群时由 AutoMQ 自动为您创建一个新的、已包含所有必需规则的安全组，在这种情况下，您无需执行本章节的操作。

| 端口   | 用途                                                | 需要允许的访问来源                                       | 启用条件                     |
| :--- | :------------------------------------------------ | :---------------------------------------------- | :----------------------- |
| 9093 | Controller 节点对集群内部暴露 PLAINTEXT 协议，供集群内部通信使用       | <ul><li>集群内部组件</li></ul>                        | 默认开启                     |
| 9103 | Controller 节点对集群内部暴露 SASL\_PLAINTEXT 协议，供集群内部通信使用 | <ul><li>集群内部组件</li></ul>                        | 默认开启                     |
| 9092 | 通过 PLAINTEXT 协议对客户端暴露 Kafka 服务                    | <ul><li>控制台</li><li>集群内部组件</li><li>应用</li></ul> | 默认开启                     |
| 9102 | 通过 SASL\_PLAINTEXT 协议对客户端暴露 Kafka 服务              | <ul><li>控制台</li><li>集群内部组件</li><li>应用</li></ul> | 默认开启                     |
| 9112 | 通过 SASL\_SSL 协议对客户端暴露 Kafka 服务                    | <ul><li>控制台</li><li>集群内部组件</li><li>应用</li></ul> | 可选开启                     |
| 9122 | 通过 SSL 协议对客户端暴露 Kafka 服务                          | <ul><li>控制台</li><li>集群内部组件</li><li>应用</li></ul> | 可选开启                     |
| 9090 | 提供 Prometheus Metrics Exporter 读取指标的接口            | <ul><li>控制台</li><li>应用（可选）</li></ul>            | 默认开启                     |
| 22   | 集群节点默认 ssh 协议端口，需要向控制台节点暴露，用于应急问题分析               | <ul><li>控制台</li></ul>                           | 默认启用                     |
| 8081 | 托管的 SchemaRegistry 服务端口                           | <ul><li>集群内部组件</li><li>应用</li></ul>             | 可选开启，仅在开启 TableTopic 时需要 |

<Tip>
  上方表格中提到的访问来源说明：

  * **控制台**：建议配置为 AutoMQ 控制台所在的 Subnet CIDR。
  * **集群内部组件**：请选择创建集群实例时所选择的 Subnet CIDR。
  * **应用**：指应用访问 Kafka 服务的来源，由您根据实际业务需求自定义配置。
</Tip>

## 准备 FSX 文件系统安全组（可选）

如果您计划在 AWS 环境中使用 AutoMQ 并利用 FSx for NetApp ONTAP 作为 WAL (Write-Ahead Log) 的存储后端，您需要为 FSx 文件系统配置一个专用的安全组。本章节详细说明了该安全组所需的入站规则。如果您希望在部署过程中由 AutoMQ 自动创建和配置此安全组，则可以跳过本章节。

| 端口   | 访问来源                                 | 用途                                | 启用条件 |
| :--- | :----------------------------------- | :-------------------------------- | :--- |
| 443  | <ul><li>控制台</li><li>集群内部组件</li></ul> | AutoMQ 集群以及控制台调用 FSx ONTAP 管理 API | 默认启用 |
| 22   | <ul><li>集群内部组件</li></ul>             | AutoMQ 集群内部各节点访问 FSx 服务           | 默认启用 |
| 111  | <ul><li>集群内部组件</li></ul>             | AutoMQ 集群内部各节点访问 FSx 服务           | 默认启用 |
| 635  | <ul><li>集群内部组件</li></ul>             | AutoMQ 集群内部各节点访问 FSx 服务           | 默认启用 |
| 2049 | <ul><li>集群内部组件</li></ul>             | AutoMQ 集群内部各节点访问 FSx 服务           | 默认启用 |
| 4045 | <ul><li>集群内部组件</li></ul>             | AutoMQ 集群内部各节点访问 FSx 服务           | 默认启用 |
| 4046 | <ul><li>集群内部组件</li></ul>             | AutoMQ 集群内部各节点访问 FSx 服务           | 默认启用 |

<Tip>
  上方表格中提到的访问来源说明：

  * **控制台**：建议配置为 AutoMQ 控制台所在的子网 CIDR（段）。
  * **集群内部组件**：请选择创建集群实例时所选择的子网 CIDR（段）。
</Tip>

## 准备 EFS 文件系统安全组（可选）

如果您计划在 AWS 环境中使用 AutoMQ 并利用 EFS (Elastic File System) 作为 NFS WAL 的存储后端，您需要为 EFS 文件系统配置一个专用的安全组。本章节详细说明了该安全组所需的入站规则。如果您希望在部署过程中由 AutoMQ 自动创建和配置此安全组，则可以跳过本章节。

| 端口   | 访问来源                     | 用途                                 | 启用条件 |
| :--- | :----------------------- | :--------------------------------- | :--- |
| 2049 | <ul><li>集群内部组件</li></ul> | AutoMQ 集群内部各节点通过 NFS 协议访问 EFS 文件系统 | 默认启用 |

<Tip>
  上方表格中提到的访问来源说明：

  * **集群内部组件**：请选择创建集群实例时所选择的子网 CIDR（段）。
</Tip>
