在 Insights Hub Cloud Foundry 中,如何配置一个高可用的 RabbitMQ 实例?
SolutionRabbitMQ 通过一种名为“队列镜像”的方法来实现这一点。基本上,队列会根据指定的策略复制到不同的节点。创建队列的节点是队列的主节点,所有操作都通过其进行。在主节点不可用的情况下,下一个有最新数据的从节点将成为队列的主节点。注意:节点只是队列的主节点(群集本身并没有主节点)。
有关队列镜像的更多信息,参考:RabbitMQ 文档。
在 RabbitMQ 中启用队列镜像(Queue Mirroring)。队列镜像根据我们向 RabbitMQ 群集指定的策略应用于对应的队列中。可以通过命令行、使用 REST API 或者通过 RabbitMQ 控制台面板来指定策略。
下面将使用 RabbitMQ 控制台面板进行操作。
假设我们有一个队列 com.microideation.test.queue,配置如下:(这里没有设置策略,它所在的节点是 app-stage-1)
此时,“从节点”部分为空。这意味着如果应用程序 app-stage-1 出现故障,队列中的所有数据都会丢失。
进入控制面板“管理”部分,然后点击右侧的“策略”。这将列出当前设置的所有策略(如果是首次设置,则为空)。按照以下步骤添加策略:
这里我们定义了策略,并要求将其应用于以 "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/