我正在尝试为RabbitMQ提供两个数据中心之间的灾难恢复。在主DC出现故障之前,辅助数据中心处于被动状态。
联合队列是不合适的,因为在辅助DC中的消费者激活之前,它不会移动消息。这应该不会发生,除非主DC不可用,此时这些消息是不可访问的。我曾考虑在主DC中创建一个额外的队列,该队列将接收每个消息的副本,然后使用Federation或Shovel将这些消息复制到辅助DC。然后,当主DC中的“原始”被处理时,问题变成从辅助DC中删除重复消息。
将队列镜像到辅助DC中的节点是可行的,但由于延迟,RabbitMQ不会通过广域网进行群集。还有没有其他人遇到过这种情况?谢谢。
发布于 2018-09-25 03:56:08
您很有说服力地解释了使用联合和铲子尝试使用RabbitMq解决DR的问题。Rabbit实际上并不是为了在WAN上高效地移动数据而设计的。
在WAN中移动数据总是会给消息传递解决方案带来问题。例如,IBM MQ具有用于HA的多实例队列管理器,但需要用于DR的SAN,这在产品和处理时间上都变得昂贵。
你可以使用的另一个免费产品是Solace,比如Rabbit。它内置了HA和DR复制功能。它可以近乎实时地跨WAN异步移动每封邮件,从而管理您所描述的主动/被动灾难恢复方案。一旦您准备好将应用程序流量移动到备份DC,您就可以激活备份实例并开始使用消息。当从活动端消费时,它会自动“删除重复的消息”。
https://stackoverflow.com/questions/43238830
复制相似问题