一、安装准备2台或以上服务器:
1.两台 windows 服务器,也可以用虚拟机。
2.安装erlang以及rabbitmq
安装参考:https://blog.csdn.net/ring300/article/details/82802017
二、集群搭建
假设2台服务器:
10.10.8.235 rabbit@JTV-ELNDEVDB01
10.10.8.251 rabbit@JTV-ELNPRESS
1、修改hosts文件,路径C:\Windows\System32\drivers\etc
10.10.8.235 服务器:
10.10.8.235 JTV-ELNDEVDB01
10.10.8.251 JTV-ELNPRESS
10.10.8.251 服务器:
10.10.8.251 JTV-ELNPRESS
10.10.8.235 JTV-ELNDEVDB01
2、分别在两台机器创建集群配置文件 rabbitmq.config。
路径:C:\Users\Administrator\AppData\Roaming\RabbitMQ
内容为(包括最后的 .):
[{rabbit,[{cluster_nodes, ['rabbit@JTV-ELNDEVDB01', 'rabbit@JTV-ELNPRESS']}]}].
rabbitmq.config是一个标准的erlang配置文件。它必须符合erlang配置文件的标准。
它既有默认的目录,也可以在rabbitmq-env.conf文件中配置。
3、配置环境变量,在C:\Users\Administrator\AppData\Roaming\RabbitMQ 路径中,创建rabbitmq-env.conf
a、10.10.8.235 中文件内容为:
NODENAME=rabbit@JTV-ELNDEVDB01
NODE_IP_ADDRESS=10.10.8.235
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\db
RABBITMQ_LOG_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
b、10.10.8.251 中文件内容为:
NODENAME=rabbit@JTV-ELNPRESS
NODE_IP_ADDRESS=10.10.8.251
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\db
RABBITMQ_LOG_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
4、.erlang.cookie文件统一(此文件用户集群之间通信秘钥,必须一致)
将10.10.8.235中C:\Users\Administrator中的.erlang.cookie 的文件替换掉10.10.8.251 中 C:\Users\Administrator
和C:\Windows\System32\config\systemprofile 目录中的 .erlang.cookie
5.重启服务
a).10.10.8.251
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
b).10.10.8.235
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@JTV-ELNPRESS
rabbitmqctl start_app
若执行报错的话把 主机 C:\Users\Administrator中的.erlang.cookie 的文件替换掉C:\Windows\System32\config\systemprofile目录中的 .erlang.cookie ,如何还报错 则按下面步骤走:
错误信息:
error:unable to perform an operation on node '' please see diagnostics information and suggestions b
1、服务中找到rabbitmq服务,把当前登陆用户 配置进去
2、启动rabbitmq服务
3、把 C:\Users\Administrator中的.erlang.cookie 的文件替换掉C:\Windows\System32\config\systemprofile目录中的 .erlang.cookie
4、停掉rabbitmq服务
5、再执行上面的 脚本,比如:rabbitmqctl join_cluster rabbit@JTV-ELNPRESS
如果执行命令还是报这个错: error:unable to perform an operation on node '' please see diagnostics information and suggestions b
直接用 rabbitmq-server -detached 后台启动
关闭服务:rabbitmqctl stop_app
连接子服务器:rabbitmqctl join_cluster rabbit@JTV-ELNPRESS
三、访问mq查看是否集群成功
需要注意的是,搭建集群建议最少设置一个磁盘节点,防止机器意外关机等、丢失数据。
rabbitmq集群有两种节点 磁盘节点和内存节点。字面上了解,磁盘节点的数据存储在磁盘,内存节点的数据存储的内存中。因此存储速度方面内存节点有优势,数据安全方面磁盘节点有优势。
rabbitmq启动后默认是磁盘节点,如果要使用内存节点那么在 搭建集群的时候,在上方重启服务中的
rabbitmqctl join_cluster rabbit@JTV-ELNPRESS
命令修改为 rabbitmqctl join_cluster --ram rabbit@JTV-ELNPRESS,这样配置之后
10.10.8.235的节点就为内存节点了。
四、镜像配置
此配置的作用,为了同步消息,如给A节点发送一条消息,则自动同步到B节点。配置如下: