跳到主要内容

硬件的高可用性

Solace PubSub+ 硬件可以在高可用性(HA)冗余对中运行以实现容错。冗余提供了1:1的硬件备用,以增加整体服务可用性。HA冗余通过允许网络管理员将两个硬件定义为冗余对来消除单点故障的潜在风险。如果其中一个硬件停止服务或失败,另一个硬件自动接管通常由停止服务的硬件服务的客户。

冗余特性对客户和其他硬件在网络中基本上是透明的。只有作为配对的两个硬件需要明确的配置才能利用这一特性。

同样,也不需要在客户端主机系统上进行配置来利用HA冗余设施。在冗余故障转移期间,对客户端唯一可见的影响是短时间内消息的非交付,客户端被迫重新连接。

虚拟路由器冗余协议(VRRP),如请求评论(RFC)3768中定义的,用于管理客户端与硬件通信所使用的IP地址。对于给定IP地址处于活动状态的硬件终止所有发送到该IP地址的客户端消息。如果活动硬件失败,备份硬件接管IP地址。因此,从一个硬件中的HA对中的另一个硬件迁移IP地址和消息服务允许客户端重新连接到同一个IP地址,该IP地址现在由配对硬件管理。

Solace PubSub+ 冗余模型围绕虚拟路由器的概念构建:

  • 如果部署了主动/备用模型:必须为冗余对配置一个具有唯一IP地址的虚拟路由器。此虚拟路由器在一台硬件上配置为主,在配对硬件上配置为备份。

在正常运行条件下,对于主虚拟路由器处于活动状态的物理硬件处理消息活动。如果该硬件失败,配对硬件接管虚拟路由器的活动。

  • 如果部署了主动/主动模型:必须在冗余对中配置两个虚拟路由器,每个都有自己的唯一IP地址。一台硬件被配置为主虚拟路由器的主(和第二虚拟路由器的备份),而第二台物理硬件被配置为另一虚拟路由器的主(和第一虚拟路由器的备份)。

在正常运行条件下,每个硬件都处于其主虚拟路由器的活动状态,并且备份配对的虚拟路由器。如果其中一个硬件失败,配对硬件接管与失败硬件相关的虚拟路由器的活动。

主动/备用冗余模型

主动/备用冗余由Solace PubSub+支持,适用于保证和直接消息传递。

在主动/备用模型中,主硬件为客户提供服务并发送和接收数据和消息。备份硬件在待机模式下等待,只有在主硬件失败时才提供服务。

在主动/备用模型中:

  • 所有客户端都连接到同一个虚拟路由器,该虚拟路由器在一台硬件上配置为主,在配对硬件上配置为备份。
  • 备份硬件仅作为待机。当主硬件处于活动状态时,没有客户端可以连接到备份,也没有消息流量可以通过备份。
  • 如果主硬件因任何原因失败,备份硬件通过发送未经请求的地址解析协议(ARP)请求,接管与失败硬件相关的虚拟路由器的IP地址,所有客户端重新连接到备份硬件。

主动/主动冗余模型

主动/主动冗余由Solace PubSub+支持,适用于直接消息传递。

在主动/主动模型中,客户端可以在两个硬件之间分配,并且在正常运行条件下,两个硬件可以同时提供服务。这允许在两个硬件都功能正常时进行负载共享。然而,如果其中一个硬件因任何原因失败,活动硬件可以提供通常由两个硬件单独提供的服务。

在主动/主动模型中:

  • 一台硬件处于一个虚拟路由器的活动状态,而另一台硬件处于第二个虚拟路由器的活动状态。
  • 客户端积极连接到两个虚拟路由器(因此连接到两个硬件),两个硬件都承载消息流量。
  • 如果其中一个硬件失败,配对硬件通过发送未经请求的ARPs,接管与失败硬件相关的虚拟路由器的IP地址,所有与失败硬件相关的客户端重新连接到备份硬件。

主动/主动冗余模型可以部署两种变体:

  • 各个消息VPN是主动/备用

在此部署模型中,所有一组消息VPN的客户被配置为连接到虚拟路由器#1,所有另一组消息VPN的客户被配置为连接到虚拟路由器#2。也就是说,对于给定的消息VPN,所有客户端都被配置为由冗余对中的一个硬件服务。

  • 各个消息VPN是主动/主动

在此部署模型中,给定消息VPN的客户跨越冗余对中的两个硬件,客户端在虚拟路由器之间分配。为了使此模型在所有时间都提供分布式消息VPN的所有客户端之间的完全可达性,必须提供多节点路由链接或消息VPN桥接链接以在两个硬件之间提供连接。

也可以与直接消息传递一起配置保证消息传递,但是,任何给定时间只能有一个硬件提供保证消息传递服务。也就是说,虽然冗余模式可以配置为主动/主动,两个硬件同时支持直接消息传递,但保证消息传递将在一个虚拟路由器上以主动/备用模式运行。

Solace建议以主动/备用模型部署硬件,原因如下:

  • 主动/备用支持保证和直接消息传递。
  • 主动/备用避免了不经意地超额预订硬件的风险,即每个硬件都有足够的容量来处理自己的虚拟路由器的消息负载,但在故障情况下,单个硬件没有足够的容量来处理两个虚拟路由器的工作负载,导致在故障转移发生之前无法暴露的不可接受的服务降级。
  • 较低的工程/计划开销。不需要决定哪些消息VPN将位于每个虚拟路由器中,或者哪些客户端将连接到哪个虚拟路由器。
  • 主动/备用是一个更简单的模型,在投入生产之前进行测试和验证。

如果您正在使用PubSub+ Cache,我们不建议使用主动/备用冗余模型,除非它是您用例唯一可能的冗余模型。更多信息,请参见PubSub+ Cache和事件代理冗余。

容错

以下部分讨论了在硬件故障转移情况下,主虚拟路由器和主备份IP接口之间的交互。它还提供了网络拓扑示例。

主虚拟路由器和备份虚拟路由器锚点

为了支持冗余,每个硬件使用主虚拟路由器和备份虚拟路由器。为了使备份虚拟路由器能够在发生故障时承担其配对的主虚拟路由器的角色,每个硬件上的虚拟路由器配置必须相互镜像。也就是说,备份虚拟路由器必须与其备份的主虚拟路由器具有相同的配置。

对于主动/备用冗余对锚点

对于主动/备用冗余对,主虚拟路由器在主硬件上,备份虚拟路由器在备用硬件上。如果主硬件停止服务,备用硬件的备份虚拟路由器更改为活动状态,并为客户提供服务,处理通常使用已停止服务的主硬件的主虚拟路由器的数据和消息。下图显示了主动/备用冗余对的虚拟路由器之间的关系。

主动/备用冗余中的虚拟路由器关系

img

硬件 Solace2 备份虚拟路由器支持...硬件 Solace1 主虚拟路由器

对于主动/主动冗余对锚点

对于主动/主动冗余对,两个硬件上的主要虚拟路由器都是活动的,但备份虚拟路由器是空闲的。如果冗余对中的一个硬件停止服务,不活动硬件的备份虚拟路由器更改为活动状态,并为客户提供服务,处理通常使用已停止服务的硬件的主虚拟路由器的数据和消息。下图显示了主动/主动冗余对的虚拟路由器之间的关系。

主动/主动冗余中的虚拟路由器关系

img

硬件 Solace1 备份虚拟路由器支持...硬件 Solace2 主虚拟路由器
硬件 Solace2 备份虚拟路由器支持...硬件 Solace1 主虚拟路由器

主虚拟路由器和备份虚拟路由器由消息骨干虚拟路由和转发(VRF)对象提供服务。通过位于网络加速刀片(NAB)上的物理接口,消息骨干VRF处理虚拟路由器的客户流量(包括主题订阅)。

主IP接口和备份IP接口锚点

对于每个硬件,NAB上的物理接口必须绑定到由IP地址和子网掩码标识的不同IP接口。客户端连接到这些IP接口。这些主IP接口和备份IP接口与冗余对中每个硬件上的主虚拟路由器和备份虚拟路由器相关联。

对于主动/备用冗余对锚点

下面的例子展示了主动/备用冗余对使用的主IP接口和备份IP接口以及虚拟路由器的简化示例。在故障转移情况下,客户端可以重新连接到备份IP接口。

简化的主动/备用配置

img

对于主动/主动冗余对锚点

为了启用主动/主动冗余,为主备硬件在冗余对中创建了IP接口的主实例和备份实例。每个硬件使用相同的IP接口,但一个被分配为主,另一个被分配为备份。因此,如果一个硬件停止服务,客户端仍然可以通过在不活动硬件上的备份IP接口访问。

下图展示了主动/主动冗余对使用的主IP接口和备份IP接口以及虚拟路由器的简化示例,然后显示了同一冗余对在故障转移情况下的情况。

  • 在硬件 Solace2 上,物理接口1/1/1包含两个IP接口。1/1/1:1配置为主IP接口,IP地址为192.168.181.133/24,1/1/1:2配置为备份IP接口,IP地址为192.168.181.110/24。
  • 为了在硬件 Solace2 停止服务时维持服务,配对硬件 Solace1 也包含IP接口1/1/1:1和1/1/1:2。然而,分配给这些IP接口的IP地址是相反的。对于 Solace1,主IP接口1/1/1:1配置为IP地址192.168.181.110/24,备份IP接口1/1/1:2配置为IP地址192.168.181.133/24。

IP号码从1到3表示IP接口的类型(主、备份或静态)。典型的关联是1为主,2为备份,3为静态,但这并不强制。

简化的主动/主动配置

img

简化的主动/主动配置在故障转移中

img

VRRP接口锚点

除了客户端连接的IP接口外,硬件还使用VRRP接口。通过这个VRRP接口,冗余对中的两个硬件可以通信其虚拟路由器的状态。每个VRRP接口都需要主实例和备份实例,为了启用冗余,分配给两个主VRRP接口的IP地址必须与其备份VRRP接口的IP地址匹配。

主动/备用网络拓扑示例锚点

下面的例子展示了用于保证消息传递的主动/备用冗余的物理网络拓扑示例。只有一个硬件在冗余对中(Solace1)通过主虚拟路由器接收消息。对于另一个硬件(Solace2),相同的虚拟路由器被配置为备份。然而,如果Solace1失败,Solace2将检测到失败并开始为连接到Solace1的客户提供服务。

当与保证消息传递一起使用主动/备用冗余时,需要客户提供的外部磁盘存储阵列,并且每个硬件必须具有ADB和HBA。

此外,当使用保证消息传递时,一对冗余的光链路连接两个硬件之间的ADB。ADB光链路用于从活动硬件传播保证消息和状态到备用硬件。每当备用硬件通过ADB链路变得可到达时,活动硬件将ADB的全部内容从活动硬件复制到备用硬件的ADB链路上。活动硬件写入ADB的任何后续消息和状态信息也会自动通过光链路传播到备份硬件的ADB。这确保了备份硬件中的ADB的消息内容和状态始终与活动硬件中的ADB同步。

通过主动/备用冗余保证消息传递的SAN行为锚点

在主动/备用冗余配置中的每对硬件都需要在存储区域网络(SAN)上有一个单独的逻辑单元号(LUN),在LUN上创建两个分区。其中一个硬件将第一个分区挂载为“读写”,第二个分区挂载为“只读”,而配对硬件将第一个分区挂载为“只读”,第二个分区挂载为“读写”(也就是说,与其配对硬件相反)。

主动/备用冗余对中的活动硬件只写入其“读写”或活动分区。在发生故障转移的情况下,它通过以“只读”挂载的备用分区为其配对硬件提供服务。

物理网络拓扑示例用于主动/备用冗余

img

基本操作锚点

如果硬件检测到其配对硬件已关闭,它代表其配对硬件断言活动开关。

基本操作活动是:

  1. 主硬件定期广告其VRID处于活动状态。
  2. 如果主硬件停止广告超过预定时间,则使用相同VRID的备份硬件接管主的消息转发责任。备份硬件现在是活动的。

故障检测

如上图中的冗余HA对所示,冗余硬件对之间有多个连接路径。每个硬件中的冗余状态机通过以下通信路径监控配对硬件的状态:

  1. 通过第2层网络上的VRRP:VRRP始终在冗余硬件对之间使用,以通信活动状态,并检测配对硬件的故障。
  2. 多节点路由:如果硬件已配置为多节点路由中的CSPF邻居,那么硬件的活动状态作为CSPF发送的定期“hello”消息的一部分进行广告。
  3. ADB光链路:如果硬件配备了ADB以进行保证消息传递,那么硬件的活动状态通过连接两个硬件上的ADB的光纤链路进行广告。

活动硬件可以通过在所有事件代理通信路径上发送“释放活动”指示来自愿将活动释放给备用硬件。然而,为了防止配对硬件同时变为主并创建脑裂场景的可能性,备用硬件在收到“释放活动”指示之前不会采取活动,或者在上述描述的所有三个通信路径上检测到连接丢失。

一旦硬件采取活动,它通常不会主动向其配对硬件发送“释放活动”指示,除非发生以下事件之一:

  1. 通过CLI或SEMP执行了释放活动冗余CONFIG命令或恢复活动管理EXEC命令。
  2. 硬件检测到它在NAB上失去了所有第2层连接。
  3. 硬件检测到它失去了对SAN的所有连接。
  4. 硬件检测到需要重新启动的故障。

在某些故障条件下,失败的硬件可能无法在重新启动之前向其配对硬件发送“释放活动”指示。然而,这样的重新启动会导致所有三个通信路径的中断,这在配对硬件上经过几秒钟的消抖后,导致配对硬件采取活动。

故障转移序列

本节讨论了以下情况下发生的故障转移序列:

  • 事件代理故障活动开关

  • 硬件恢复活动开关

  • 有关HA故障转移最常见的原因列表,请参见事件代理故障活动开关。

  • 为冗余定义了许多事件代理优先级级别。这些优先级级别由虚拟路由器广告。当冗余对之间发生活动切换时,每个硬件的虚拟路由器广告的优先级级别会更改以指示它们当前的状态和角色。这些广告通过VRRP在冗余对之间广播。例如,为给定VRID广告最高优先级级别的虚拟路由器是该VRID的活动虚拟路由器。然后,所有消息和系统请求都转发到该虚拟路由器。

事件代理故障活动开关

这是最常见的故障转移场景列表:

  • 事件代理的重置或电源周期(短暂的中断,计划或未计划)
  • 事件代理的硬件故障(较长期的中断,未计划)
  • 事件代理的物理链路中断(可能是短暂的或较长期的,计划或未计划)
  • 事件代理的软件升级(短暂的中断,计划)
  • 事件代理由于网络操作员通过Solace CLI输入释放活动冗余CONFIG命令而被放置在待机状态(较长期的中断,计划)

下图显示了一个主动/主动网络配置的示例。

主动/主动冗余对

使用这个示例,如果其中一个硬件(假设是Solace2)因任何原因停止服务,将发生以下一系列操作:

  1. VRRP在硬件Solace1上检测到硬件Solace2的故障。
  2. Solace1变为IP地址192.168.181.133/19的活动状态。当这种情况发生时,Solace1的备份虚拟路由器从空闲状态变为活动状态。
  3. Solace1将其VRRP广告的优先级提高到Assert-Activity。它还发送一个未经请求的ARP,让其他网络设备知道它正在接管IP地址192.168.181.133/19。此时,网络流量流向IP地址192.168.181.133/19流向Solace1
  4. 已经与Solace2建立TCP连接的客户端从Solace1接收错误消息,因为TCP连接不在Solace1上。这导致客户端拆除现有的TCP会话,并立即建立新的TCP会话。这些新连接被Solace1接受。
  5. Solace1接受来自其自己的客户端以及通常由Solace2服务的客户端的订阅更新和发布的消息。

使用保证消息传递的主动/备用锚点

如果冗余对使用保证消息传递的主动/备用冗余模型,通过硬件之间的VRRP链路检测主硬件的故障。此外,故障也通过ADB链路检测——备用硬件使用其本地ADB的状态继续提供服务。下图显示了主动/备用硬件之间使用的链路。

使用保证消息传递的主动/备用硬件使用的链路

硬件恢复活动开关

下图展示了一个常见的主动/主动冗余对的恢复活动开关场景,其中硬件Solace2失败,其配对硬件Solace1代表Solace2采取行动。

活动开关行为故障

当硬件Solace2重新上线时,发生以下一系列操作:

  1. 作为Solace2启动,其主虚拟路由器使用VRRP广告Primary-Reconcile,其备份虚拟路由器使用VRRP广告Backup-Reconcile。这些广告表明虚拟路由器正在初始化,但尚未准备好承担客户端活动。

如果为冗余对启用了保证消息传递,ADB在Solace1上将其全部内容传输到Solace2上的ADB链路上。

如果启用了自动恢复(b),则还会发生以下一系列操作:

默认情况下,自动恢复未启用,这对大多数情况是首选。然而,您可能希望启用自动恢复,以便在满足以下所有条件时,客户端尽快恢复到主硬件:

  • 硬件部署在主动/主动冗余模型中。
  • 冗余对被故意“超额预订”,超出了单个硬件的容量,因此当其中一个硬件离线时,服务将降级。
  • 由于自动恢复期间的短暂服务中断造成的干扰被认为比继续在超额预订状态下运行直到服务窗口期间手动恢复服务更不有害。

对于仅配置为直接消息传递并运行SolOS 8.13.1.38或SolOS 9.1.1.12及更高版本的HA硬件对,在特定网络中断期间,即使自动恢复选项被禁用,也可能表现出自动恢复行为,其中VRRP通信丢失超过三秒钟。这是为了防止在VRRP通信丢失时两个硬件进入脑裂场景的可能性。更多信息,请参见仅使用直接消息传递的HA硬件的自动恢复行为。

  1. 一旦Solace2完全启动,其主虚拟路由器将其VRRP广告的优先级提高到Assert-Activity。这个优先级导致其配对系统的备份虚拟路由器放弃活动。然后Solace2发送一个未经请求的ARP,让其他网络服务知道它正在接管IP地址192.168.181.133/19用于客户端连接。
  2. Solace1断开任何它为从IP地址192.168.181.133/19接收服务的客户端建立的TCP会话。

如果为冗余对启用了保证消息传递,在冗余切换时还发生以下步骤:

  • 旧的活动硬件卸载磁盘分区。
  • 新的活动硬件将两个磁盘分区挂载为“只读”,然后探测AdKey。如果没有检测到冲突,磁盘分区将按照通过主动/备用冗余的保证消息传递的SAN行为中描述的方式挂载(也就是说,活动LUN分区被挂载为“读写”,而备用LUN分区被挂载为“只读”)。
  • 可能在后台进行垃圾收集,其中在新活动分区上的消息已经被传递或被管理员删除(因为它以前是只读的,所以无法进行文件清理)。
  1. Solace1的主虚拟路由器广告本地优先级为Active,备份虚拟路由器广告本地优先级为Backup。

通过自动恢复冗余CONFIG命令,网络管理员可以配置在服务中断后主硬件重新上线时,冗余对中的备用硬件是否应该自动恢复为主。

  1. Solace2接受新的TCP连接到IP地址192.168.181.133/19,并使用此IP地址向客户端传递消息,并从客户端接收消息。

仅使用直接消息传递的HA硬件的自动恢复行为

对于运行SolOS 8.13.1.38或SolOS 9.1.1.12及更高版本的硬件,即使自动恢复选项被禁用,在特定网络中断期间,VRRP通信丢失超过三秒钟,也可能表现出自动恢复行为。在这种情况下,如果活动已故障转移到备份,在VRRP通信恢复后,主硬件将强制接管虚拟消息路由器的活动。这是为了防止在VRRP通信丢失时两个硬件进入脑裂场景的可能性。这适用于主动/备用和主动/主动HA硬件对。

如果由于其他原因发生故障转移,自动恢复行为取决于是否启用了它。如果自动恢复被禁用,备份硬件在主硬件重新上线后保持活动状态。

订阅导出和消息VPN

如启用订阅导出中讨论的,每个消息VPN都有一个与之相关联的主题订阅导出策略,默认模式设置为不导出订阅。

如果消息VPN不导出主题订阅,那么连接到主动/主动硬件对中一个硬件的客户端不会从连接到另一个硬件的客户端那里接收消息。然而,如果发生故障,以至于两个虚拟路由器的客户最终连接到同一个硬件,那么消息可以在不同虚拟路由器的客户端之间传递。

这是因为主题订阅随后在硬件范围内维护,因为消息VPN导出策略不适用于同一硬件上托管的虚拟路由器之间。

为了避免这种情况,可以:

  • 将冗余对部署在主动/备用配置中。
  • 对于不导出主题订阅的消息VPN,所有消息VPN的客户应该连接到同一个虚拟路由器,以便消息VPN有效地部署在主动/备用配置中。

VPN桥接和容错

有关如何在远程硬件部署冗余配置以提供容错时,建立消息VPN桥接连接到远程硬件的详细信息,请参见桥接到使用冗余的远程事件代理。

下一步

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