

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

# 连接到 Amazon Neptune 端点
<a name="feature-overview-endpoints"></a>

Amazon Neptune 使用数据库实例的集群而不是单个实例。每个 Neptune 连接均由特定的数据库实例处理。在连接到 Neptune 集群时，您指定的主机名和端口将指向名为*端点*的中间处理程序。终端节点是包含主机地址和端口的 URL。Neptune 端点使用加密的（传输层Security/Secure Sockets Layer (TLS/SSL）连接。

Neptune 使用端点机制来抽象这些连接，以便您不必对主机名进行硬编码，也不必在某些数据库实例不可用时编写自己的逻辑来重新路由连接。

通过使用端点，您可以根据用例将每个连接映射到相应的实例或实例组。自定义端点允许您连接到数据库实例的子集。Neptune 数据库集群中提供以下端点：

## Neptune 集群端点
<a name="feature-overview-cluster-endpoints"></a>

集群端点是 Neptune 数据库集群的一个端点，连接到该数据库集群的当前主数据库实例。每个 Neptune 数据库集群都具有集群端点和一个主数据库实例。

集群终端节点为数据库集群的 read/write 连接提供故障转移支持。对数据库集群上的所有写入操作使用集群终端节点，这些操作包括插入、更新、删除和数据定义语言 (DDL) 更改。您还可以对读取操作（如查询）使用集群端点。

如果数据库集群的当前主数据库实例失败，Neptune 将自动失效转移到新的主数据库实例。在故障转移期间，数据库集群将继续为从新的主数据库实例到集群终端节点的请求提供服务，对服务造成的中断最少。

以下示例介绍 Neptune 数据库集群中的集群端点。

`mydbcluster.cluster-123456789012.us-east-1.neptune.amazonaws.com:8182`

## Neptune 读取器端点
<a name="feature-overview-reader-endpoints"></a>

读取器端点是 Neptune 数据库集群的一个端点，连接到该数据库集群的可用 Neptune 副本之一。每个 Neptune 数据库集群都具有一个读取器端点。如果有多个 Neptune 副本，则读取器端点会将每个连接请求定向到 Neptune 副本之一。

读取器终端节点为数据库集群的只读连接提供轮询路由。对读取操作（如 查询）使用读取器端点。

除非您拥有单实例集群（没有只读副本的集群），否则您无法将读取器终端节点用于写入操作。当且仅当在这种情况下，读取器可以用于写入操作以及读取操作。

读取器终端节点轮询路由的运行方式是更改 DNS 条目指向的主机。每次解析 DNS 时，你会得到一个不同的 IP，并且会针对这些IP打开连接 IPs。建立连接之后，对于该连接的所有请求将发送到同一个主机。客户端必须创建新连接并再次解析 DNS 记录，以获取到可能不同的只读副本的连接。

**注意**  
WebSockets 连接通常会长时间保存。要获取不同的只读副本，请执行以下操作：  
确保您的客户端在每次连接时都会解析 DNS 条目。
关闭连接，然后重新连接。

不同的客户端软件可能在解析 DNS 的方式上各有不同。例如，如果您的客户端解析 DNS，然后对于每个连接使用该 IP，则它会将所有请求定向到单个主机。

客户端或代理的 DNS 缓存将 DNS 名称解析为缓存中的相同终端节点。这对于轮询路由和故障转移场景都是一个问题。

**注意**  
禁用任何 DNS 缓存设置以每次强制执行 DNS 解析。

数据库集群在可用 Neptune 副本之间分配对读取器端点的连接请求。如果数据库集群只包含主数据库实例，则读取方终端节点从主数据库实例为连接请求提供服务。如果为该数据库集群创建了 Neptune 副本，则读取器端点将从新 Neptune 副本继续为针对读取器端点的连接请求提供服务，对服务造成的中断最少。

以下示例介绍 Neptune 数据库集群的读取器端点。

`mydbcluster.cluster-ro-123456789012.us-east-1.neptune.amazonaws.com:8182`

## Neptune 实例端点
<a name="feature-overview-instance-endpoints"></a>

实例端点是 Neptune 数据库集群中数据库实例的一个端点，连接到该特定数据库实例。数据库集群中的每个数据库实例具有自己的唯一实例终端节点，而不论具有何种实例类型。因此，数据库集群的当前主数据库实例具有一个实例终端节点。数据库集群中的每个 Neptune 副本也都具有一个实例端点。

对于可能不适合使用集群终端节点或读取器终端节点的场景，实例终端节点提供对与数据库集群连接的直接控制。例如，您的客户端应用程序可能根据工作负载类型需要精细的负载均衡。在这种情况下，您可以配置多个客户端以连接到数据库集群中的不同 Neptune 副本，以便分配读取工作负载。

以下示例介绍 Neptune 数据库集群中数据库实例的实例端点。

`mydbinstance.123456789012.us-east-1.neptune.amazonaws.com:8182`

## Neptune 自定义端点
<a name="feature-overview-custom-endpoints"></a>

Neptune 集群的自定义端点表示一组选定数据库实例。在连接到端点时，Neptune 选择组中的实例之一来处理连接。您可以定义此终端节点引用的实例，并确定此终端节点的用途。

在创建自定义端点之前，Neptune 数据库集群没有自定义端点，您可以为每个预调配的 Neptune 集群创建最多五个自定义端点。

自定义终端节点根据数据库实例的只读或 read/write 功能以外的标准提供负载平衡的数据库连接。因为连接可以转到与端点关联的任何数据库实例，所以，请确保该组中的所有实例共享相同的性能和内存容量特征。在使用自定义终端节点时，通常不使用该集群的读取器终端节点。

此特征适用于具有特殊类型的工作负载的高级用户，在这些工作负载下，使集群中的所有 Neptune 副本保持相同是不切实际的。利用自定义端点，您可以调整用于每个连接的数据库实例的容量。

例如，如果您定义了多个自定义端点，这些端点连接到具有不同实例类的实例组，则可以将具有不同性能需求的用户定向到最适合其用例的端点。

以下示例介绍 Neptune 数据库集群中数据库实例的自定义端点：

`myendpoint.cluster-custom-123456789012.us-east-1.neptune.amazonaws.com:8182`

请参阅[使用自定义端点](feature-custom-endpoint-membership.md)了解更多信息。

## Neptune 端点注意事项
<a name="feature-overview-endpoint-considerations"></a>

使用 Neptune 端点时，请考虑以下问题：
+ 使用实例终端节点连接到数据库集群中的特定数据库实例之前，请考虑改为对数据库集群使用集群终端节点或读取方终端节点。

  集群终端节点和读取方终端节点可提供对高可用性场景的支持。如果数据库集群的主数据库实例失败，Neptune 将自动失效转移到新的主数据库实例。它通过将现有 Neptune 副本提升为新的主数据库实例或者创建新的主数据库实例来完成该操作。如果发生了失效转移，您可以使用集群端点重新连接到新提升或新创建的主数据库实例，或者使用读取器端点重新连接到数据库集群中的其它 Neptune 副本之一。

  如果未采用此方法，您仍可以确保连接到数据库集群中的合适数据库实例来执行目标操作。为此，您可以在故障转移之后，以手动或以编程方式先搜索数据库集群中得到的可用数据库实例集，并确认其实例类型，然后再使用特定数据库实例的实例终端节点。

  有关失效转移的更多信息，请参阅[Neptune 数据库集群的容错能力](backup-restore-overview-fault-tolerance.md)。

   
+ 读取器端点仅将连接定向到 Neptune 数据库集群中的可用 Neptune 副本。它不会定向特定查询。
**重要**  
Neptune 不会执行负载均衡。

  如果您要实现查询的负载均衡以分配数据库集群的读取工作负载，则必须在应用程序中进行管理。您必须使用实例端点直接连接到 Neptune 副本以进行负载平衡。

   
+ 读取器终端节点轮询路由的运行方式是更改 DNS 条目指向的主机。客户端必须创建新连接并再次解析 DNS 记录，以获取到可能新的只读副本的连接。

   
+ 在失效转移期间，如果将 Neptune 副本提升为新的主数据库实例，则读取器端点可能会在短时间内将连接定向到数据库集群的新的主数据库实例。

# 在 Neptune 中使用自定义端点
<a name="feature-custom-endpoint-membership"></a>

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

您可以定义要包含在自定义端点中的数据库实例的列表（*静态*列表），也可以定义要从自定义端点中排除的数据库实例的列表（*排除*列表）。您可以使用该 inclusion/exclusion 机制将数据库实例细分为组，并确保自定义终端节点覆盖集群中的所有数据库实例。每个自定义终端节点只能包含其中一种列表类型。

在中 AWS 管理控制台，该选项由 “**附加 future 实例添加到此集群**” 复选框表示。如果清除该复选框，则自定义终端节点将使用仅包含对话框中指定的数据库实例的静态列表。选中此复选框后，自定义端点将使用排除列表。在这种情况下，自定义端点表示集群中的所有数据库实例（包括您将来添加的任何实例），但在对话框中未选中的实例除外。

当数据库实例由于失效转移或提升而在主实例和 Neptune 副本之间更改角色时，Neptune 不会更改在静态或排除列表中指定的数据库实例。

您可以将一个数据库实例与多个自定义终端节点关联。例如，假设您将新数据库实例添加到集群。在这一情况下，数据库实例将添加到它符合条件的所有自定义端点。为其定义的静态列表或排除列表决定了可以向集群添加哪个数据库实例。

如果端点包含数据库实例的静态列表，则新添加的 Neptune 副本不会添加到该端点。相反，如果端点具有排除列表，则新添加的 Neptune 副本将添加到其中，前提是未在排除列表中指定它们。

 如果一个 Neptune 副本变得不可用，该副本仍将与其自定义端点关联。无论该副本处于运行状况不正常、已停止、重启还是由于其它原因不可用，都是如此。但是，只要副本仍然不可用，您就无法通过任何端点连接到它。

由于新创建的 Neptune 集群没有自定义端点，因此，您必须自行创建和管理这些端点。从快照还原的 Neptune 集群也是如此，因为快照中不包含自定义端点。您在还原后再次创建它们，并在还原的集群与原始集群位于同一区域时选择新的端点名称。

## 创建自定义端点
<a name="feature-custom-endpoint-create"></a>

使用 Neptune 控制台管理自定义端点。为此，请导航到 Neptune 集群的详细信息页面，然后使用**自定义端点**部分中的控件。

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 导航到集群详细信息页面。

1. 在**端点**部分中选择 `Create custom endpoint` 操作。

1. 为自定义端点选择名称，该名称对于用户 ID 和区域是唯一的。名称长度必须不超过 63 个字符，并采用以下格式：

   `endpointName.cluster-custom-customerDnsIdentifier.dnsSuffix`

   由于自定义终端节点名称不包含集群的名称，因此，如果您重命名集群，则不必更改这些名称。但是，您不能为同一区域中的多个集群重用相同的自定义端点名称。为每个自定义终端节点指定一个名称，该名称在特定区域内的用户 ID 所拥有的集群中是唯一的。

1. 要选择即使在集群扩展时也保持不变的数据库实例列表，请清除 **Attach future instances added to this cluster (挂载以后添加到此集群的实例)** 复选框。如果选中该复选框，在将任何新实例添加到集群时，自定义端点将动态添加这些实例。

## 查看自定义终端节点
<a name="feature-custom-endpoints-view"></a>

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 导航到数据库集群的集群详细信息页面。

1. **端点**部分仅包含有关自定义端点的信息（有关内置端点的详细信息列在主要**详细信息**部分中）。要查看特定自定义端点的详细信息，请选择其名称以显示该端点的详细信息页。

## 编辑自定义端点
<a name="feature-custom-endpoint-edit"></a>

您可以编辑自定义端点的属性以更改与其关联的数据库实例。您也可以在静态列表和排除列表之间切换。

当编辑操作的更改正在进行中时，您无法连接或使用自定义终端节点。进行更改后，在端点状态返回**可用**并且您可以再次连接之前，可能需要几分钟时间。

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 导航到集群详细信息页面。

1. 在**端点**部分，选择要编辑的自定义端点的名称。

1. 在该端点的详细信息页面中，选择**编辑**操作。

## 删除自定义终端节点
<a name="feature-custom-endpoint-delete"></a>

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 导航到集群详细信息页面。

1. 在**端点**部分，选择要删除的自定义端点的名称。

1. 在该端点的详细信息页面中，选择**删除**操作。