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,如下:https://github.com/rabbitmq/erlang-rpm/releases

image-20210428162622833
# 下载地址
https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.2/erlang-23.3.2-1.el7.x86_64.rpm

下载 RabbitMQ 的 rpm 包

访问 RabbitMQ 的官网,如下:https://www.rabbitmq.com/install-rpm.html#downloads

image-20210428163132620
# 下载地址
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.14/rabbitmq-server-3.8.14-1.el7.noarch.rpm

下载好rpm包后,接下来我们使用rpm进行安装。

使用 rpm 安装

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

yum install -y socat

接下来安装Erlang和RabbitMQ。

rpm -ivh erlang-23.3.2-1.el7.x86_64.rpm
rpm -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#重启rabbitmq
systemctl 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 <clusternode> [--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 admin
rabbitmqctl set_user_tags admin administrator

执行如下:

image-20210428164202881

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

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

执行如下:

image-20210428165843811

4.插件管理:

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

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

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

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

image-20210428170256779

image-20210428170347443

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

6.修改RabbitMQ默认端口

RabbitMQ默认开启了几个端口:

4369:erlang发现口

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

15672:后台管理界面ui端口,进入管理后台时访问url如:http://localhost:15672/

25672:server间内部通信口

有时候在生产环境下,我们出于安全等原因希望修改掉默认的端口号。

我们安装新版的 RabbitMQ-3.8.x 后,发现找不到它的配置文件,按常理,服务的端口开发都可以在配置文件里配置的。但是事实上RabbitMQ-3.8.1并没有生成配置文件,需要我们手动添加配置文件。

[root@..]# ls /etc/rabbitmq/rabbitmq.conf
ls: 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管理,默认15672
management.tcp.port = 56721
management.tcp.ip   = 0.0.0.0

执行如下:

image-20210428171409882

保存,并重启RabbitMQ服务。

systemctl restart rabbitmq-server
systemctl status rabbitmq-server

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

image-20210428171623853

7.其他配置

我们可以到官网地址:https://www.rabbitmq.com/configure.html,了解RabbitMQ的性能优化方面的配置。

使用Docker安装RabbitMQ

在开发环境中,我们也可以直接使用 Docker 进行安装更加方便,下面我们继续使用Docker来安装一遍。

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

yum install -y docker

查看docker的版本:

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

搜索RabbitMQ镜像:

[root@ ~]# docker search rabbitmq
NAME                                        DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
rabbitmq                                    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 images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.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/sh
basedir=`pwd`
datadir=$basedir/dataimage=docker.io/rabbitmq
name=rabbitmqmkdir -p $datadir# docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 -v /data:/var/lib/rabbitmq rabbitmq:3.8.1-management
docker stop $name
docker rm $name
docker 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 ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                                                                              NAMES
b959544500f4        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 bash
root@b959544500f4:/# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@b959544500f4:
rabbitmq_management
The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_prometheusrabbitmq_web_dispatch
Applying plugin configuration to rabbit@b959544500f4...
The following plugins have been enabled:rabbitmq_managementstarted 1 plugins.
root@b959544500f4:/#

此时可以通过浏览器访问管理页:http://localhost:15672/

可以通过默认的账号 guest / guest 登录如下:

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

rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator

执行如下:

root@b959544500f4:/# rabbitmqctl add_user admin admin
Adding 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 administrator
Setting tags for user "admin" to [administrator] ...
root@b959544500f4:/#

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

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

执行如下:

root@b959544500f4:/# rabbitmqctl add_vhost admin
Adding 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/rabbitmq
rabbit的数据文件目录:/var/lib/rabbitmq
rabbit的日志文件目录:/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 = false
echo 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# ls
10-default-guest-user.conf  management_agent.disable_metrics_collector.conf
root@b959544500f4:/etc/rabbitmq/conf.d#
# 查看当前的配置
root@b959544500f4:/etc/rabbitmq/conf.d# cat management_agent.disable_metrics_collector.conf
management_agent.disable_metrics_collector = true
# 修改配置
root@b959544500f4:/etc/rabbitmq/conf.d# echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf
root@b959544500f4:/etc/rabbitmq/conf.d#
# 查看修改后的配置
root@b959544500f4:/etc/rabbitmq/conf.d# cat management_agent.disable_metrics_collector.conf
management_agent.disable_metrics_collector = false
root@b959544500f4:/etc/rabbitmq/conf.d#
root@b959544500f4:/etc/rabbitmq/conf.d# exit
exit
[root@server docker_rabbitmq]# ls
data  restart_service.sh
# 重启容器
[root@server docker_rabbitmq]# docker restart rabbitmq
rabbitmq
[root@server docker_rabbitmq]#

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

2-Centos7下安装部署RabbitMQ相关推荐

  1. Centos7下安装部署nagios-server

    目录 1. nagios简介 2. 服务器准备 2.1 主机信息+IP地址 2.2 查看主机的系统版本信息 2.3 暂时关掉Selinux和防火墙 3. 安装nagios依赖包和需要的环境 3.1 安 ...

  2. Centos7下安装部署oracle数据库方法及问题汇总

    目标:在centos7上配置oracle数据库服务器,并在win7上面使用pl/sql成功访问该oracle数据库 系统环境: 服务器:centos7 64位 客户端:win7 64位 注意cneto ...

  3. 龙芯3a5000下安装部署rabbitmq

    1.下载erlang源码准备手动编译 http://erlang.org/download/otp_src_24.0.tar.gz 解压缩备用 apt install unixodbc unixodb ...

  4. 为什么root下不能使用passwd命令_基于centos7下安装部署openldap+phpldapadmin

    01初始化准备 系统CentOS7 64位 配置yum源 wget http://mirrors.aliyun.com/repo/Centos-7.repo cp Centos-7.repo /etc ...

  5. Centos7下安装部署Zabbix-server 3.4

    目录 1. Zabbix简介 2. 服务器准备 2.1 主机信息+IP地址 2.2 查看主机的系统版本信息 2.3 暂时关掉防火墙和Selinux 3. 安装Zabbix-server需要的环境(LA ...

  6. linux 下安装部署mq,RocketMQ在linux下安装部署

    本博客以当前RocketMQ最新版介绍:v4.4.0 环境要求 64位JDK 1.8+; Maven 3.2.x; // 源码编译时需要用到 二进制文件安装 > unzip rocketmq-a ...

  7. Linux Centos7.x下安装部署Jira和confluence以及破解方法详述

    https://www.cnblogs.com/easonscx/p/10629173.html Linux Centos7.x下安装部署Jira和confluence以及破解方法详述 简述 JIRA ...

  8. linux命令行安装vnc_Linux Centos7.x下安装部署VNC的实操详述

    VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件,由著名的AT&T的欧洲研究实验室开发的.VNC 是在基于 UNIX和 Lin ...

  9. mysql php7安装配置_centos7无网络下安装部署php7.1.33+mysql5.7.28+apache2.4.6-Go语言中文社区...

    centos7无网络下安装部署php7.1.33+mysql5.7.28+apache2.4.6 一. 1.先ping www.baidu.com,root账户下,如果未联网,创建目录,把提前下载好的 ...

  10. 云计算基础课堂001 Linux系统与CentOS7的安装部署(小白向—怎么在VMware虚拟机安装基于Linux操作系统的CentOS7)

    云计算基础课堂001 Linux系统与CentOS7的安装部署 一.通过VMware部署CENTOS7系统 软件 创建虚拟机 安装CentOS7 进入并登陆系统 二.Linux历史与其发行版故事 三. ...

最新文章

  1. python opencv按照一定间隔保存视频帧
  2. 网络报文的数据格式定义和使用
  3. POJ 1061 青蛙的约会(扩展欧几里得)
  4. Django连接postgresql数据库
  5. 共轭方式怎么判断_怎样判断共轭双烯
  6. 如何帮助beetl发展
  7. Python选择结构注意事项
  8. DataSet的Join操作
  9. 今日头条视频去重复上传方法-网络营销推广教程 如何完美去除视频字幕和LOGO批量下载快手西瓜视频...
  10. 关于批判性思维(Critical Thinking)
  11. tpc1061ti使用说明_昆仑通态连打印机样例说明
  12. PID控制器及其参数整定
  13. 在电脑上如何快速制作一寸照片?在线一键制作工具推荐给你
  14. Jenkins杀掉子进程解决方法(转载)
  15. R语言差异检验:非参数检验
  16. 初探SEO关键词竞争程度的智能算法思路
  17. <<和>>运算符的用法
  18. warning no match for this type name:xxx.xxx.xxx [Xlint:invalidAbsoluteTypeName]
  19. 微擎+微赞(微官网)100套精华模板完美完整版
  20. AD中更改原理图图纸大小

热门文章

  1. c51单片机矩阵键盘1602计算器_单片机做简易计算器源码(矩阵键盘输入+1602显示)...
  2. R语言聚类分析可视化
  3. AUTOCAD——超级填充命令3
  4. java中的Date类,DataFormat类及Calendar类的使用详解
  5. 【编程须知】同样的代码linux与windows的运行结果不同
  6. 园区网络IP地址规划
  7. 重复测量设计计算机结果分析,重复测量设计样本含量估计.pdf
  8. 高精度温度采集系统设计
  9. cameralink图像接收与发送代码
  10. PCB的制作工艺流程