14.3. 实施高可用性


您可以通过实施高可用性(HA)提高可靠性,使代理集群即使在一个或多个代理离线时仍能继续工作。

实施 HA 涉及几个步骤:

  1. 为您的 HA 实施配置代理集群,如 第 14.2 节 “创建代理集群” 所述。
  2. 您应该了解什么是实时备份组,然后选择最能满足您需求的 HA 策略。请参阅 了解 HA 在 AMQ Broker 中的工作方式
  3. 当您选择了合适的 HA 策略时,在集群中的每个代理上配置 HA 策略。请参阅:

  4. 配置您的客户端应用以使用故障转移
注意

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

14.3.1. 了解高可用性

在 AMQ Broker 中,您可以通过将集群中的代理分组到 live-backup 组 来实现高可用性(HA)。在 live-backup 组中,实时代理链接到备份代理,如果 live 代理失败,该代理可以接管该代理。AMQ 代理还为实时备份组中的故障切换(称为 HA 策略)提供多个不同的策略

14.3.1.1. 实时备份组如何提供高可用性

在 AMQ Broker 中,您可以通过链接集群中的代理组成 live-backup 组 来实现高可用性(HA)。实时备份组提供 故障转移,这意味着如果一个代理出现故障,另一个代理可以接管其消息处理。

实时备份组由一个实时代理(有时称为 代理)组成,链接到一个或多个备份代理(有时称为 slave 代理)。live 代理服务客户端请求,备份代理以被动模式等待。如果 live 代理失败,备份代理将替换 live 代理,使客户端能够重新连接并继续工作。

14.3.1.2. 高可用性策略

高可用性(HA)策略定义实时备份组中如何发生故障转移。AMQ 代理提供多个不同的 HA 策略:

共享存储(推荐)

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

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

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

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

实时和备份代理之间的数据同步可确保在实时代理失败时不会丢失消息传递数据。当实时和备份代理最初一起时,实时代理会通过网络将其所有现有数据复制到备份代理。完成这个初始阶段后,实时代理会在实时代理接收数据时将持久数据复制到备份代理。这意味着,如果 live 代理丢弃网络,备份代理会一直具有实时代理接收的所有持久性数据。

由于复制通过网络同步数据,因此网络故障可能会导致网络隔离,其中实时代理及其备份会同时上线。

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

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

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

其它资源

14.3.1.3. 复制策略限制

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

如果实时代理及其备份丢失连接,则可能会出现网络隔离。在这种情况下,实时代理及其备份可以同时处于活跃状态。特别是,如果备份代理仍然可以连接到集群中超过一半的 live 代理,它也会变为活跃状态。由于在这种情况下,代理之间没有消息复制,因此它们各自提供客户端和进程消息,而不知道它。在这种情况下,每个代理都有完全不同的日志。从这种情形中恢复可能非常困难,在某些情况下不可能。

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

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

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

以下是在使用复制 HA 策略时的一些额外注意事项:

  • 当实时代理失败且备份转换为实时时,在将新备份代理附加到实时或故障恢复到原始 live 代理前,不会再进行复制。
  • 如果 live-backup 组中的备份代理失败,live 代理将继续提供消息。但是,在添加其他代理作为备份或重启原始备份代理之前,消息不会复制。在该时间段内,信息只会保留至 live 代理。
  • 假设 live-backup 对中的两个代理之前都已关闭,但现在可以重新启动。在这种情况下,为了避免消息丢失,您需要首先重启最近活跃的代理。如果最新的活跃代理是 backup 代理,您需要手动重新配置这个代理作为 master 代理,以便首先重启它。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.