第 30 章 高可用性
高可用性是系统能够在一个或多个服务器出现故障后继续正常工作的能力。
高可用性的一部分是故障转移,后者是客户端连接能够在服务器出现故障时从一台服务器迁移到另一台服务器,以便客户端应用程序可以继续运行。
只有持久消息数据才能保留故障切换。故障转移后任何非持久消息数据都将不可用。
30.1. 实时/备份对
JBoss EAP 7 消息传递使得服务器能够作为实时链接在一起 - 每个现场服务器都有备份对备份对。实时服务器从客户端接收消息,而备份服务器在故障转移发生之前不运行。备份服务器只能归一台现场服务器所有,它将保持被动模式,等待实时服务器工作。
活动服务器和备份服务器之间有一个一对一的关系。实时服务器只能 有一个 备份服务器,并且备份服务器只能归 一台 实时服务器所有。
当实时服务器崩溃或进入正确的模式时,当前处于被动模式的备份服务器将成为新的实时服务器。如果新实时服务器配置为允许自动故障恢复,它将检测到旧的实时服务器重新启动并自动停止,从而使旧的实时服务器可以再次开始接收消息。
如果您只部署一对实时/备份服务器,则无法在对前有效使用负载平衡器,因为备份实例没有主动处理消息。此外,JNDI 和 Undertow Web 服务器等服务也不会在备份服务器上处于活动状态。因此,不支持将 JEE 应用部署到用作备份消息传递服务器的 JBoss EAP 实例。
30.1.1. 日志同步
使用复制日志配置 HA 时,备份必须与实时服务器同步。
要检查同步是否完成,在 CLI 中提交以下命令:
/subsystem=messaging-activemq/server=default/ha-policy=replication-master:read-attribute(name=synchronized-with-backup)
如果结果为 true
,则同步已完成。
要检查关闭实时服务器是否安全,请在 CLI 中提交以下命令:
/subsystem=messaging-activemq/server=default/ha-policy=replication-slave:read-attribute(name=synchronized-with-live)
如果结果为 true
,可以安全地关闭实时服务器。