首先准备三台服务器:我这里三个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
这样,普通的集群模式就搭建好了,下一篇再在此基础上,配置为镜像集群模式