linux(deepin15.4)下部署集群RabbitMQ消息队列(二)

来源:互联网 发布:思归软件下载 编辑:程序博客网 时间:2024/05/16 11:09

第二天

一、确保集群中每台节点机器上的hosts文件应包含集群内所有节点的信息以保证互相解析。

1、先停止运行rabbitmq服务
命令:rabbitmqctl stop

2、加入集群中所有节点机器的ip信息。
格式为:ip 域名
例:112.74.86.122 iZ949a2mrc1Z
命令:vim /etc/hosts
这里写图片描述

3、逐个启动节点
命令:service rabbitmq-server start

4、查看各节点运行状态
命令:rabbitmqctl cluster_status
这里写图片描述
! 这里我已经加入了集群了

5、设置节点机器的Cookie一致

   必须先暂停节点运行   a、在var/lib/rabbitmq/.erlang.cookie下   b、读取其中一个节点的cookie,并复制到其他节点(节点间通过cookie确定相互是否可通信)   c、读取iZ949a2mrc1Z节点的   命令:cat /var/lib/rabbitmq/.erlang.cookie   d、复制到iZbp10c911n2z47alw0t4bZ节点:   命令:echo 读出的值 > /var/lib/rabbitmq/.erlang.cookie   启动节点   service rabbitmq-server start

5、建集群
RabbitMQ集群中所有节点都是平等的,没有绝对的主次之分,每一个节点的配置信息都会在集群中进行同步。只有节点类型区别,节点类型有disk型和RAM型。分别对应磁盘和内存,disk节点可以持久化消息安全性较高、RAM节点存取速度快,但是不能持久化。一个集群中至少要有一个disk类型的节点,以便在所有节点宕机重启时将持久化队列中的消息进行持久化。

这里把iZbp10c911n2z47alw0t4bZ加入到iZ949a2mrc1Z中
把iZ949a2mrc1Z当做disc,iZbp10c911n2z47alw0t4bZ当做ram

在iZbp10c911n2z47alw0t4bZ节点机器上执行a、rabbitmqctl stop_appb、rabbitmqctl join_cluster --ram rabbit@iZ949a2mrc1Zc、rabbitmqctl start_app

6、排错
建集群过程中碰到如下错误:
rabbitmqctl join_cluster –ram rabbit@iZ949a2mrc1Z
Clustering node rabbit@iZbp10c911n2z47alw0t4bZ with rabbit@iZ949a2mrc1Z …
Error: unable to connect to nodes [rabbit@iZ949a2mrc1Z]: nodedown
DIAGNOSTICS
===========
attempted to contact: [rabbit@iZ949a2mrc1Z]
rabbit@iZ949a2mrc1Z:
* unable to connect to epmd (port 4369) on iZ949a2mrc1Z: nxdomain (non-existing domain)
current node details:
- node name: ‘rabbitmqctl-8666@iZbp10c911n2z47alw0t4bZ’
- home dir: /var/lib/rabbitmq
- cookie hash: 50YO3zK+HJHos0tab1vHjg==
解决之道:
集群节点间需能互相访问,故每个集群节点的hosts文件应包含集群内所有节点的信息以保证互相解析
这里写图片描述
之后重启各节点中的rabbitmq

7、完成
这里写图片描述

查看节点集群
命令:rabbitmqcat cluster_status
这里写图片描述

0 0
原创粉丝点击