大型群集

Vertica 使用 Spread 服务在数据库节点之间广播控制消息。此服务可以限制 Vertica 数据库群集的增长。随着群集节点数量的增加,Spread 服务的负载也会随着更多参与者交换消息而增加。负载增加后会降低群集的整体性能。此外,网络寻址将 Spread 服务中参与者的最大数量限制为 120(通常要少得多)。在这种情况下,您可以使用大型群集来克服这些 Spread 限制。

启用大型群集后,名为控制节点的群集节点子集使用 Spread 服务交换消息。群集中的其他节点会分配给这些控制节点之一,并依赖它们进行群集范围的通信。每个控制节点将消息从 Spread 服务传递到它的依赖节点。当依赖节点需要向群集中的其他节点广播消息时,它将消息传递给其控制节点,控制节点又将消息发送到其他依赖节点以及 Spread 服务。

通过设置控制节点和其他节点之间的依赖关系,您可以增加数据库节点的总数,并使节点总数符合 Spread 限制(即 120 个节点)。

大型群集功能的一个缺点是,如果一个控制节点发生故障,它的依赖节点就会与数据库群集的其余部分断开。这些节点无法参与数据库活动,Vertica 也认为它们已关闭。当控制节点恢复时,它会在其依赖节点与数据库之间重新建立通信,因此所有节点都重新加入群集。

大型群集和数据库增长

当您的数据库启用了大型群集时,Vertica 会决定是将新添加的节点设为控制节点还是依赖节点,如下所示:

  • 在企业模式下,如果为数据库群集配置的控制节点数大于其包含的当前节点数,Vertica 会将新节点设为控制节点。在 Eon 模式下,在子群集级别设置控制节点的数量。如果为包含新节点的子群集设置的控制节点数小于此设置,Vertica 会将新节点设为控制节点。

  • 如果企业模式群集或 Eon 模式子群集已达到其控制节点限制,则新节点将成为现有控制节点的依赖节点。

当新添加的节点为依赖节点时,Vertica 会自动将其分配给控制节点。Vertica 选择哪个控制节点由数据库模式引导:

  • 企业模式数据库:Vertica 将新节点分配给具有最少依赖项的控制节点。如果您在数据库中创建了容错组,Vertica 会在与新节点相同的容错组中选择一个控制节点。此功能允许您使用容错组来组织控制节点及其依赖项,以反映底层主机硬件的物理布局。例如,您可能希望依赖节点与其控制节点位于同一机架中。否则,影响整个机架的故障(如电源故障)不仅会导致机架中的节点关闭,而且还会导致其他架构中其控制节点位于受影响机架中的节点关闭。有关详细信息,请参阅容错组

  • Eon 模式数据库:Vertica 始终将新节点添加到子群集。Vertica 将新节点分配给该子群集中具有最少依赖节点的控制节点。启用了大型群集的 Eon 模式数据库中的每个子群集都至少有一个控制节点。将依赖节点与其控制节点保持在同一个子群集中可以保持子群集隔离。

当将子群集添加到 Eon Mode 数据库时,Spread 服务的上限(120 名参与者)可能会导致错误。如果您的数据库群集有 120 个控制节点,则尝试创建子群集会失败并出现错误。每个子群集必须至少有一个控制节点。当您的群集有 120 个控制节点时,Vertica 无法为新的子群集创建控制节点。如果发生此错误,您必须在添加子群集之前减少数据库群集中的控制节点数量。

何时启用大型群集

Vertica 在以下两种情况下自动启用大型群集:

  • 数据库群集包含 120 个或更多节点。对于企业模式和 Eon 模式都是如此。

  • 您创建一个包含 16 个或更多初始节点的 Eon 模式 子群集主要子群集或一个 辅助子群集)。

    如果您通过向现有子群集添加节点来将其扩展到 16 个或更多节点,Vertica 不会自动启用大型群集。

您可以选择在 Vertica 自动启用大型群集之前手动启用大型群集模式。您的最佳做法是在数据库群集大小达到阈值时启用大型群集:

  • 对于基于云的数据库,当群集包含 16 个或更多节点时启用大型群集。在云环境中,您的数据库使用点对点网络通信。在点对点通信模式下,Spread 服务的缩放性很差。当数据库群集达到 16 个节点时启用大型群集有助于限制因 Spread 服务处于点对点模式而造成的影响。

  • 对于内部部署数据库,当群集包含 50 到 80 个节点时启用大型群集。在内部部署环境中,Spread 服务的缩放性较好。但是,当群集达到 50 到 80 个节点时,Spread 服务可能会开始出现性能问题。

在云或内部部署环境中,如果您开始注意到与 Spread 相关的性能问题,请启用大型群集。Spread 性能问题的症状包括:

  • Spread 服务上的负载开始导致性能问题。因为 Vertica 将 Spread 服务用于群集范围的控制消息,所以 Spread 性能问题会对数据库性能产生不利影响。对于基于云的数据库尤其如此,由于云基础架构中网络广播的性质,Spread 性能问题很快成为瓶颈。在内部部署数据库中,广播消息通常不太受关注,因为消息通常保留在本地子网中。即便如此,在群集达到 120 个节点时,在 Vertica 自动启用大型群集之前,Spread 问题通常会成为瓶颈。

  • 群集中地址的压缩列表太大,无法放入最大传输单元 (MTU) 数据包(1478 字节)。MTU 数据包必须包含参与 Spread 服务的节点的所有地址。在理想情况下(当节点的 IP 地址为 1.1.1.1、1.1.1.2 等时),此数据包中可以容纳 120 个地址。这就是为什么当数据库群集达到 120 个节点时,Vertica 会自动启用大型群集。实际上,IP 地址的压缩列表将在 50 到 80 个节点处达到 MTU 数据包大小限制。