30.5. 回退到实时服务器失败
在实时服务器出现故障并且备份接管了自己的职责后,您可能希望重新启动实时服务器,并让客户端恢复运行。
如果是共享存储,只需重新启动原先的实时服务器并通过终止进程本身终止新的实时服务器。或者,您可以在从 卷上将 allow-fail-back 设置为 true,它会强制其在主服务器恢复在线后自动停止。设置 allow-fail-back 的管理 CLI 命令类似如下:
/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=allow-fail-back,value=true)
/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=allow-fail-back,value=true)
在复制 HA 模式中,您需要确保在主配置中 将 check-for-live-server 属性设置为 true。从 JBoss EAP 7.1 开始,这是默认值。
/subsystem=messaging-activemq/server=default/ha-policy=replication-master:write-attribute(name=check-for-live-server,value=true)
/subsystem=messaging-activemq/server=default/ha-policy=replication-master:write-attribute(name=check-for-live-server,value=true)
如果设置为 true,则 实时服务器将在启动过程中使用 nodeID 搜索另一个服务器。如果找到一个服务器,它将联系此服务器并尝试"失败"。由于这是一种远程复制方案,原始的实时服务器必须将其数据与运行的备份与其 ID 同步。同步后,它将请求备份服务器关闭,以便它可以接管活动的处理。此行为可让原始的实时服务器确定是否存在故障转移,如果发生故障,则承担其职责的服务器是否仍在运行。
请注意,如果在发生故障转移到备份后重新启动实时服务器,则 check-for-live-server 属性必须设为 true。如果没有,则实时服务器将立即启动,而不检查其备份服务器正在运行。这会导致实时和备份同时运行,从而导致将重复消息传送到所有新连接的客户端。
对于共享存储,也可以在正常服务器关闭时导致故障转移发生,以便在主或从设备上的 HA 配置中将此 failover-on-server-shutdown 设置为 true :
/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=failover-on-server-shutdown,value=true)
/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=failover-on-server-shutdown,value=true)
您还可以强制运行的备份服务器在原始实时服务器恢复时关闭,从而允许原始的实时服务器自动接管,方法是将 allow-failback 设置为 true。
/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=allow-failback,value=true)
/subsystem=messaging-activemq/server=default/ha-policy=shared-store-slave:write-attribute(name=allow-failback,value=true)