windows下rabbitmq集群搭建

windows下rabbitmq集群搭建,第1张

准备2台机器,例如:computera: 10.0.0.151   computerb:10.0.0.234  都安装erlang环境和rabbitmq服务,注意otp环境和rabbitmq服务必须版本一致,否则无法搭建集群

步骤:

1.将2台机器的.erlang.cookie都设置一致,rabbitmq依赖它进行集群通讯(windows目录下C:\Users\Administrator和C:\Windows)

C:\Windows\System32\config\systemprofile

2.修改2台机器的host文件配置

               10.0.0.151    computera

               10.0.0.234    computerb

3.

  在2台机器C:\Users\Administrator\AppData\Roaming\RabbitMQ目录下添加rabbitmq.config集群配置文件,注意以.符号结尾

例如:

[{rabbit,[{tcp_listeners, [5672]},{cluster_nodes,{['rabbit@computera','rabbit@computerb'],ram}}]}].

  10.0.0.151机器在该目录下同时添加rabbitmq-env.conf配置文件

NODENAME=rabbit@computera

NODE_IP_ADDRESS=10.0.0.151

NODE_PORT=5672

RABBITMQ_MNESIA_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\db

RABBITMQ_LOG_BASE=C:\Users\Administrator\AppData\Roaming\RabbitMQ\log

  10.0.0.234机器将ip修改为10.0.0.234、nodename修改为:rabbit@computerb

4.在10.0.0.234机器运行

          rabbitmqctl stop_app

          rabbitmqctl reset

rabbitmqctl start_app

   在10.0.0.151机器运行

          rabbitmqctl stop_app

          rabbitmqctl reset

          rabbitmqctl join_cluster rabbit@computerb --ram

          然后启动rabbit服务查看集群状态

          rabbitmqctl start_app

         rabbitmqctl cluster_status

参考我之前的文章即可( https://pan.baidu.com/s/1iYK7ejegd54H3wM1xXNDcw

  提取码: gd8t

这一步主要参考官网的步骤,具体如下:

创建 /etc/yum.repos.d/rabbitmq_erlang.repo 文件,内容如下:

安装erlang

2.2.1 导入mq签名

2.2.2 添加rabbitmq.repo文件-此处可参看官网( https://www.rabbitmq.com/install-rpm.html

),我这边服务器是centos7,故rabbitmq.repo写入如下内容:

2.2.3 安装rabbitmq服务

2.2.4 启动服务并设置开机自启动

2.2.5 开启管理界面

这一点 方便我们通过url访问查看运行情况,阿里云服务器安全里一定要开启15672端口

在此我们还需要新增一个用户作为管理员

添加用户 -用户名 密码自己定

修改用户角色为管理员- 把下面username改成自己的用户名

修改用户权限

自此 你可以通过ip:15672的方式访问RabbitMQ后台

目前我是有两台阿里云的,同一区的服务器,内网可访问。

2.3.1 修改hostname -服务器别名,方便我们后面两个mq服务连接

vi /etc/hosts  新增node1和node2 两个内网ip

原以为OK了,重启还是老样子,其实centos7 还提供了一步方法

直接修改成功了!

2.3.2 Erlang cookie设置,这里最坑,困了我好久,有必要总结一下

确保node1与node2两个服务器的.erlang.cookie保持一致

找到node1服务器的.erlang.cookie,位置如下:

/var/lib/rabbitmq/.erlang.cookie

然后复制内容到node2服务器对应的.erlang.cookie

修改好后,记得还原权限400

修改完后 一定要重启node1与node2服务器,这样修改才能生效。之前一直困扰我的node2连接不上node1的mq服务,一直提示cookie有问题,重启mq服务也没用,重启服务器 reboot后问题就可以解决,切莫少了这步。

出现的问题如下:

TCP connection succeeded but Erlang distribution failed

Authentication failed (rejected by the remote node), please check the Erlang cookie

那就执行重启命令吧!一切解决!

2.3.3 加入mq集群

node1 mq服务设置后台执行

可以查看目前 node1的mq状态

node2 加入node1的MQ集群,关键时刻了!

配置好MQ集群后,可以在 node1、node2服务器上任意执行 rabbitmqctl cluster_status 来查看MQ集群是否配置成功

如下图所示:

这里就彻底成功了!现在直接通过url访问看一下是否正常可以显示两个mq服务:

常见错误:

1、使用 rabbitmq-server -detached命令启动rabbitmq时,出现以下提示Warning: PID file not written-detached was passed,此时使用rabbitmqctl status提示服务已启动,可知此问题不用解决。

2、由于更改hostname文件,在每次rabbitmqctl stop或者rabbitmqctl cluster_status等,只要是rabbitmq的命令就报错,提示大概如下

Cluster status of node rabbit@web2 ...

Error: unable to connect to node rabbit@web2: nodedown

attempted to contact: [rabbit@web2]

rabbit@web2:

current node details:

此时先 ps aux | grep mq ,然后 kill -9 该进程,然后再 rabbitmq-server -detached 即可解决。(即先强杀,再重新启动)

3、使用 rabbitmqctl stop , rabbitmq-server -detached 重新启动后,原先添加的用户admin、虚拟主机coresystem等均丢失,还需要重新添加。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11232692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存