大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
我这里使用三台阿里云服务器搭建RabbitMQ集群。
1.首先使用cat /etc/hostname
查看自己这三台云服务器的名字。当然也可以按照自己的想法修改,使用vim /etc/hostname
就可已修改,如何进行编辑和保存,可以百度搜一下。保存之后,需要重启云服务器才能生效。
图中1和2都是hostname,修改过/etc/hostname之后,必须重启之后,1和/etc/hostname的值才能一样。
2. 使用vim /etc/hosts
填写下边的格式的内容:
xxx.xxx.xxx.xxx hostname
这里“xxx.xxx.xxx.xxx”是ip。
我这里有三台云服务器,那么我就需要填三条,底下不是真实ip和hostname,如有雷同,纯属虚构。比如:
10.124.78.12 Ali398V16
12.34.56.90 Ali398V17
125.34.56.121 Ali398V17
大家一定按照自己的真实情况填写。
3.从https://github.com/rabbitmq/erlang-rpm/releases下载rabbitmq需要的erlang依赖包,从https://github.com/rabbitmq/rabbitmq-server/releases下载rabbitmq安装包。从https://www.rabbitmq.com/官网中,可以看到rabbitmq每个版本所依赖的erlang版本。
4. 我这下载的是erlang-23.2.7-1.el7.x86_64.rpm和rabbitmq-server-3.9.15-1.el7.noarch.rpm到/root目录下,然后进到/root,先执行rpm -ivh erlang-23.2.7-1.el7.x86_64.rpm
进行安装,然后使用rpm -Uvh rabbitmq-server-3.9.15-1.el7.noarch.rpm
命令安装。
5.进入到阿里云ecs控制台进行安全组的添加。
把4369、5672、15672和25672四个端口都添加上。
6.先在第1台节点上,systemctl start rabbitmq-server.service
启动rabbitmq-server服务,systemctl status rabbitmq-server.service
查看rabbitmq-server服务状态,rabbitmqctl cluster_status
查看集群状态。
7.现在需要让三个节点中/var/lib/rabbitmq/目录下.erlang.cookie
这个文件要一模一样。在当前云服务器上,可以在第1台节点上使用scp给第2个节点和第3个节点进行文件传输,使用scp 各级目录名/需要传输文件名 用户名@ip或者/etc/hosts中hostname:各级目录名/传输目标文件名
,我这里使用scp /var/lib/rabbitmq/.erlang.cookie root@Ali472V4:/var/lib/rabbitmq/.erlang.cookie
。登录上Ali472V4这个节点,然后使用ll -a /var/lib/rabbitmq/
查看一下.erlang.cookie
这个文件信息,如果用户不是rabbitmq,用户组不是rabbitmq的话,需要chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
命令进行修改;若文件权限不是-rw-------
的话,需要使用chmod 600 /var/lib/rabbitmq/.erlang.cookie
命令进行修改。同样的,也需要先使用scp /var/lib/rabbitmq/.erlang.cookie root@Ali472V2:/var/lib/rabbitmq/.erlang.cookie
远程传输文件,然后再看用户、用户组和文件权限情况,不符合要求的话,需要使用相应的命令进行修改。
8.在Ali472V4上执行systemctl start rabbitmq-server.service
,然后查看状态systemctl status rabbitmq-server.service
。
状态正常之后,rabbitmqctl stop_app
命令先停止,然后rabbitmqctl join_cluster rabbit@Ali398V16
加入节点,之后rabbitmqctl start_app
打开。
使用rabbitmqctl cluster_status
查看集群状态。
运行节点现在有两个。之后在Ali472V2上,像上一个节点一样,执行systemctl start rabbitmq-server.service
之后执行systemctl status rabbitmq-server.service
查看服务状态,rabbitmqctl stop_app
命令先停止,然后rabbitmqctl join_cluster rabbit@Ali398V16
加入节点,之后rabbitmqctl start_app
打开,rabbitmqctl cluster_status
查看集群状态。
9.在自己本机上的浏览器使用ip:15672
可以进入登录页面。我这里用户名和密码都输入guest进去,发现提示“User can only log in via localhost”。
我在当前Ali398V16节点使用rabbitmqctl add_user 用户名 密码
格式命令,就是rabbitmqctl add_user admin password
,来添加一个密码为“password”,用户名为“admin”的用户。
在本机浏览器上使用用户名“admin”和密码“password”进行登录,发现提示“Not management user”。
使用rabbitmqctl set_user_tags admin administrator
为“admin”用户赋予“administrator”权限。
正常登录进来了,但是发现有一个节点在页面上提示“Node statistics not available”,需要在这个节点上,执行rabbitmq-plugins enable rabbitmq_management
安装插件。
在本机浏览器中,刷新页面,看到正常显示。
我遇到的比较棘手的问题,在执行rabbitmqctl join_cluster rabbit@worker2
命令花了几个小时最终解决的问题。描述如下:
Clustering node rabbit@Ali472V2 with rabbit@worker2
Error: unable to perform an operation on node 'rabbit@worker2'. Please see diagnostics information and suggestions below.
Most common reasons for this are:
* Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
* CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server) * Target node is not running In addition to the diagnostics info below: * See the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more * Consult server logs on node rabbit@worker2 * If target node is configured to use long node names, don't forget to use --longnames with CLI tools
DIAGNOSTICS
===========
attempted to contact: [rabbit@worker2]
rabbit@worker2:
* connected to epmd (port 4369) on worker2
* epmd reports node 'rabbit' uses port 25672 for inter-node and CLI tool traffic
* TCP connection succeeded but Erlang distribution failed
* suggestion: check if the Erlang cookie is identical for all server nodes and CLI tools
* suggestion: check if all server nodes and CLI tools use consistent hostnames when addressing each other
* suggestion: check if inter-node connections may be configured to use TLS. If so, all nodes and CLI tools must do that
* suggestion: see the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more
Current node details:
* node name: 'rabbitmqcli-911-rabbit@Ali472V2'
* effective user's home directory: /var/lib/rabbitmq
* Erlang cookie hash: /m8U0Ow5FZV0yu0dRJy3BA==
这个原因是worker2不是对应节点中/etc/hostname里边的字符串,在当前节点Ali472V2中,/etc/hosts里边应该写入的hostname应该为对应节点/etc/hostname里边的字符串“Ali398V16”。
解决方案:
(1)先使用systemctl stop rabbitmq-server.service
关闭服务。
(2)vim /etc/hosts
修改对应ip后边hostname。
(3)重新打开服务,systemctl start rabbitmq-server.service
。
(4)rabbitmqctl stop_app
(5)rabbitmqctl join_cluster rabbit@Ali398V16
可以再使用rabbitmqctl cluster_status
看一下集群状态。
三个节点正常运行。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195381.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...