服务器安装三节点RabbitMQ集群

tech2023-09-20  99

首先准备三台服务器:我这里三个IP分别是99/106/119 对应的hostname在之前安装KubeSphere的时候已经改好了 为master1、master2、master3

有些说免密登录的,没必要吧 只要三台机器互相可以ping通,关闭防火墙、SELinux,就行


RabbitMQ 基于Erlang实现的,所以在安装rabbitmq之前需要先安装erlang, 安装的时候需要注意erlang的版本号与rabbitmq的版本号。  安装注意:erlang版本号需要兼顾rabbitmq版本。 版本不对,是无法启动rabbitmq的。  官网版本对应表:http://www.rabbitmq.com/which-erlang.html


【1】首先在三台机器上分别安装RabbitMQ

可以先查看一下当前配置的源支持的软件版本

yum list erlang erlang-R16B-03.18.el7.x86_64 yum list rabbitmq-server rabbitmq-server-3.3.5-34.el7.noarch # 上面的版本比较老了,不过能用,而且这两个版本是满足依赖的

也可以参考这一篇安装较新的版本


确认好依赖的版本关系后安装

yum install erlang yum install rabbitmq-server # 这里不指定版本就会安装上面list出来的版本 # 可以yum upgrade一下,不过我这里试了也没用,在线安装的话还是最高支持上面的那个版本 # 加入是这两个版本的话,应该就没有问题,其他版本可能还会需要安装一个依赖,socat # 然后就是设置三连 systemctl enable rabbitmq-server systemctl start rabbitmq-server systemctl status rabbitmq-server # 查看插件 Rabbitmq-plugins list

到现在,还没有启动web服务呢,可以看到所有插件都是空[  ] 

启动web插件

rabbitmq-plugins enable rabbitmq_management

可以看到上面列表有几个变成[ e ] 了,我前些天第一次安装的时候还以为是错误的意思呢

应该是enable的意思,使能的意思,开启的意思

这时候登录web端口还是进不去,要重启一下服务

systemctl restart rabbitmq-server.service

这时候三个节点应该都可以登进web界面了

下面就是选择一个主节点,然后把另两个节点加入,组成集群

在这之前,还要先同步一下三个节点的cookie


【2】同步cookie

首先说一下cookie,RabbitMQ是基于Erlang的,Erlang Cookie是保证不同节点可以相互通信的密钥, 要保证集群中的不同节点相互通信必须共享相同的Erlang Cookie

# cookie目录,是个隐藏文件 /var/lib/rabbitmq/.erlang.cookie # 我们要把master1中的cookie同步到master2、3 # scp可以,不过直接复制粘贴更简单,因为cookie文件内容就是几十个字符串 # 先把2、3服务停掉,不用管1 systemctl restart rabbitmq-server.service # 把2、3的.erlang.cookie文件暂时修改为777 # 然后用1的cookie替换,替换后及时把权限修改回来,原权限是400 # 如果不还原权限,启动mq时会报错,直接启动不起来。

【3】加入集群

因为rabbitmq-server启动时,会一起启动节点和应用,它预先设置RabbitMQ应用为standalone模式。 要将一个节点加入到现有的集群中,你需要停止这个应用并将节点设置为原始状态,然后就为加入集群准备好了。 如果使用systemctl stop rabbitmq-server,应用和节点都将被关闭。所以使用rabbitmqctl stop_app仅仅关闭应用。

【2】中把2、3的服务停掉了,现在开启

# 开启服务 systemctl start rabbitmq-server # 停掉应用,不是停服务 rabbitmqctl stop_app # 加入集群 rabbitmqctl join_cluster rabbit@master1 ############################################ # 默认rabbitmq启动后是磁盘节点, # 如果要使2、3都是内存节点,加上--ram参数即可。 # rabbitmqctl join_cluster --ram rabbit@master1 # 如果想要更改节点类型,可以使用命令 rabbitmqctl change_cluster_node_type disc(ram) # 前提是必须停掉rabbit应用

这时节点2、3就加进来了

然后再把2、3的应用打开 

rabbitmqctl start_app


这样,普通的集群模式就搭建好了,下一篇再在此基础上,配置为镜像集群模式

 

最新回复(0)