2-Centos7下安装部署RabbitMQ

网友投稿 343 2022-11-05


2-Centos7下安装部署RabbitMQ

2-Centos7下安装部署RabbitMQ

前言

RabbitMQ是一个开源的强大的企业消息系统,支持主流的操作系统,支持多种开发语言。我们项目中使用RabbitMQ作为消息队列,解耦业务,构建高可靠的消息队列系统。RabbitMQ可以用在订单系统、日志系统、数据收集等常见场景中。

本文我们介绍如何在CentOS上安装当前最新版的RabbitMQ:v3.8.1,以及如何使用Docker来安装RabbitMQ。

安装RabbitMQ

安装 RabbitMQ 之前要安装 Erlang,需要先到RabbitMQ官网看下版本对应关系。

image-20210428162322998

当前最新版rabbitmq-server是 3.8.14,最新版Erlang是 23.x。我们可以分别在Github和RabbitMQ官网下载对应的版本的rpm包。

下载 Erlang 的 rpm 包

访问 Erlang 的 Github,如下:下载地址RabbitMQ 的 rpm 包

访问 RabbitMQ 的官网,如下:下载地址wget rpm 安装

首先安装依赖socat,安装Erlang时需要这个。

yum install -y socat

接下来安装Erlang和RabbitMQ。

rpm -ivh erlang-23.3.2-1.el7.x86_64.rpmrpm -ivh rabbitmq-server-3.8.14-1.el7.noarch.rpm

执行上述两行命令后,即完成了Erlang和RabbitMQ的安装,就这么简单。

启动RabbitMQ:

systemctl start rabbitmq-server

设置RabbitMQ开机自启动:

systemctl enable rabbitmq-server

RabbitMQ其他操作:

#查看启动后的情况rabbitmqctl status#关闭服务rabbitmqctl stop#重启rabbitmqsystemctl restart rabbitmq-server#服务状态systemctl status rabbitmq-server#查看所有队列rabbitmqctl list_queues# 清除某个队列的数据rabbitmqctl purge_queue queueName# 清除所有队列数据以及用户数据、配置数据:慎用,记得要先把MQ 的meta data备份出来,reset后,将meta data导入即可。rabbitmqctl reset但是在使用此命令前,要先关闭应用,否则不能清除。关闭应用的命令为:rabbitmqctl stop_app执行了这两条命令后再次启动此应用。命令为:rabbitmqctl start_app再次执行命令:rabbitmqctl list_queues#查看所有虚拟主机rabbitmqctl list_vhosts#添加用户:rabbitmqctl add_user username password #列出所有用户:rabbitmqctl list_users #删除用户:rabbitmqctl delete_user username #清除用户权限:rabbitmqctl clear_permissions -p vhostpath username #列出用户权限:rabbitmqctl list_user_permissions username #修改密码:rabbitmqctl change_password username newpassword #设置用户权限:rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*" #创建虚拟主机: rabbitmqctl add_vhost vhostpath #列出所以虚拟主机: rabbitmqctl list_vhosts #列出虚拟主机上的所有权限: rabbitmqctl list_permissions -p vhostpath #删除虚拟主机: rabbitmqctl delete_vhost vhost vhostpath #移除所有数据,要在 rabbitmqctl stop_app 之后使用: rabbitmqctl reset #组成集群命令: rabbitmqctl join_cluster [--ram] #查看集群状态: rabbitmqctl cluster_status #修改集群节点的存储形式: rabbitmqctl change_cluster_node_type disc | ram #摘除节点:rabbitmqctl forget_cluster_node [--offline] #修改节点名称:rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2 newnode2] [oldnode3 newnode3...]

配置RabbitMQ

1.启用网页版后台管理插件:

rabbitmq-plugins enable rabbitmq_management

执行如下:

image-20210428164029666

2.新建一个用户名为admin,密码为admin的管理员,并授予管理员(administrator)权限。

rabbitmqctl add_user admin adminrabbitmqctl set_user_tags admin administrator

执行如下:

image-20210428164202881

3.设置admin可以使用的虚机权限。

rabbitmqctl add_vhost adminrabbitmqctl set_permissions -p admin admin ".*" ".*" ".*"

执行如下:

image-20210428165843811

4.插件管理:

#插件列表: rabbitmq-plugins list #启动插件: rabbitmq-plugins enable XXX (XXX为插件名)#停用插件: rabbitmq-plugins disable XXX

5.打开后台web管理界面:

刚才我们设置了admin用户,所以可以使用admin登录,也可以使用默认账号和密码都是guest登录。进入管理界面后可以看到:

使用账号/密码:admin / admin 进行登录,如下:

image-20210428170256779

image-20210428170347443

我们可以在后台管理用户、队列等信息。

6.修改RabbitMQ默认端口

RabbitMQ默认开启了几个端口:

​​4369​​:erlang发现口

​​5672​​:client端通信口,客户端要连接RabbitMQ服务时要用到

​​15672​​:后台管理界面ui端口,进入管理后台时访问url如:RabbitMQ-3.8.x 后,发现找不到它的配置文件,按常理,服务的端口开发都可以在配置文件里配置的。但是事实上RabbitMQ-3.8.1并没有生成配置文件,需要我们手动添加配置文件。

[root@..]# ls /etc/rabbitmq/rabbitmq.confls: cannot access /etc/rabbitmq/rabbitmq.conf: No such file or directory # 需要手动添加

官方建议配置文件的位置:​​/etc/rabbitmq/rabbitmq.conf​​

我们现在要做的是把默认端口5672改成56720,并且允许远程访问。把web管理默认端口15672改成56271。只需如下配置:

# vim /etc/rabbitmq/rabbitmq.conf# AMQP 0-9-1 and 1.0 port,默认5672,允许远程访问listeners.tcp.default = 0.0.0.0:56720# web管理,默认15672management.tcp.port = 56721management.tcp.ip = 0.0.0.0

执行如下:

image-20210428171409882

保存,并重启RabbitMQ服务。

systemctl restart rabbitmq-serversystemctl status rabbitmq-server

使用​​netstat -lntp​​查看端口监听情况:

image-20210428171623853

7.其他配置

我们可以到官网地址:Docker 进行安装更加方便,下面我们继续使用Docker来安装一遍。

首先,我们得安装docker环境。

yum install -y docker

查看docker的版本:

[root@server docker]# docker versionClient: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Mon Jun 7 15:36:09 2021 OS/Arch: linux/amd64Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Mon Jun 7 15:36:09 2021 OS/Arch: linux/amd64 Experimental: false[root@server docker]#

搜索RabbitMQ镜像:

[root@ ~]# docker search rabbitmqNAME DESCRIPTION STARS OFFICIAL AUTOMATEDrabbitmq RabbitMQ is an open source multi-protocol me… 3703 [OK] bitnami/rabbitmq Bitnami Docker Image for RabbitMQ 62 [OK]tutum/rabbitmq Base docker image to run a RabbitMQ server 22 kbudde/rabbitmq-exporter rabbitmq_exporter for prometheus 15 [OK]frodenas/rabbitmq A Docker Image for RabbitMQ 12 [OK]cyrilix/rabbitmq-mqtt RabbitMQ MQTT Adapter 9 [OK]arm32v7/rabbitmq RabbitMQ is an open source multi-protocol me… 7

拉取RabbitMQ镜像:

docker pull docker.io/rabbitmq

然后查看镜像:

[root@server docker]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/rabbitmq latest ba647756d55a 3 days ago 221 MB[root@server docker]#

然后运行容器:

docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 -v /data:/var/lib/rabbitmq docker.io/rabbitmq

整理写一个重启服务脚本:

[root@server docker_rabbitmq]# cat restart_service.sh #!/bin/shbasedir=`pwd`datadir=$basedir/dataimage=docker.io/rabbitmqname=rabbitmqmkdir -p $datadir# docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 -v /data:/var/lib/rabbitmq rabbitmq:3.8.1-managementdocker stop $namedocker rm $namedocker run -d --name=$name --restart always -p 5672:5672 -p 15672:15672 -v $datadir:/var/lib/rabbitmq $image[root@server docker_rabbitmq]#

最后,使用​​docker ps​​查看运行的容器。

[root@server docker_rabbitmq]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb959544500f4 docker.io/rabbitmq "docker-entrypoint..." 2 seconds ago Up 1 second 4369/tcp, 0.0.0.0:5672->5672/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbitmq

这样,一个RabbitMQ的docker环境就装好了。

在Docker 配置RabbitMQ

1.启用网页版后台管理插件:

rabbitmq-plugins enable rabbitmq_management

执行如下:

[root@server docker_rabbitmq]# docker exec -it rabbitmq bashroot@b959544500f4:/# rabbitmq-plugins enable rabbitmq_managementEnabling plugins on node rabbit@b959544500f4:rabbitmq_managementThe following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_prometheus rabbitmq_web_dispatchApplying plugin configuration to rabbit@b959544500f4...The following plugins have been enabled: rabbitmq_managementstarted 1 plugins.root@b959544500f4:/#

此时可以通过浏览器访问管理页:guest / guest 登录如下:

2.新建一个用户名为admin,密码为admin的管理员,并授予管理员(administrator)权限。

rabbitmqctl add_user admin adminrabbitmqctl set_user_tags admin administrator

执行如下:

root@b959544500f4:/# rabbitmqctl add_user admin adminAdding user "admin" ...Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.root@b959544500f4:/# root@b959544500f4:/# rabbitmqctl set_user_tags admin administratorSetting tags for user "admin" to [administrator] ...root@b959544500f4:/#

3.设置admin可以使用的虚机权限。

rabbitmqctl add_vhost adminrabbitmqctl set_permissions -p admin admin ".*" ".*" ".*"

执行如下:

root@b959544500f4:/# rabbitmqctl add_vhost adminAdding vhost "admin" ...root@b959544500f4:/# rabbitmqctl set_permissions -p admin admin ".*" ".*" ".*"Setting permissions for user "admin" in vhost "admin" ...root@b959544500f4:/#

4.插件管理:

#插件列表: rabbitmq-plugins list #启动插件: rabbitmq-plugins enable XXX (XXX为插件名)#停用插件: rabbitmq-plugins disable XXX

5.配置路径说明

rabbit的配置文件目录:/etc/rabbitmqrabbit的数据文件目录:/var/lib/rabbitmqrabbit的日志文件目录:/var/log/rabbitmq

如果需要持续化,可以挂在这些路径:

# 创建挂在路径mkdir -p ~/rabbitmq/{etc,lib,var/{lib,log}}# 启动容器docker run -d -p 1883:1883 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 61613:61613 -p 61614:61614 -v ~/rabbitmq/etc:/etc/rabbitmq -v ~/rabbitmq/lib:/var/lib/rabbitmq -v ~/rabbitmq/log:/var/log/rabbitmq --name rabbit rabbitmq:management

后台管理的使用

1.用户角色

前面我们使用命令行创建了一个admin用户,也可以在页面上创建,如下:

在这里可以选择不同的角色来创建用户。

角色说明:

1、 超级管理员(administrator)

可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

2、 监控者(monitoring)

可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

3、 策略制定者(policymaker)

可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

4、 普通管理者(management)

仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。

5、 其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

2.创建 vhost 并授权给用户

3.开启 management_agent 插件

下面切换 libai 这个用户登录一下,如下:

提示了这个告警:

Stats in management UI are disabled on this node

解决措施:

#进入rabbitmq容器docker exec -it {rabbitmq容器名称或者id} /bin/bash#进入容器后,cd到以下路径cd /etc/rabbitmq/conf.d/#修改 management_agent.disable_metrics_collector = falseecho management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf#退出容器exit#重启rabbitmq容器docker retart {rabbitmq容器id}

下面我们执行如下:

# 进入配置目录root@b959544500f4:/# cd /etc/rabbitmq/conf.d/root@b959544500f4:/etc/rabbitmq/conf.d# ls10-default-guest-user.conf management_agent.disable_metrics_collector.confroot@b959544500f4:/etc/rabbitmq/conf.d# # 查看当前的配置root@b959544500f4:/etc/rabbitmq/conf.d# cat management_agent.disable_metrics_collector.confmanagement_agent.disable_metrics_collector = true# 修改配置root@b959544500f4:/etc/rabbitmq/conf.d# echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.confroot@b959544500f4:/etc/rabbitmq/conf.d# # 查看修改后的配置root@b959544500f4:/etc/rabbitmq/conf.d# cat management_agent.disable_metrics_collector.conf management_agent.disable_metrics_collector = falseroot@b959544500f4:/etc/rabbitmq/conf.d# root@b959544500f4:/etc/rabbitmq/conf.d# exitexit[root@server docker_rabbitmq]# lsdata restart_service.sh# 重启容器[root@server docker_rabbitmq]# docker restart rabbitmqrabbitmq[root@server docker_rabbitmq]#

配置完毕后,再访问页面如下:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:近义词查询API(近义词查询app 写作)
下一篇:快递单查询API(快递单查询号码询)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~