连接到 Amazon Neptune 终端节点 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

连接到 Amazon Neptune 终端节点

Amazon Neptune 使用数据库实例集群而不是单个实例。每个 Neptune 连接均由特定的数据库实例处理。在连接到 Neptune 集群时,您指定的主机名和端口将指向名为终端节点. Neptune 终端节点是包含主机地址和端口的 URL。neptune 终端节点使用加密的传输层安全/安全套接字层 (TLS/SSL) 连接。

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

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

集群终端节点

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

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

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

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

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

读取器终端节点

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

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

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

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

注意

WebSocket 连接通常可长时间保持活动状态。要获取不同的只读副本,请执行以下操作:

  • 确保您的客户端在每次连接时都会解析 DNS 条目。

  • 关闭连接,然后重新连接。

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

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

注意

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

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

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

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

实例终端节点

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

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

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

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

自定义终端节点

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

Neptune 数据库集群在创建一个之前没有自定义终端节点,并且,您可以为每个预配置的 Neptune 集群创建最多 5 个自定义终端节点。

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

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

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

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

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

Neptune 端点注意事项

处理 Neptune 终端节点时,请考虑以下事项:

  • 使用实例终端节点连接到数据库集群中的特定数据库实例之前,请考虑改为对数据库集群使用集群终端节点或读取方终端节点。

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

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

    有关故障转移的更多信息,请参阅Neptune 数据库集群的容错能力

     

  • 读取器终端节点仅将连接定向到 Neptune 数据库集群中的可用 Neptune 副本。它不会定向特定查询。

    重要

    Neptune 不会执行负载均衡。

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

     

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

     

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

自定义终端节点

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

您可以定义要包含在自定义终端节点中的数据库实例的列表(静态的list),或者要从自定义终端节点中排除的一个(.排除列表)。您可以使用包含/排除机制将数据库实例细分为组,并确保自定义终端节点涵盖集群中的所有数据库实例。每个自定义终端节点只能包含其中一种列表类型。

在 Amazon Web Services Management Console 中,该选项由 Attach future instances added to this cluster (挂载以后添加到此集群的实例) 复选框表示。如果清除该复选框,则自定义终端节点将使用仅包含对话框中指定的数据库实例的静态列表。选中此复选框时,自定义终端节点将使用排除列表。在这种情况下,自定义终端节点表示集群中的所有数据库实例(包括您将来添加的任何实例),但在对话框中 future 选中的实例除外。

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

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

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

如果 Neptune 副本变得不可用,它仍将与其自定义终端节点关联。无论它处于不正常、已停止、重新启动或者由于其他原因无法使用,都是如此。但是,只要它保持不可用,就无法通过任何终端节点连接到它。

由于新创建的 Neptune 集群没有自定义终端节点,因此,您必须自行创建和管理它们。对于从快照还原的 Neptune 集群也是如此,因为自定义终端节点不包括在快照中。您可以在还原后再次创建它们,并且如果还原的集群与原始集群位于同一区域,请选择新的终端节点名称。

创建自定义终端节点

使用 Neptune 控制台管理自定义终端节点。通过导航至 Neptune 集群的详细信息页面,然后使用定制端节点部分。

  1. 登录到Amazon并通过以下网址打开 Amazon Neptune 控制台:https://console.aws.amazon.com/neptune/home.

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

  3. 选择Create custom endpoint中的操作终端节点部分。

  4. 为自定义终端节点选择一个名称,该名称对于用户 ID 和区域是唯一的。名称的长度必须不超过 63 个字符,并采取以下形式:

    endpointName.cluster-custom-customerDnsIdentifier.dnsSuffix

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

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

查看自定义终端节点

  1. 登录到Amazon并通过以下网址打开 Amazon Neptune 控制台:https://console.aws.amazon.com/neptune/home.

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

  3. 这些区域有:终端节点此部分仅包含有关自定义终端节点的信息(有关内置终端节点的详细信息列于主详细信息部分)。要查看特定自定义终端节点的详细信息,请选择其名称以显示该终端节点的详细信息页。

编辑自定义终端节点

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

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

  1. 登录到Amazon并通过以下网址打开 Amazon Neptune 控制台:https://console.aws.amazon.com/neptune/home.

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

  3. 终端节点部分中,选择您要编辑的自定义终端节点的名称。

  4. 在该终端节点的详细信息页面中,选择编辑action.

删除自定义终端节点

  1. 登录到Amazon并通过以下网址打开 Amazon Neptune 控制台:https://console.aws.amazon.com/neptune/home.

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

  3. 终端节点部分中,选择要删除的自定义终端节点的名称。

  4. 在该终端节点的详细信息页面中,选择Deleteaction.