Insights Hub Cloud Foundry – RabbitMQ 高可用(HA)配置

2024-01-15T08:27:19Z
Developer Tools

摘要


详细信息

在 Insights Hub Cloud Foundry 中,如何配置一个高可用的 RabbitMQ 实例?

Solution

通过 Queue Mirroring (HA for Queue) 进行高可用配置。

RabbitMQ 通过一种名为“队列镜像”的方法来实现这一点。基本上,队列会根据指定的策略复制到不同的节点。创建队列的节点是队列的主节点,所有操作都通过其进行。在主节点不可用的情况下,下一个有最新数据的从节点将成为队列的主节点。注意:节点只是队列的主节点(群集本身并没有主节点)。

有关队列镜像的更多信息,参考:RabbitMQ 文档

添加策略

在 RabbitMQ 中启用队列镜像(Queue Mirroring)。队列镜像根据我们向 RabbitMQ 群集指定的策略应用于对应的队列中。可以通过命令行、使用 REST API 或者通过 RabbitMQ 控制台面板来指定策略。

下面将使用 RabbitMQ 控制台面板进行操作。

假设我们有一个队列 com.microideation.test.queue,配置如下:(这里没有设置策略,它所在的节点是 app-stage-1)


此时,“从节点”部分为空。这意味着如果应用程序 app-stage-1 出现故障,队列中的所有数据都会丢失。

添加策略以复制以 "com" 开头的队列

进入控制面板“管理”部分,然后点击右侧的“策略”。这将列出当前设置的所有策略(如果是首次设置,则为空)。按照以下步骤添加策略:

  1. 点击“添加/更新策略“;
    1. 填写规则名字;
      1. 模式为 "^com\.";
        1. 指定策略的定义:
          1. 4.1. 在第一个定义中,键值为 "ha-mode",值为 "exactly";
            1. 4.2. 在第二个定义中(将在下面自动添加),键为 "ha-params",值为 "2"。从字段旁边的下拉菜单中选择类型为 "Number";
              1. 4.3. 在第三个定义中,键值为 "ha-sync-mode",值为 "automatic"。
              2. 最后添加策略(注意,指定的所有值都必须去掉引号)。

                这里我们定义了策略,并要求将其应用于以 "com" 开头的队列。目标是确保队列在自动同步的集群中正好有 2 个节点可用。这里使用 "ha-mode"、"ha-params" 和 "ha-sync-mode" 字段来指定。

                如果想将该策略应用于所有队列,只需将模式更改为 .*

                应用策略后的队列特征

                当应用了规则后,回到控制面板可以看到应用的策略是刚才指定的,而且 Slaves 有了值。


                现在,当节点 app-stage-1 出现故障时,队列中仍会有 app-stage-2 中数据可用,并提供正常的服务。

                Notes

                文章参考:https://blog.microideation.com/2019/02/13/rabbitmq-configuration-for-ha-queue-mirroring/

                知识库文章 ID# PL8529715

                内容

                摘要详细信息

                关联组件

                Cloud Foundry Developer Tools - Other