我根据公共存储库在Kubernetes中创建了带有3个Pods的Rabbitmq autocluster: https : //github.com/kuberstack/kubernetes-rabbitmq-autocluster
在以下基本方案中,队列中的消息不会在Pod重新启动后生效:
创建持久队列“测试” 发送消息到队列“测试” 等待10分钟,然后删除吊舱1。 等待10分钟,然后删除吊舱2。 等待10分钟,然后删除吊舱3。 列出队列。删除全部3个豆荚后,队列“测试”始终不存在。 删除每个群后,群集正常工作,我可以发送和接收新消息。
它看起来像Rabbitmq不会复制现有的消息到新的豆荚。 如何强制Rabbitmq与新pod共享所有消息?
非常感谢,
RabbitMq启动日志: 日志文件
I have created Rabbitmq autocluster with 3 Pods in Kubernetes according to public repository: https://github.com/kuberstack/kubernetes-rabbitmq-autocluster
Messages in queue don't survive Pod restarts in the following basic scenario:
Create durable queue "test" Send message to queue "test" Wait 10 minutes and delete pod 1. Wait 10 minutes and delete pod 2. Wait 10 minutes and delete pod 3. List queues.After deleting all 3 pods, queue "test" always doesn't exist. After each pod deletion, cluster is working properly, I can send and receive new messages.
It looks like Rabbitmq doesn't replicate existent messages to new pods. How can I force Rabbitmq to share all messages with new pods?
Many Thanks,
RabbitMq Startup Logs: Log file
最满意答案
您需要验证队列是否具有跨群集镜像的内容。
RMQ允许管理员创建适用于某些/所有队列的策略,以便复制内部包含的消息。 否则,一条消息仅存储在一个代理上,如果该代理发生故障,该消息将不可用。
政策描述存在于https://www.rabbitmq.com/ha.html
You need to verify if the queues have their contents mirrored accross the cluster.
RMQ allows administrator to create policies applying to some/all queues, so that the messages contained inside are replicated. Otherwise one message is stored on only one broker, what makes it unavailable if that broker goes down.
The policy description is present at https://www.rabbitmq.com/ha.html
更多推荐
发布评论