|
1
49
太长,读不下去了
问题 出现问题的原因如下:
所以最后,RabbitMQ和StatefulSets的工作方式有点不匹配。RMQ说:“如果一切都失败了,只需启动一切,同时,一个可以启动,一旦这个启动,其他人就可以重新加入集群。”k8s StatefulSet说:“一次启动一切是不可能的,我们将从0开始”。 解决方案
为了解决这个问题,有一个
force_boot
用于rabbitmqctl的命令,该命令基本上告诉一个实例,如果找不到任何对等实例,则启动独立实例。如何在Kubernetes中使用它取决于您使用的Helm图表和容器。在the
Bitnami Chart
,它使用
Bitnami Docker image
,有一个值
但看看这个问题,你也可以看到为什么删除PVC会奏效( other answer ). Pod都会“忘记”上次它们是RMQ集群的一部分,并愉快地开始。不过,我更喜欢上述解决方案,因为没有数据丢失。 |
|
2
17
RabbitMQ核心团队成员在这里。默认情况下,从未打算使用强制启动节点。 命令存在 只有 当许多集群成员永久丢失,因此永远不会回来时,使节点启动。
使用
在Kubernetes上,有一种常见的情况,即不幸选择的就绪状态探测会导致集群重启死锁。以下是相关的文档部分:
以下是一个简化的简短版本:
使用基本就绪探测(请参阅上面的文档链接),所有节点必须在(默认情况下)5分钟内全部启动,必要时可以延长这一时间。但默认情况下强制节点启动是错误的,在99%的情况下应该是不必要的。 结合其他部署时间事件,强制启动可能会导致一些相同的结果 described in this recommended against deployment strategy .
结合
|
![]() |
3
15
刚刚删除了现有的持久卷声明并重新安装了rabbitmq,它就开始工作了。 因此,每次在kubernetes集群上安装rabbitmq后,如果我将Pod缩小到0,并且稍后扩大Pod时,我都会遇到同样的错误。我还尝试在不卸载rabbitmq-helm图表的情况下删除持久卷声明,但仍然出现了同样的错误。 因此,似乎每次我将集群缩小到0时,我都需要卸载rabbitmq-helm图表,删除相应的持久卷声明,并每次安装rabbitmq-shelm图表以使其正常工作。 |
|
4
2
如果你和我一样,不知道是谁部署了舵图,也不知道它是如何部署的。。。你可以直接编辑statefulset,以避免弄乱更多的东西。。 我能够在不删除helm_chart的情况下使其工作
在规范部分,我添加了如下env变量RABBITMQ_FORCE_BOOT=yes:
这也应该解决这个问题。。。请先按照Ulli的解释,以正确的方式进行。 |
![]() |
5
1
在我看来,解决方案很简单 步骤1:缩小状态集,它不会删除PVC。
步骤2:访问RabbitMQ Pod。
步骤3:重置集群
步骤4:重新缩放状态集
|
![]() |
6
0
我也遇到了类似的错误,如下所示。
在我的例子中,RabbitMQ集群的从属节点(服务器)已经关闭。一旦我启动了从节点,主节点就启动了,没有出现任何错误。 |
![]() |
7
-7
测试此部署:
|
|
moumout · AMQPCPP消费者和发布者不创建交换和队列 1 年前 |
|
trung · 如何用python测试消费者rabbitmq的基准测试 2 年前 |
|
mthgh0818 · rabbitmq-mqt如何获取设备的联机状态 2 年前 |
![]() |
jeril · Rabbit mq-等待Mnesia表时出错 5 年前 |
![]() |
Danish · 确认RabbitMQ中消费者的剩余消息 7 年前 |
![]() |
iam.Carrot · RabbitMQ队列Pika的多处理 7 年前 |