RabbitMQ3.6.5集群搭建和遇到的问题
来源:互联网 发布:阿里云ecs 用户名密码 编辑:程序博客网 时间:2024/06/16 13:35
RabbitMQ3.6.5集群搭建
搭建环境:
非单机集群,使用VMware Workstation创建三台独立的虚拟机(桥接模式)。ip地址分别为:192.168.0.113 、192.168.0.116、 192.168.0.119
若首次搭建,请阅读下官方文档Clustering Guide
搭建步骤
- 修改hosts
在三台机器上配置响应的hosts如下:- 192.168.0.113 rabbit1
- 192.168.0.116 rabbit2
- 192.168.0.119 rabbit3
- 复制.erlang.cookie
首先启动三台机器的rabbitmq,此时会在HOME目录(默认情况下)生成cookie文件,用于erlang在分布式节点之间进行通讯,此cookie文件的内容必须相同,否则无法通讯。 1.启动指令: RABBITMQ_NODENAME=rabbit@rabbit1 ./rabbitmq-server -detached RABBITMQ_NODENAME=rabbit@rabbit2 ./rabbitmq-server -detached RABBITMQ_NODENAME=rabbit@rabbit3 ./rabbitmq-server -detached 2. 复制cookie 改变了节点cookie之后不能对节点通讯,此时用kill指令关掉rabbitmq进程重启即可,当然也可以优雅的先关闭,在修改cookie: ./rabbitmqctl -n rabbit@rabbit2 stop关闭,然后修改cookie 注意:如果修改了节点名,接后续操作必须-n指明,否则erlang无法找到节点
将第二个节点加入集群中
在修改了cookie之后,启动rabbitmq:
RABBITMQ_NODENAME=rabbit@rabbit2 ./rabbitmq-server -detached
关闭app并reset:
./rabbitmqctl -n rabbit@rabbit2 stop_app./rabbitmqctl -n rabbit@rabbit2 reset
将节点加入集群:
./rabbitmqctl -n rabbit@rabbit2 join_cluster rabbit@rabbit1
提示:
Clustering node rabbit@rabbit2 with rabbit@rabbit1 ...
查看集群状态:
./rabbitmqctl -n rabbit@rabbit2 cluster_status如下:Cluster status of node rabbit@rabbit2 ...[{nodes,[{disc,[rabbit@rabbit1,rabbit@rabbit2]}]}, {alarms,[{rabbit@rabbit1,[]}]}]
- 添加剩余节点
同第二步骤
遇到的问题:
开始的时候启动rabbitmq服务,没有使用RABBITMQ_NODENAME指定节点在erlang中的sname。导致第二个节点加入的时候,总是提示错误:
connected to epmd (port 4369) on mqmaster epmd reports node 'rabbit' running on port 25672 TCP connection succeeded but Erlang distribution failed suggestion: hostname mismatch? suggestion: is the cookie set correctly? suggestion: is the Erlang distribution using TLS?
这个问题特别愁人,我谷歌了一天,中文和英文网站都看了也没找出问题。。。
下面是我排错的过程:
首先手动创建erlang节点,确保两台机器能ping通过.
$ erl -sname test -setcookie 123
看下节点名称: node().
显示:
$ erl -sname test1 -setcookie 123
net_adm:ping
能ping通,说明节点可以通讯,而且rabbitmq节点之间的cookie是相同的,排除此问题。仔细看下错误提示:
epmd reports node 'rabbit' running on port 25672
说明第二个节点找到了第一个节点的服务器且知道第一个节点在运行.
再看建议: suggestion: hostname mismatch?
因为看到过RABBITMQ_NODENAME
这个配置(不设置的时候,节点为rabbit@ubuntu ,这里ubuntu是你的机器名),对比在第二个节点上执行的命令:
join_cluster rabbit@rabbit1
猜测hosts里虽然配置了rabbit1的ip地址,但仅仅这样还是不够的,这里有个hostname
的概念,应该不是简单的配置host就可以的,文档上也有说明:
Unix*: rabbit@$HOSTNAMEWindows: rabbit@%COMPUTERNAME%```
所以尝试指定sname,设置hostname,集群加入成功。
0 0
- RabbitMQ3.6.5集群搭建和遇到的问题
- 关于搭建Apache和Tomcat集群遇到的问题
- 集群搭建时候遇到的一个问题
- kubernetes集群搭建以及遇到的问题
- 【redis】搭建集群遇到的问题
- kubernetes集群搭建以及遇到的问题
- 搭建zookeeper集群遇到的问题整理
- redis集群搭建 以及搭建过程中遇到的问题
- CM集群搭建遇到问题
- RabbitMQ3.6.3集群搭建+HAProxy1.6做负载均衡
- RabbitMQ3.6.3集群搭建+HAProxy1.6做负载均衡
- 09 redis集群的搭建 以及遇到的问题
- 10 mongo集群的搭建 以及遇到的问题
- 09 redis集群的搭建 以及遇到的问题
- Kubernetes集群搭建过程中遇到的问题
- hadoop伪分布式集群搭建遇到的问题
- 搭建集群时遇到各种奇葩问题的大招~~
- Hadoop-2.7.3集群搭建中遇到的问题总结
- (dataGrid)查询表格
- Java用 * 打印图形-菱形、空心菱形、三角形等
- android 接口 接口回调
- app接口总结
- 19.显示购物车商品(没有使用sharedprefrene,使用了hasmap,还有加减控件不能用)
- RabbitMQ3.6.5集群搭建和遇到的问题
- CENTOS安装ElasticSearch
- error: Error retrieving parent for item: No resource found that matches the given name 'Theme.Ap
- C++的运算符重载
- OSSClient
- Java加密
- 第七周 oj 2013 一元二次方程求解
- iOS10推送必看UNNotificationServiceExtension
- 以下5点能做到3点,你的写作之路就会坚持很久