问题:
rabbitmq集群加入失败
原因:
./rabbitmqctl join_cluster {cluster_node},加入集群命令后跟的是节点名称,而不是集群名称,我的命令里面跟的就是集群名称所以加入失败。查询节点名称可以通过以下命令:
./rabbitmqctl status | grep node
延伸关于节点名称RABBITMQ_NODENAME的生成规则:
节点名称默认前缀是rabbit,默认是rabbit@后面加上计算机的主机名,可以在同一个主机上运行多个节点,在集群中每个节点必须有一个唯一的RABBITMQ_NODENAME RabbitMQ节点由节点名称标识,节点名称由两部分组成,前缀(通常是rabbit)和主机名,例如:rabbit@rabbit1是一个节点名包含前缀rabbit和主机名rabbit1。在一个集群中节点名称必须是唯一的。如果在给定的主机上运行多个节点(开发和QA环境中通常是这种情况),它们必须使用不同的前缀,例如:rabbit1@hostname和rabbit2@hostname在集群中,节点使用节点名称标识和联系彼此,这意味着必须解析每个节点名的主机名部分。CLI工具也使用节点名称标识和寻址节点。当节点启动时,它会检查是否已为其分配了节点名。这是通过RABBITMQ_NODENAME环境变量配置,如果环境变量没有配置,则节点将解析其主机名并在其前面添加rabbit以计算其节点名。
具体规则如下:第一种:配置的名字里面加了@,那么 @后面必须要跟你的主机名,否则启动会报错。这种情况启动后的节点名称就和你配置文件里面的名称一致
第二种:配置的名字里面没有@,那么启动后的的节点名称,mq会自动加上@+主机名,节点名称就是--配置名称+@+主机名
如果系统使用完全限定名(FQDNS Fully Qualified Domain Name)作为主机名,RabbitMQ节点和CLI工具必须配置为使用所谓的长节点名称,对于服务器节点,这是通过将RABBITMQ_USE_LONGNAME环境变量设置为true来完成的。