1.环境准备
1.1 两台windows服务器
1.2 安装相同版本的erlang以及rabbitmq
1.3 安装完成后验证两边的登录是否正常
创建另一用户
2.配置环境
2.1 查看节点名
在rabbitmq安装目录 sbin 下执行 rabbitmqctl status
2.2 配置文件(两台都做)
1. 创建集群配置文件rabbitmq.config
在路径 C:\Users\Administrator\AppData\Roaming\RabbitMQ 下创建
rabbitmq.config内容如下:
[{rabbit,[{cluster_nodes, ['节点名A', '节点名B']}]}].
2. 创建环境变量配置文件rabbitmq-env.conf
在路径 C:\Users\Administrator\AppData\Roaming\RabbitMQ 下创建
rabbitmq-env.conf内容如下:
主机A配置:
NODENAME=节点名A
NODE_IP_ADDRESS=主机A的IP
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\db
RABBITMQ_LOG_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
==========================================================================
主机B配置:
NODENAME=节点名B
NODE_IP_ADDRESS=主机B的IP
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\db
RABBITMQ_LOG_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\log
2.3 修改hosts文件(两台都做)
在路径 C:\Windows\System32\drivers\etc 下添加相应的解析
主机A:
主机A的IP 节点名
主机A的IP 主机名
主机B的IP 节点名
主机B的IP 主机名
==========================================
主机B:
主机A的IP 节点名
主机A的IP 主机名
主机B的IP 节点名
主机B的IP 主机名
2.4 通信秘钥 .erlang.cookie 文件
(两台的 .erlang.cookie必须一致!!!)
将主机A路径下的 C:\Windows\System32\config\systemprofile 的 .erlang.cookie 拷贝到主机B的 C:\Windows\System32\config\systemprofile 和 C:\Users\Administrator下 ,以防万一将主机B的 .erlang.cookie 文件先备份好
2.5 端口开放
将4369、 5672、 15672 、25672端口开放并验证
防火墙设置===》telnet 验证
2.6重启服务
重启主机A
==========================================
rabbitmqctl stop_app
rabbitmqctl start_app
成功!!!
重启主机B
===========================================
rabbitmqctl stop_app
rabbitmqctl join_cluster 节点B
rabbitmqctl start_app
登录访问rabbitmq管理后台,出现如下界面则表示成功
2.7数据同步
为了同步消息,如给A节点发送一条消息,则自动同步到B节点
3.报错处理
cookie也设置相同,环境变量也添加正确,但还是报错
报错信息如下:
原因:账号权限问题
虽然是用administrator账号登录服务器并安装rabbitmq,rabbitmq也自动在C:\user\administrator下创建了一个.erlang.cookie文件
但RabbitMQ服务启动的时候,登录身份是本地系统账户,如图所示
解决方法:
将RabbitMQ服务的启动账号改成administrator,如下图所示:
再次重启服务,成功!!!