

# Amazon Aurora 中自定义端点的注意事项
<a name="Aurora.Endpoints.Custom.Considerations"></a>

使用以下各节来管理、指定属性，并使用自定义端点的成员资格规则。

**Topics**
+ [管理自定义终端节点](#Aurora.Endpoints.Custom.Managing)
+ [指定自定义终端节点的属性](#Aurora.Endpoints.Custom.Properties)
+ [自定义终端节点的成员资格规则](#Aurora.Endpoints.Custom.Membership)

## 管理自定义终端节点
<a name="Aurora.Endpoints.Custom.Managing"></a>

由于新创建的 Aurora 集群没有自定义终端节点，因此，您必须自行创建和管理这些对象。您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon RDS API 完成此操作。

**注意**  
您还必须为从快照还原的 Aurora 集群创建和管理自定义终端节点。快照中不包含自定义终端节点。您在还原后再次创建它们，并在还原的集群与原始集群位于同一区域时选择新的终端节点名称。

要从 Amazon Web Services 管理控制台 中使用自定义终端节点，您可以导航到 Aurora 集群的详细信息页，并使用 **Custom Endpoints (自定义终端节点)** 部分下的控件。

要从 Amazon CLI 使用自定义终端节点，您可以使用以下操作：
+ [create-db-cluster-endpoint](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-cluster-endpoint.html)
+ [describe-db-cluster-endpoints](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-cluster-endpoints.html)
+ [modify-db-cluster-endpoint](https://docs.amazonaws.cn/cli/latest/reference/rds/modify-db-cluster-endpoint.html)
+ [delete-db-cluster-endpoint](https://docs.amazonaws.cn/cli/latest/reference/rds/delete-db-cluster-endpoint.html)

要通过 Amazon RDS API 使用自定义终端节点，您可以使用以下函数：
+ [CreateDBClusterEndpoint](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CreateDBClusterEndpoint.html)
+ [DescribeDBClusterEndpoints](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DescribeDBClusterEndpoints.html)
+ [ModifyDBClusterEndpoint](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBClusterEndpoint.html)
+ [DeleteDBClusterEndpoint](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_DeleteDBClusterEndpoint.html)

## 指定自定义终端节点的属性
<a name="Aurora.Endpoints.Custom.Properties"></a>

自定义终端节点名称的最大长度为 63 个字符。名称格式如下：

```
{{endpoint_name}}.cluster-custom-{{customer_DNS_identifier}}.{{AWS_Region}}.rds.amazonaws.com
```

您不能为同一 Amazon Web Services 区域中的多个集群重用相同的自定义端点名称。自定义 DNS 标识符是与特定 Amazon Web Services 区域中您的 Amazon Web Services 账户相关联的唯一标识符。

每个自定义终端节点都有一个关联的类型，该类型将确定哪些数据库实例有资格与该终端节点关联。目前，类型可以是 `READER` 或 `ANY`。对于自定义终端节点类型，应注意以下事项：
+ 无法在 Amazon Web Services 管理控制台中选择自定义端点类型。通过 Amazon Web Services 管理控制台 创建的所有自定义终端节点都具有类型 `ANY`。

  您可以使用 Amazon CLI 或 Amazon RDS API 设置和修改自定义端点类型。
+ 只有读取器数据库实例可以是 `READER` 自定义端点的一部分。
+ 读取器和写入器数据库实例都可以是 `ANY` 自定义端点的一部分。Aurora 以相同的概率将到 `ANY` 类型的集群终端节点的连接定向到任何关联的数据库实例。`ANY` 类型适用于使用任意复制拓扑的集群。
+  如果您尝试根据集群的复制配置创建类型不合适的自定义终端节点，则 Aurora 将返回错误。

## 自定义终端节点的成员资格规则
<a name="Aurora.Endpoints.Custom.Membership"></a>

 在将数据库实例添加到自定义终端节点或将其从自定义终端节点中删除时，与该数据库实例的任何现有连接都将保持活动状态。

 您可以定义要包含在自定义终端节点中或从其中排除的数据库实例的列表。我们将这些列表分别称为*静态* 和*排除* 列表。您可以使用包含/排除机制进一步细分数据库实例组，并确保自定义终端节点集涵盖集群中的所有数据库实例。每个自定义终端节点只能包含其中一种列表类型。

在 Amazon Web Services 管理控制台 中：
+ 该选项由复选框 **Attach future instances added to this cluster**（附加将来添加到此集群的实例）表示。如果清除该复选框，则自定义终端节点将使用仅包含页面中指定的数据库实例的静态列表。选中此复选框后，自定义终端节点将使用排除列表。在这种情况下，自定义终端节点表示集群中的所有数据库实例（包括您将来添加的任何实例），但页面中未选中的实例除外。
+ 控制台不允许您指定端点类型。使用控制台创建的任何自定义端点均属于 `ANY` 类型。

  因此，当数据库实例因失效转移或提升而在写入器和读取器之间变换角色时，Aurora 不会更改自定义端点的成员资格。

在 Amazon CLI 和 Amazon RDS API 中：
+ 您可以指定端点类型。因此，当端点类型设置为 `READER` 时，端点成员资格将在失效转移和提升期间自动调整。

  例如，类型为 `READER` 的自定义端点包含一个 Aurora 副本，此副本随后被提升为写入器数据库实例。新的写入器实例不再是自定义端点的一部分。
+ 您可以在各个成员更改其角色后将其添加到列表中或从列表中删除。使用 [modify-db-cluster-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/modify-db-cluster-endpoint.html) Amazon CLI 命令或 [ModifyDBClusterEndpoint](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBClusterEndpoint.html) API 操作。

您可以将一个数据库实例与多个自定义终端节点关联。例如，假设您将新数据库实例添加到集群，或者 Aurora 通过自动扩展机制自动添加数据库实例。在这些情况下，数据库实例将添加到它符合条件的所有自定义终端节点。要将数据库实例添加到哪些端点基于自定义端点类型 `READER` 或 `ANY`，以及为每个端点定义的任何静态或排除列表。例如，如果终端节点包含数据库实例的静态列表，则新添加的 Aurora 副本不会添加到该终端节点。相反，如果终端节点具有排除列表，则新添加的 Aurora 副本将添加到终端节点（如果它们未在排除列表中指定且其角色与自定义终端节点的类型匹配）。

如果一个 Aurora 副本变得不可用，它仍将与任何自定义终端节点关联。例如，当它处于不正常、已停止、重新启动等状态时，它仍然是自定义终端节点的一部分。但是，您无法通过这些终端节点连接到它，直到它再次可用。