RabbitMQ集群搭建

1.规划节点

192.168.200.4---rabbitmq1---RabbitMQ磁盘节点

192.168.200.5---rabbitmq2---RabbitMQ内存节点

192.168.200.6---rabbitmq3---RabbitMQ内存节点​

使用OpenStack平台创建三台云主机进行实验,云主机镜像使用提供的CentOS_7.5_x86_64_XD.qcow2镜像,flavor使用1核/2G内存/20G硬盘,自行配置网络并使用远程连接工具连接云主机。节点规划表中的IP地址为作者的IP地址

2.基础环境安装

2.1 修改主机名

192.168.200.4

shell 复制代码
# hostnamectl set-hostname rabbitmq1 # 修改完成后使用ctrl+D退出登录然后重新登录

192.168.200.5

shell 复制代码
# hostnamectl set-hostname rabbitmq2 # 修改完成后使用ctrl+D退出登录然后重新登录

192.168.200.6

shell 复制代码
# hostnamectl set-hostname rabbitmq3 # 修改完成后使用ctrl+D退出登录然后重新登录

2.2 关闭防火墙以及selinux

三个节点全都关闭防火墙以及selinux

shell 复制代码
# setenforce 0 # vi /etc/selinux/config ... SELINUX=disabled ... # systemctl stop firewalld # systemctl disable firewalld

2.3 配置hosts文件

三个节点配置/etc/hosts文件

shell 复制代码
# vi /etc/hosts ... 192.168.200.4 rabbitmq1 192.168.200.5 rabbitmq2 192.168.200.6 rabbitmq3

2.4配置yum源

三个节点均使用提供的rabbitmq-repo.tar.gz的压缩包,上传至虚拟机的/root目录下,解压并放在/opt目录下,进入/etc/yum.repos.d目录下,将原来的repo文件移除,新建local.repo文件并编辑内容

shell 复制代码
# tar -zxvf rabbitmq-repo.tar.gz -C /opt/ # cd /etc/yum.repos.d/ # gzip * # vi local.repo [rabbitmq] name=rabbitmq baseurl=file:///opt/rabbitmq-repo gpgcheck=0 enabled=1 # yum clean all # yum makecache # yum repolist

2.5 安装RabbitMQ服务并启动

yum配置完毕后,三个节点安装RabbitMQ服务

shell 复制代码
# yum install -y rabbitmq-server

三个节点启动RabbitMQ服务,并查看服务状态

shell 复制代码
rabbitmq1 # systemctl start rabbitmq-server rabbitmq1 # systemctl status rabbitmq-server

2.6 配置界面访问

RabbitMQ提供了一个非常友好的图形化监控页面插件(rabbitmq_management),让我们可以一目了然看见Rabbit的状态或集群状态

shell 复制代码
rabbitmq1 # rabbitmq-plugins enable rabbitmq_management rabbitmq1 # service rabbitmq-server restart

2.7 使用界面查看

在开启了图形化监控页面之后,能通过网页访问,访问端口为15672,使用命令查看端口启动情况

shell 复制代码
rabbitmyq1 # netstatus -ntpl

若看到15672端口已开放,打开浏览器,输入rabbitmq1节点的ip加端口15672( http://192.168.200.4:15672)访问RabbitMQ监控界面,使用用户名:密码guest:guset登录

3. 配置RabbitMQ集群服务

3.1 配置节点间的通信

Rabbitmq的集群是依附于erlang集群来工作的,所以必须先构建起一个erlang集群。erlang集群中各节点是由magic cookie来实现的,每个节点上要保持相同的.erlang.cookie文件,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。必须保证各节点cookie一致,不然节点之间就无法通信。 查看rabbitmq1节点的.erlang.cookie文件,并将该文件复制到rabbitmq2和rabbitmq3节点的/var/lib/rabbitmq/目录下

shell 复制代码
rabbitmq1 # cat /var/lib/rabbitmq/.erlang.cookie rabbitmq1 # scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmq2:/var/lib/rabbitmq/ rabbitmq1 # scp /vat/lib/rabbitmq/.erlang.cookie root@rabbitmq3:/var/lib/rabbitmq/

将.erlang.cookie文件传至rabbitmq2和rabbitmq3节点后,需要修改该文件的用户和用户组

shell 复制代码
rabbitmq2 # chown rabbitmq:rabbitmq .erlang.cookie rabbitmq3 # chown rabbitmq:rabbitmq .erlang.cookie

3.2 配置节点加入集群

在rabbitmq2、rabbitmq3节点执行如下命令,将这两个节点作为ram节点加入到RabbirMQ集群中

shell 复制代码
------rabbitmq2 rabbitmq2 # rabbitmqctl stop_app rabbitmq2 # rabbltmqctl join_cluster --ram rabbit@rabbitmq1 rabbitmq2 # rabbitmqctl start_app ------rabbitmq3 rabbitmq3 # rabbitmqctl stop_app rabbitmq3 # rabbitmqctl join_cluster --ram rabbit@rabbitmq1 rabbitmq3 # rabbitmqctl start_app

默认rabbitmq启动后是磁盘节点,在这个cluster命令下,rabbitmq2和rabbitmq3是内存节点,rabbitmq1是磁盘节点 如果要使rabbitmq2、rabbitmq3都是磁盘节点,去掉--ram参数即可。 如果想要更改节点类型,可以使用命令rabbitmqctl change_cluster_node_type disc(ram),前提是必须停掉rabbit应用。

3.3 配置RAM节点启用界面

shell 复制代码
------rabbitmq2 rabbitmq2 # rabbitmq-plugins enable rabbitmq_managemant rabbitmq2 # service rabbitmq-server restart ------rabbitmq3 rabbitmq3 # rabbitmq-plugins enable rabbitmq_management rabbitmq3 # service rabbitmq-server restart

启用rabbitmq2节点和rabbitmq3节点的监控界面后,登录http://192.168.200.4:15672,查看监控界面

3.4RabbitMQ集群常用命令

查看插件打开情况

shell 复制代码
# rabbitmq-plugins list

启动监控管理器命令

shell 复制代码
# rabbitmq-plugins enable rabbitmq_management

关闭监控管理器命令

shell 复制代码
# rabbitmq-plugins disable rabbitmq_management

查看所有的队列

shell 复制代码
# rabbitmqctl list_queues

清除所有的队列

shell 复制代码
# rabbitmqctl reset

查看用户

shell 复制代码
# rabbitmqctl list_users

查看状态

shell 复制代码
# rabbitmqctl status

查看集群状态,在RabbitMQ集群的任意节点上可以查看RabbitMQ集群的状态

shell 复制代码
# rabbitmqctl cluster_status

新增用户admin,密码设置为admin

shell 复制代码
# rabbitmqctl add_user admin admin

删除用户

shell 复制代码
# rabbitmqctl delete_user admin

修改用户密码为admin123

shell 复制代码
# rabbitmqctl change_password admin admin123

设置角色

shell 复制代码
# rabbitmqctl set_user_tags admin administrator monitoring policymaker management

设置用户权限

shell 复制代码
# rabbitmqctl set_permissions -p VHostPath admin ConfP WriteP ReadP

查询所有权限

shell 复制代码
# rabbitmqctl list_permissions [-p VHostPath]

指定用户权限

shell 复制代码
# rabbitmqctl list_user_permissions admin

清除用户权限命令

shell 复制代码
# rabbitmqctl clear_permissions [-p VHostPath] admin
相关推荐
Y38153266213 小时前
Ruby 调用谷歌搜索 API:net/http 与 json 标准库实战
搜索引擎·ruby
imDwAaY18 小时前
消息队列四大核心问题:顺序性、幂等性、可靠性与一致性
学习·kafka·rabbitmq
手握风云-2 天前
一条消息的旅程:RabbitMQ 学习与实践(五)
rabbitmq·java-rabbitmq
daemon.qiang2 天前
国内虚拟机对接 Freedesktop:Fork xserver、自建 Runner 与提交 MR 实战
linux·ubuntu·centos·gitlab·开源软件
lqg_zone3 天前
CentOS 7 虚拟机磁盘 I/O 卡顿排查实录:从 iostat 异常到虚拟盘后端故障的完整定位
linux·服务器·mysql·centos
szephyr3 天前
消息队列入门:RabbitMQ 和 Kafka 到底怎么选,什么时候不该用
后端·架构·kafka·消息队列·rabbitmq
Msshu1234 天前
什么是PD快充诱骗取电芯片,PD快充取电芯片如何选型
flink·rabbitmq·ambari·mariadb·storm·talkingdata
江屿风4 天前
【Linux系统】【Linux进程终止等待详解与程序替换机制初体验】流食般投喂
linux·运维·笔记·系统架构·centos·unix
螺蛳粉 螺蛳粉4 天前
CentOS 7.9 自建 Yum 源服务器搭建指南
linux·服务器·centos
小小的木头人4 天前
CentOS 7 下 Nginx 访问自定义目录报 403 的完整排查:从端口权限到 SELinux
nginx·centos