16.3. 实施高可用性


创建代理集群后,您可以通过实施高可用性(HA)来提高其可靠性。使用 HA 时,即使一个或多个代理离线,代理集群也可以继续正常工作。

实施 HA 涉及几个步骤:

  1. 您应该了解 live-backup 组是什么,并选择最符合您的要求的 HA 策略。请参阅 AMQ Broker 中的 HA 如何工作
  2. 当您选择了合适的 HA 策略时,请在集群中的每个代理上配置 HA 策略。请参阅:

  3. 将您的客户端应用程序配置为使用故障转移
注意

在以后的情况下,您需要对为高可用性配置的代理集群进行故障排除,建议您为集群中运行的代理(GC)实例启用 Garbage Collection(GC)日志。要了解如何在 JVM 上启用 GC 日志,请查阅您的 JVM 使用的 Java Development Kit(JDK)官方文档。有关 AMQ Broker 支持的 JVM 版本的更多信息,请参阅 Red Hat AMQ 7 支持的配置

16.3.1. 了解高可用性

在 AMQ Broker 中,您可以将集群中的代理组成 live-backup groups 来实施高可用性(HA)。在 live-backup 组中,live 代理链接到备份代理,如果无法进行实时代理,则需要接管该代理。AMQ Broker 还为 live-backup 组中的故障转移(称为 HA 策略)提供了几种不同的策略

16.3.1.1. live-backup groups 如何提供高可用性

在 AMQ Broker 中,您可以通过将集群中的代理链接到一起以形成 实时备份组 来实施高可用性(HA)。实时备份组提供 故障转移,这意味着如果一个代理失败,另一个代理可能会接管其消息处理。

live-backup 组包含一个 live 代理(有时称为 代理)组成,链接到一个或多个备份代理(有时称为 slave 代理)。live 代理提供客户端请求,而备份代理以被动模式等待。如果 live 代理失败,备份代理会替换 live 代理,使客户端重新连接并继续工作。

16.3.1.2. 高可用性策略

高可用性(HA)策略定义在 live-backup 组中如何进行故障转移。AMQ Broker 提供了几个不同的 HA 策略:

共享存储(推荐)

实时和备份代理将其消息传递数据存储在共享文件系统上的通用目录中,通常是存储区域网络(SAN)或网络文件系统(NFS)服务器。如果您配置了基于 JDBC 的持久性,您也可以将代理数据存储在指定的数据库中。使用共享存储时,如果 live 代理失败,备份代理会从共享存储中加载消息数据,并接管失败的实时代理。

在大多数情况下,您应使用共享存储而不是复制。由于共享存储不会通过网络复制数据,它通常比复制性能更好。共享存储还避免了网络隔离(也称为"脑裂")问题,其中实时代理及其备份同时处于活动状态。

在共享存储 HA 策略中,实时和备份代理都从共享位置访问日志。
复制

实时和备份代理不断通过网络同步其消息传递数据。如果 live 代理失败,备份代理会加载同步的数据,并接管失败的实时代理。

实时和备份代理之间的数据同步可确保当实时代理失败时不会丢失任何消息传递数据。当实时和备份代理首次加入时,实时代理通过网络将所有现有数据复制到备份代理中。此初始阶段完成后,live 代理会将持久数据复制到备份代理中,因为实时代理接收它。这意味着,如果 live 代理断开网络,备份代理会具有实时代理接收的所有持久数据。

由于复制通过网络同步数据,网络故障可能会导致网络隔离,使实时代理及其备份同时处于活动状态。

在复制 HA 策略中,实时和备份代理通过网络将其日志与彼此同步。
仅实时(限 HA)

当正常停止实时代理时,它会将消息和事务状态复制到另一个实时代理,然后关闭。然后,客户端可以重新连接到其他代理,以继续发送和接收消息。

在只读 HA 策略中,代理将其消息和事务状态复制到另一个代理。

其他资源

16.3.1.3. 复制策略限制

网络隔离(有时称为"脑裂")是复制高可用性(HA)策略的一个限制。您应该了解它的发生方式,以及如何避免它。

如果实时代理及其备份丢失了连接,则网络隔离可能会发生。在这种情况下,实时代理及其备份可以同时处于活动状态。具体来说,如果备份代理仍可以连接到集群中半数的活跃代理,它也会变为活跃状态。因为在这种情况下,代理之间没有消息复制,因此它们各自为客户端和处理信息提供信息,而不会互相了解。在这种情况下,每个代理都有完全不同的日志。从这一状况中恢复可能非常困难,在某些情况下是不可能的。

为了避免网络隔离,请考虑以下几点:

  • 消除 网络隔离的任何可能,请使用 共享存储 HA 策略。
  • 如果使用复制 HA 策略,您可以使用 至少三个实时 备份对减少(但不消除)遇到网络隔离的机会。

    至少使用三个实时备份对可确保在实时备份代理对出现复制中断时,可以在任何 仲裁投票 中实现大多数结果。

以下是使用复制 HA 策略时的一些其他注意事项:

  • 当实时代理失败且备份转换为 live 时,在新备份代理附加到实时或发生恢复到原始实时代理前,不会进行进一步复制。
  • 如果 live-backup 组中的备份代理失败,则 live 代理将继续提供信息。但是,在将另一个代理添加为备份或原始备份代理被重启前,消息才会被复制。在此期间,消息仅会被保留到 live 代理。
  • 假设 live-backup pair 中的两个代理都已关闭,但现在都可重启。在这种情况下,为了避免消息丢失,您需要首先重启最新活跃的代理。如果最新活跃的代理是 backup 代理,则需要手动将此代理重新配置为 master 代理,以便首先重启它。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.