跳到主要内容

软件事件代理的高可用性

您可以在高可用性(HA)冗余组中部署PubSub+软件事件代理以实现容错。一个HA冗余组由三个事件代理实例组成:两个作为活动-备用消息节点,第三个作为监控节点。HA冗余组提供1:1的事件代理备用,以增加整体服务可用性。如果其中一个事件代理失败或被停止服务,另一个事件代理会自动接管并为之前由现在停止服务的事件代理服务的客户端提供服务。

软件事件代理HA冗余模型锚点

PubSub+软件事件代理支持主动/备用冗余模型。在此模型中,主事件代理向客户端提供消息服务,而备份事件代理处于待机模式——它仅在主事件代理失败时提供服务。第三个事件代理充当监控节点,作为决定性节点,防止脑裂场景的发生,否则会导致主事件代理和备份事件代理同时变得活跃。

软件事件代理HA冗余模型支持直接和保证消息传递客户端。

主动/备用冗余模型

VMR-Redundancy.png

在主动/备用模型中:

  • 所有客户端都连接到冗余组中的活动事件代理(通常是主事件代理)。
  • 另一个事件代理(通常是备份事件代理)仅作为备用。当一个主事件代理处于活动状态时,客户端无法连接到备用事件代理,也没有消息流量可以通过备用事件代理。
  • 活动事件代理使用IP网络自动将所有保证消息和保证消息状态传播到备用事件代理。
  • 如果主事件代理因任何原因失败,备份事件代理将变得活跃并为客户端提供消息服务。
  • 当主事件代理重新上线时,备份事件代理继续为客户端提供服务,同时自动与其保证消息和保证消息状态与主事件代理重新同步。一旦重新同步,备份事件代理可以继续为客户端提供服务(软件事件代理的默认行为),或者它可以将活动转移回主事件代理(如果您已配置软件事件代理自动恢复到主)。

同步软件事件代理配置锚点

软件事件代理HA冗余组中的主事件代理和备份事件代理必须具有相同的系统和消息VPN级配置,并且这些配置必须在事件代理运行时保持同步。Config-Sync设施用于自动同步它们的配置。

配对链接服务也用于主事件代理和备份事件代理之间保证消息和消息状态的同步。配对链接服务使用管理VRF进行客户端的通信流量,以及活动和备用事件代理之间的保证消息数据同步全部在同一接口上完成。

故障转移机制锚点

PubSub+软件事件代理支持主机列表故障转移机制,该机制在节点故障时将客户端连接从一个消息路由节点转移到另一个节点。此机制使用主事件代理和备份事件代理的IP地址列表或相应的DNS名称。主事件代理和备份事件代理始终具有不同的IP地址,但只有一个是活跃的并接受连接。连接的客户端知道这些IP地址,客户端(不是HA组的事件代理)处理从一个IP地址重新连接到另一个IP地址。

客户端API负责连接到HA冗余组中的活动事件代理。这种配置在云环境中很常见。

您的客户端API和VPN桥接连接必须配置有HA冗余组中主事件代理和备份事件代理的主机列表。一旦配置,如果主事件代理由于任何原因变得不可用,备份事件代理将接管活动,客户端API和消息VPN桥将重新连接到新的活动事件代理,而不会影响客户端应用程序。

客户端主机列表锚点

这种故障转移机制依赖于客户端应用程序使用配置的主机列表连接和重新连接到HA冗余组的有效主机。有关Solace消息API使用主机列表的信息,请参考主机。

使用主机列表时,活动软件事件代理将接受管理VRF静态IP地址上的客户端连接,备用事件代理将拒绝此类连接请求。主事件代理和备份事件代理IP接口被忽略,客户端连接到这些接口也被拒绝。

使用主机列表连接的客户端

HA-Redundancy-Clients-Using-Host-List.png

请注意,客户端应用程序的主机列表配置了两个IP地址:

  • 主事件代理的管理VRF静态IP地址(或相应的DNS名称)
  • 备用事件代理的管理VRF静态IP地址(或相应的DNS名称)

VPN桥接和容错锚点

有关如何在远程事件代理部署在高可用性(HA)冗余事件代理对中以实现容错时建立消息VPN桥接连接到远程事件代理的详细信息,请参见桥接到使用冗余的远程事件代理。

软件事件代理IP地址配置锚点

PubSub+软件事件代理依赖于消息骨干服务来处理所有来自和到客户端的消息流量,并依赖于管理服务来处理管理流量。消息骨干和管理服务都共享用于连接到IP网络的管理虚拟路由和转发(VRF)对象。

默认情况下,软件事件代理有一个单独的网络接口,该接口映射到管理VRF。这与具有两个单独网络接口的PubSub+硬件不同。

默认情况下,软件事件代理网络接口配置为DHCP客户端。然而,要使用软件事件代理冗余,HA冗余组中的每个事件代理实例,包括监控节点,都必须有一个与管理VRF相关联的唯一静态IP地址,并且此IP地址必须在同一个子网中并且静态配置(即,不支持DHCP)。在HA冗余组中使用静态IP地址是软件事件代理冗余功能的一个先决条件。

故障检测锚点

HA冗余组中的所有三个节点——主节点、备份节点和监控节点——使用在管理VRF中的静态IP接口上运行的协议持续相互通信,默认情况下使用端口8300、8301和8302。

如果组中的活动事件代理由于任何原因变得无法到达,并且监控节点和备份事件代理都看不到活动事件代理,但他们仍然可以看到彼此,那么备份事件代理将接管活动,并为客户端提供消息服务。

同样,如果活动事件代理与备用事件代理和监控节点失去连接,活动事件代理将放弃活动,以消除它可能以脑裂方式运行的可能性。这意味着,事件代理要接管(或保持)活动并提供服务,它必须能够与组中的至少一个其他节点通信——无论是配对事件代理和/或监控节点。

为了使冗余正常工作,组中的所有三个节点都需要用管理VRF静态IP地址配置其他节点,以及每个节点的分配角色(消息路由节点或监控节点)。

HA冗余组中的所有三个节点还需要配置相同的HA冗余组密码作为安全机制,以确保只有组中的节点可以相互通信,并且网络上的其他主机不能冒充事件代理或尝试加入HA冗余组。

下图显示了正确的故障检测配置。

配置故障检测

HA-Redundancy-Fail-Detect-Config.png

请注意,上面所有三个节点在HA冗余组中都配置了静态IP地址。

故障转移序列

如果活动事件代理离线,HA冗余组中会检测到故障。

随后,按照以下顺序发生故障转移:

  1. 备份事件代理接管消息活动。
  2. 一旦失败的主事件代理重新上线,它将重新同步以匹配当前活动的备份事件代理。
  3. 主事件代理承担“备用”角色,或者,如果启用了自动恢复,消息活动会自动切换回主事件代理。

下图详细显示了故障转移序列。

正常操作

下图显示了在正常操作下典型的HA冗余组,当时主事件代理和备份事件代理都在线并且能够为客户端提供服务。此组配置了客户端连接的主机列表(192.168.1.1和192.168.1.2)。

带有主机列表的正常操作

HA-Redundancy-Normal-Op.png

接管活动

如果活动事件代理失败或被离线,备份事件代理和监控节点将检测到故障,备份事件代理将接管活动。当备份事件代理接管活动时,它将开始接受管理VRF静态IP地址上的连接。连接的客户端将遍历它们的主机列表,并使用备份事件代理的静态IP地址(在管理VRF上)连接到备份事件代理。

下图显示了故障转移机制。请注意,客户端在使用备份事件代理的IP地址192.168.1.2后,备份事件代理接管了消息活动。

HA-Redundancy-Host-List-Failover.png

重新同步

一旦失败的事件代理重新上线,它将使用配对链接VRF重新同步其消息池内容以匹配活动事件代理。如果两个事件代理之间的消息池内容差异很小,这个过程可能需要几秒钟,但如果失败的事件代理已经离线很长时间,并且活动事件代理上已经累积了大量数据,则可能需要几个小时。

重新同步不是一项影响服务的操作,备份事件代理在重新同步进行时继续为连接的客户端提供服务。然而,在重新同步过程中,主事件代理无法为客户端提供服务。(请注意,当磁盘重新同步发生时,冗余状态将显示为关闭。)

下图显示了重新同步过程。

HA-Resync.png

承担备用角色

一旦重新同步完成,主事件代理承担备用角色,并可在备份事件代理因任何原因离线时为客户端提供服务。

下图显示了HA冗余组的这种状态。

如果在该组的事件代理上启用了自动恢复,那么活动将自动切换回主事件代理。下图显示了这种情况。您会注意到,此图与显示正常操作状态的图相同。

下一步

  • HA组配置向您展示如何设置和使用冗余。