执行非控制性故障转移
在活动数据中心发生非计划性故障或网络隔离的情况下,将没有机会优雅地从该复制站点的消息 VPN 释放活动。
非控制性故障转移有三种类型:
-
短期中断 活动站点短时间(例如,几分钟或几小时)无法提供服务或与客户端隔离。复制队列有足够的容量在中断期间存储所有复制的消息和事务。
-
长期中断 活动站点长时间(例如,几天或几周)无法提供服务或与客户端隔离。复制队列没有足够的容量在中断期间存储所有复制的消息和事务。
-
完全故障 活动站点无法提供服务且无法恢复。关键组件(事件代理、区域连接等)已丢失,或外部磁盘上的数据已丢失。
在所有这些类型的故障转移中,必须采取以下一般步骤:
- 第1步:使备用站点的消息 VPN 复制活动以恢复服务
- 第2步:确保客户端无法连接到失败的站点
- 第3步:如有必要,暂停复制
- 第4步:使失败站点的消息 VPN 重新在线作为复制备用
在提供的示例中,纽约复制站点发生了故障,其伙伴波士顿站点接管活动,直到纽约站点恢复。为了简单起见,示例中只展示了一个消息 VPN(Trading_VPN
)。当故障发生时,Trading_VPN
在纽约站点具有复制活动状态,在波士顿站点具有复制备用状态。
虽然这些简单的例子只显示了具有单个消息 VPN 的复制站点,在现实世界的场景中,这些步骤必须为参与复制站点故障转移的每个消息 VPN 执行。
非控制性故障转移的后果
非控制性故障转移可能的后果包括:
- 在活动站点的中断期间,复制队列上消息的积累。
- 复制队列变得满。
- 在恢复失败站点的操作之前,丢失一个或多个事件代理。
- 异步复制的消息和事务可能会丢失。
- 重复消息传递的可能性和数量增加。
我们建议您在特定非控制性故障转移的情况下,联系 Solace 以帮助解决可能出现的任何问题。
第1步:使备用站点的消息VPN复制活动以恢复服务
在确定数据中心站点发生非控制性故障后,应遵循此程序。
使复制备用消息VPN复制活动
为了恢复服务,将消息 VPN 的复制状态更改为活动。
波士顿数据中心
BOS_EventBroker(configure)# message-vpn Trading_VPN
BOS_EventBroker(configure/message-vpn)# replication state active
客户端现在将能够连接到消息 VPN。
由于备用站点不可用,异步消息和事务将存储在复制队列中。默认情况下,同步复制将切换到异步,导致这些消息和事务也被存储在复制队 列中。如果消息 VPN 上设置了 reject-msg-when-sync-ineligible
,则同步复制将被阻塞,直到备用消息 VPN 恢复。
第2步:确保客户端无法连接到失败的站点
重要的是,失败的站点不会以活动状态启动其复制消息 VPN。如果两个站点同时具有活动复制状态,无法保证正常运行。由于失败的事件代理在失败或变得无法访问时被配置为复制活动状态,当它恢复时,那将是其默认状态。请注意,如果无法恢复失败的站点,并且必须从备份中恢复其配置,那么备份配置可能已保存为活动复制状态,因此在此情况下也适用此步骤。
在这一步中,目标是允许失败的事件代理重新启动,但也要防止客户端连接。为此,您应该阻塞允许客户端连接的端口,同时仍然允许通过管理端口管理事件代理。
完成这一步可能有许多方法;在非控制性故障发生之前应该测试要执行的具体操作,以便在实际故障场景中清楚知道该怎么做。
第3步:如有必要,暂停复制锚点
如果失败的站点需要很长时间才能恢复,复制队列有充满的风险。如果发生这种情况,发布到复制主题的消息(无论是事务内还是事务外的)将被拒绝,因为无法提供复制服务。如果您知道将有长时间的中断,或者复制队列即将充满(复制队列上触发了高事件日志),可能需要暂停复制服务以继续提供非复制服务。
要暂停复制,请使用以下 CONFIG 命令禁用复制队列上的 reject-msg-to-send
行为:
solace(configure/message-vpn/replication/queue)# no reject-msg-to-sender-on-discard
请注意,使用此设置后,复制服务将继续进行,直到复制队列满。一旦队列满,只提供本地非复制服务。
第4步:使失败站点的消息VPN重新在线作为复制备用
一旦失败站点已恢复管理访问且无客户端访问(参见第2步:确保客户端无法连接到失败的站点),那么它可以被准备为备用站点。以下是为恢复的事件代理准备为备用站点的步骤:
- 第4-1步:将所有消息 VPN 配置为备用
- 第4-2步:验证消息池
- 第4-3步:启发式完成事务
- 第4-4步:允许客户端连接
- 第4-5步:等待同步复制成为合格
- 第4-6步:如有必要,重新启用复制
- 第4-7步:从失败站点检索复制队列卷绕的消息
第4-1步:将所有消息 VPN 配置为备用锚点
将恢复的复制站点上的所有消息 VPN 配置为备用复制状态。在此示例中,纽约站点的消息 VPN Trading VPN
被配置为备用复制状态:
纽约数据中心
NY_EventBroker1(configure)# message-vpn Trading_VPN
NY_EventBroker1(configure/message-vpn)# replication state standby
Config-Sync 设施将此设置传播到 Ny-Appliance2
上的 Trading_VPN
消息 VPN。
第4-2步:验证消息池锚点
您应该验证失败复制站点的事件代理的消息池现在能够提供服务。
在继续之前,请确保恢复站点的主虚拟路由器的消息池处于活动状态。在下面的示例输出中(可能会根据事件代理类型和版本有所不同),Activity Status
的 Local Inactive
和 Message Spool Status
的 AD-Not Ready
表示事件代理及其使用的消息池不处于活动状态。
NY_EventBroker1# show redundancy
Configuration Status : Enabled
Auto Revert : No
Redundancy Mode : Active/Active
Mate Router Name : solaceBackup
ADB Link To Mate : Up
ADB Hello To Mate : Down
Primary Virtual Router Backup Virtual Router
---------------------- ----------------------
Activity Status Local Inactive Local Active
Routing Interface 1/1/lag1:1 1/1/lag1:3
VRRP VRID 33 34
Routing Interface Status Up Up
VRRP Status Master Master
VRRP Priority 75 250
Message Spool Status AD-NotReady AD-Disabled
Priority Reported By Mate Backup-Reconcile Primary-Reconcile
在这种情况下,您必须解决阻止失败事件代理变为活动状态的问题。如果您无法解决问题,请联系 Solace。
第4-3步:启发式完成事务锚点
如果适用,在失败站点上启发式提交或回滚任何已准备的事务。一旦启发式完成,删除它们以释放资源。
要提交、回滚或删除事务,请在失败站点上输入相应的 ADMIN 命令:
纽约数据中心
solace(admin/message-spool) commit-transaction xid <xid>
和/或
solace(admin/message-spool) rollback-transaction xid <xid>
然后
solace(admin/message-spool) delete-transaction xid <xid>
其中:
xid
指定要提交、回滚或删除的事务的 XID。
第4-4步:允许客户端连接锚点
您之前已阻塞流量以防止客户端连接(第2步:确保客户端无法连接到失败的站点)。您现在必须解除端口阻塞以允许客户端连接。这一步允许客户端连接以及复制桥,这允许数据从活动站点(示例中的波士顿站点到纽约站点)同步。
第4-5步:等待同步复制成为合格锚点
一旦恢复站点与活动站点之间的连接恢复,复制桥将从备用站点连接到活动站点并排空复制队列,以同步两个站点。根据复制队列中的消息和事务数据量以及站点之间的可用带宽,这个过程可能需要很长时间。当这个过程完成后,复制服务将不再降级,消息 VPN 将有资格进行同步复制。
在以下示例中,信息显示为波士顿站点,该站点最近因纽约站点故障而处于活动状态。
BOS_EventBroker# show message-vpn Trading_VPN replication
标志图例:
A - 管理状态 (U=上,D=下)
C - 配置状态 (A=活动,S=备用)
B - 本地桥状态 (U=上,Q=队列未绑定,D=下,-=N/A)
R - 远程桥状态 (U=上,D=下,-=N/A)
Q - 队列状态 (U=上,D=下,-=N/A)
S - 同步复制合格 (Y=是,N=否,-=N/A)
M - 同步不合格时拒绝消息 (Y=是,N=否)
T - 事务复制模式 (A=异步,S=同步,-=N/A)
消息 VPN A C W B R Q S M T
-------------------------------- - - - - - - - - - -
Trading_VPN U A N - U U - N A
BOS_EventBroker#
'S' 列下的 'Y' 表示消息 VPN Trading_VPN
有资格进行同步复制。
第4-6步:如有必要,重新启用复制锚点
如果您之前因为复制队列溢出而不得不暂停复制,请重新启用它。输入以下 CONFIG 命令:
solace(configure/message-vpn/replication/queue)# reject-msg-to-sender-on-discard
第4-7步:从失败站点检索复制队列卷绕的消息锚点
以前活动站点(NY)上的异步卷绕消息只能在活动失败回以前活动状态站点(NY)时消费。
为了检索这些消息,请在下一个维护窗口将活动失败回以前活动状态站点(NY)。