该环境由两台 2012R2 虚拟机组成,它们在其队列中以高可用性 (ha-all) 运行 RabbitMQ。我使用 Veeam 创建快照备份,这些备份作为 DR 策略的一部分发送到异地。
我看到的是 Veeam 备份发生时集群的间歇性故障。集群中断会导致记录 Mnesia 事件,有时还会导致一个节点完全关闭。我认为问题在于 Veeam 如何对虚拟机进行闪烁,它基本上会暂停虚拟机一小会儿,然后继续运行。当发生此闪烁时,两个节点都会看到另一个节点消失,辅助节点会立即将自己提升为主节点。两个主节点一见面(实际上是几秒钟后)就开始运行,它们会发生冲突,导致集群中断。
我读到net_ticktime
这里并实施了 300 秒,认为这将有助于使集群更能适应短暂的 Veeam 故障,但似乎并没有起到作用。当一个节点看到另一个节点消失时,辅助节点会立即将自己提升为主节点,似乎没有利用该net_ticktime
设置。
Mnesia 错误示例:
Mnesia('rabbit@Node01'): ** ERROR ** mnesia_event got {inconsistent_database, running_partitioned_network, 'rabbit@Node02'}
有其他人经历过这种情况或类似情况吗?RabbitMQ 或 Erlang 是否有其他配置设置可以帮助集群更有效地应对节点之间小范围的连接丢失?