小编Sas*_* Ru的帖子

RabbitMQ不一致的集群

关于RabbitMQ v3.1.5集群的几个问题.我有一个包含2个节点的集群,rabbitmq.config在两个节点上都是这样的:

[
  {rabbit, [
    {cluster_nodes, {['rabbit@rmq01', 'rabbit@rmq02'], ram}},
    {tcp_listeners, [5674]}
  ]}
].
Run Code Online (Sandbox Code Playgroud)

我已经看到了这样的问题,现在我再次看到它:当有时所有集群都关闭时,如果第二个节点(rmq02)在第一个节点(rmq01)之前启动,它'忘记'关于rmq01:

[root@rmq2 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node 'rabbit@rmq2' ...
[{nodes,[{disc,['rabbit@rmq2']}]},
 {running_nodes,['rabbit@rmq2']},
 {partitions,[]}]
...done.
Run Code Online (Sandbox Code Playgroud)

在此第一个节点(rmq01)无法启动之后,由于rmq2不同意群集:

{"init terminating in do_boot",{rabbit,failure_during_boot,{error,{inconsistent_cluster,"Node 'rabbit@rmq1' thinks it's clustered with node 'rabbit@rmq2', but 'rabbit@rmq2' disagrees"}}}}
Run Code Online (Sandbox Code Playgroud)

我试图将rmq01添加到rmq02,但似乎我必须在此之前使用stop_app:

[root@rmq2 rabbitmq]# rabbitmqctl join_cluster rabbit@rmq1
Clustering node 'rabbit@rmq2' with 'rabbit@rmq1' ...
Error: mnesia_unexpectedly_running
Run Code Online (Sandbox Code Playgroud)

在这里,我看到rmq02忘记了rmq01:

[root@rmq2 ~]# cat /var/lib/rabbitmq/mnesia/rabbit\@rmq2/cluster_nodes.config 
{['rabbit@rmq2'],['rabbit@rmq2']}.
Run Code Online (Sandbox Code Playgroud)

同时在rmq01(正确的配置):

[root@rmq1 ~]# cat /var/lib/rabbitmq/mnesia/rabbit\@rmq1/cluster_nodes.config 
{['rabbit@rmq1','rabbit@rmq2'],['rabbit@rmq1']}.
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 是正常的rmq02会忘记关于rmq01,还是我有一些错误的配置?为什么会这样?
  2. 如果没问题,是否可以在没有 …

mnesia rabbitmq

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

mnesia ×1

rabbitmq ×1