【问题标题】:RabbitMQ application stops when another node in cluster is shutdown当集群中的另一个节点关闭时,RabbitMQ 应用程序停止
【发布时间】:2018-01-28 13:59:56
【问题描述】:

我是 RabbitMQ 新手,在处理 RabbitMQ 集群时遇到了麻烦。

拓扑如下:

起初,一切都很好。 RabbitMQ node1 和 RabbitMQ node2 在一个集群中。 它们通过名为 autocluster 的 RabbitMQ 插件相互连接。

然后我删除 kubectl delete pod rabbitmq-1 的 pod rabbitmq-1。我发现 node1 中的 RabbitMQ 应用程序已停止。我不明白为什么 RabbittoMQ 如果检测到另一个节点的故障会停止应用程序。它没有任何意义。这种行为是由 RabbitMQ 还是 autocluster 设计的?能给我解惑吗?

我的配置是这样的:

[
  {rabbit, [
    {tcp_listen_options, [
                          {backlog,       128},
                          {nodelay,       true},
                          {linger,        {true,0}},
                          {exit_on_close, false},
                          {sndbuf,        12000},
                          {recbuf,        12000}
                         ]},
    {loopback_users, [<<"guest">>]},
    {log_levels,[{autocluster, debug}, {connection, debug}]},
    {cluster_partition_handling, pause_minority},
    {vm_memory_high_watermark, {absolute, "3276MiB"}}
  ]},

  {rabbitmq_management, [
    {load_definitions, "/etc/rabbitmq/rabbitmq-definitions.json"}
  ]},

  {autocluster, [
    {dummy_param_without_comma, true},
    {autocluster_log_level, debug},
    {backend, etcd},
    {autocluster_failure, ignore},
    {cleanup_interval, 30},
    {cluster_cleanup, false},
    {cleanup_warn_only, false},
    {etcd_ttl, 30},
    {etcd_scheme, http},
    {etcd_host, "etcd.kube-system.svc.cluster.local"},
    {etcd_port, 2379}
   ]}
]

在我的例子中,启用了 x-ha-policy。

【问题讨论】:

  • 如果你有能力升级,我发现在 kubernetes 上构建集群时,使用 rabbitmq 3.7+ 而不是 autocluster 更容易。
  • @lang2 谢谢你的建议,我试试看

标签: rabbitmq kubernetes rabbitmqctl


【解决方案1】:

您将cluster_partition_handling 设置为pause_minority。二分之一的节点不是大多数,因此集群按照配置停止。您要么必须添加一个额外的节点,要么将cluster_partition_handling 设置为ignore

来自docs

在 pause-minority 模式下,RabbitMQ 会自动暂停集群节点 确定自己属于少数群体(即更少或相等 超过一半的节点)在看到其他节点关闭后。 因此,它选择分区容差而不是可用性 CAP 定理。这确保了在网络分区的情况下,在 单个分区中的大多数节点将继续运行。这 少数节点将在分区开始后立即暂停,并将 分区结束时重新开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2016-06-26
    相关资源
    最近更新 更多