RabbitMQ 运维备忘录(一)

news2024/11/24 5:09:31

文章目录

  • 1. 基础信息参考
    • 一些官方的链接
    • 单节点安装 RabbitMQ
    • 开启 web 端管理界面
  • 2. 一些基本操作
    • 应用管理
    • 服务端口开放信息
    • 用户管理
    • 虚拟主机 vhost 管理
    • web 界面管理
    • 队列信息查询
    • 交换器信息查询
    • 绑定关系的信息查询
    • TCP/IP 连接信息查询
    • 信道信息查询
    • 消费者信息查询
    • 服务状态查询
    • 节点健康检查
    • 节点环境变量
    • 节点服务器状态报告
    • 队列创建

1. 基础信息参考

一些官方的链接

RabbitMQ 官网地址:Messaging that just works — RabbitMQ

下载安装官方参考地址:Downloading and Installing RabbitMQ — RabbitMQ

官网使用教程(开发):RabbitMQ Tutorials — RabbitMQ

与 Erlang 版本对应关系参考地址:RabbitMQ Erlang Version Requirements — RabbitMQ

版本支持的时间参考地址:Release Series — RabbitMQ

单节点安装 RabbitMQ

首选要确认你需要安装的版本:rabbitmq 与 erlang 版本对应关系

我选择的是3.10.0,要求 erlang 版本在23.2以上

演示环境:CentOS 7.9 有外网权限 RPM 包方式安装

一些高版本好像没有 el7 的包了,我就直接用的最后一个版本支持 el7 的版本来演示,不然就只有源码编译安装了,那玩意感觉很费劲,麻烦

准备基础环境

### 基础设置
systemctl disable firewalld NetworkManager --now
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
hostnamectl set-hostname node1

### 重启
reboot

image-20230518132110148

设置国内 yum 源

mkdir /etc/yum.repos.d.bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d.bak

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

yum clean all && yum makecache

image-20230518132514312

设置 rabbitmq 相关源

curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash

### 安装服务
yum install erlang-23.3.4.11-1.el7.x86_64 rabbitmq-server-3.10.0-1.el7.noarch wget vim -y

启动服务

##启动服务并加入开机自启
systemctl enable rabbitmq-server --now

##状态查看
systemctl status rabbitmq-server

##端口监听查看5672
ss -lnt 

image-20230518133100671

开启 web 端管理界面

### 开启web端界面管理,监听15672端口
rabbitmq-plugins enable rabbitmq_management

### 创建一个访问账号
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin management

### 重启服务生效,访问验证,端口15672
systemctl restart rabbitmq-server

image-20230518133414888

image-20230518133446256

我好像账号必须给【management】权限,连【administartor】都进不去这个界面,不知道为啥

image-20230518133622548

2. 一些基本操作

应用管理

## 停止运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 服务应用
rabbitmqctl stop

## 停止 RabbitMQ 服务应用,但是 Erlang 虚拟机还是处于运行状态
rabbitmqctl stop_app

## 启动运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 服务应用
rabbitmqctl start_app

## 将 RabbitMQ 节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库中删除所有的配置数据,如已配置的用户、vhost 等,以及删除所有的持久化消息。执行rabbitmqctl reset 命令前必须停止 RabbitMQ 应用(比如先执行 rabbitmqctl stop_app)
rabbitmqctl reset

## 强制重置还原到最初状态:不论当前管理数据库的状态和集群配置是什么,都会无条件地重置节点
rabbitmqctl force_reset

服务端口开放信息

image-20230517142542813

用户管理

单个用户可以跨vhost进行授权,服务安装后默认用户是 guest

用户的角色分类:

  • none:无任何角色。新创建的用户的角色默认为 none
  • management:可以访问 Web 管理页面
  • policymaker:包含 management 的所有权限,并且可以管理策略(Policy)和参数(Parameter)
  • monitoring:包含 management 的所有权限,并且可以看到所有连接、信道及节点相关的信息
  • administartor:包含 monitoring 的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等,administator 代表了最高的权限
### 创建一个用户,配置密码
rabbitmqctl add_user admin admin

### 改变用户的密码
rabbitmqctl change_password admin admin@123

### 清除密码
rabbitmqctl clear_password admin

### 验证账号的密码,通过则 Success
rabbitmqctl authenticate_user admin admin@123

### 删除用户
rabbitmqctl delete_user admin

### 查看用户列表
rabbitmqctl list_users

### 设置用户的角色
rabbitmqctl set_user_tags admin administartor

虚拟主机 vhost 管理

用户一般会与 vhost 绑定

### 默认的vhost /

### 创建新的vhost
rabbitmqctl add_vhost vhost_demo1

### 查看当前的vhost
rabbitmqctl list_vhosts name
rabbitmqctl list_vhosts tracing

### 删除一个vhost
rabbitmqctl delete_vhost vhost_demo1

### 授权命令:root用户可以访问虚拟主机vhost1所有资源,对于资源是可配置、可读写的权限,正则支持
rabbitmqctl set_permissions -p vhost_demo1 root ".*" ".*" ".*"

### 清除权限
rabbitmqctl clear_permissions -p vhost_demo1 root

### 查看权限
#对vhost
rabbitmqctl list_permissions -p /
#对用户
rabbitmqctl list_user_permissions guest

web 界面管理

### 开启web端界面管理,监听15672端口
rabbitmq-plugins enable rabbitmq_management

### 查看当前插件使用情况
rabbitmq-plugins list

### 重启服务生效,访问验证
systemctl restart rabbitmq-server

### 关闭界面
rabbitmq-plugins disable rabbitmq_management

队列信息查询

rabbitmqctl list_queues [-p vhost] [队列信息选项]

关于队列信息选项

  • name:队列名称
  • durable:队列是否持久化
  • auto_delete:队列是否自动删除
  • arguments:队列的参数
  • policy:应用到队列上的策略名称
  • pid:队列关联的 Erlang 进程的 ID
  • owner_pid:处理排他队列连接的 Erlang 进程 ID。如果此队列是非排他的,此值将为空
  • exclusive:队列是否是排他的
  • exclusive_consumer_pid:订阅到此排他队列的消费者相关的信道关联的 Erlang进程 ID。如果此队列是非排他的,此值将为空
  • exclusive_consumer_tag:订阅到此排他队列的消费者的 consumerTag。如果此队列是非排他的,此值将为空
  • messages_ready:准备发送给客户端的消息个数。
  • messages_unacknowledged:发送给客户端但尚未应答的消息个数
  • messages:准备发送给客户端和未应答消息的总和
  • messages_ready_ram:驻留在内存中 messages_ready 的消息个数
  • messages_unacknowledged_ram:驻留在内存中 messages_unacknowledged的消息个数
  • messages_ram:驻留在内存中的消息总数
  • messages_persistent:队列中持久化消息的个数。对于非持久化队列来说总是 0
  • messages_bytes:队列中所有消息的大小总和。这里不包括消息属性或者任何其他第 5 章 RabbitMQ 管理 开销
  • messages_bytes_ready:准备发送给客户端的消息的大小总和
  • messages_bytes_unacknowledged:发送给客户端但尚未应答的消息的大小总和
  • messages_bytes_ram:驻留在内存中的 messages_bytes
  • messages_bytes_persistent:队列中持久化的 messages_bytes
  • disk_reads:从队列启动开始,已从磁盘中读取该队列的消息总次数
  • disk_writes:从队列启动开始,已向磁盘队列写消息的总次数
  • consumer:消费者数目
  • consumer_utilisation:队列中的消息能够立刻投递给消费者的比率,介于 0 和 1之间。这个受网络拥塞或者 Basic.Qos 的影响而小于 1
  • memory:与队列相关的 Erlang 进程所消耗的内存字节数,包括栈、堆及内部结构
  • slave_pids:如果队列是镜像的,列出所有 slave 镜像的 pid
  • synchronised_slave_pids:如果队列是镜像的,列出所有已经同步的 slave 镜像的 pid
  • state:队列状态。正常情况下是 running;如果队列正常同步数据可能会有“{syncing, MsgCount}”的状态;如果队列所在的节点掉线了,则队列显示状态为down(此时大多数的 queueinfoitems 也将不可用)

交换器信息查询

rabbitmqctl list_exchanges [-p vhost] [交换器信息选项]

关于交换器信息选项

  • name:交换器的名称
  • type:交换器的类型
  • durable:设置是否持久化。durable 设置为 true 表示持久化,反之是非持久化。持久化可以将交换器信息存盘,而在服务器重启的时候不会丢失相关信息。
  • auto_delete:设置是否自动删除
  • internal:是否是内置的
  • arguments:其他一些结构化参数,比如 alternate-exchange
  • policy:应用到交换器上的策略名称

绑定关系的信息查询

rabbitmqctl list_bindings [-p vhost] [绑定信息选项]

关于绑定关系信息可选

  • source_name:绑定中消息来源的名称

  • source_kind:绑定中消息来源的类别

  • destination_name:绑定中消息目的地的名称

  • destination_kind:绑定中消息目的地的种类

  • routing_key:绑定的路由键

  • arguments:绑定的参数

TCP/IP 连接信息查询

rabbitmqctl list_connections [-p vhost] [连接信息选项]

可用的连接信息选项

  • pid:与连接相关的 Erlang 进程 ID
  • name:连接的名称
  • port:服务器端口
  • host:返回反向 DNS 获取的服务器主机名称,或者 IP 地址,或者未启用
  • peer_port:服务器对端端口。当一个客户端与服务器连接时,这个客户端的端口就是 peer_port
  • peer_host:返回反向 DNS 获取的对端主机名称,或者 IP 地址,或者未启用
  • ssl:是否启用 SSL
  • ssl_protocol:SSL 协议,如 tlsv1
  • ssl_key_exchange:SSL 密钥交换算法,如 rsa
  • ssl_cipher:SSL 加密算法,如 aes_256_cbc
  • ssl_hash:SSL 哈希算法,如 sha
  • peer_cert_subject:对端的 SSL 安全证书的主题,基于 RFC4514 的形式
  • peer_cert_issuer:对端 SSL 安全证书的发行者,基于 RFC4514 的形式
  • peer_cert_validity:对端 SSL 安全证书的有效期
  • state:连接状态,包括 starting、tuning、opening、running、flow、blocking、blocked、closing 和 closed 这几种
  • channels:该连接中的信道个数
  • protocol:使用的 AMQP 协议的版本,当前是{0,9,1}或者{0,8,0}。注意,如果客户端请求的是 AMQP 0-9 的连接,RabbitMQ 也会将其视为 0-9-1
  • auth_mechanism:使用的 SASL 认证机制,如 PLAIN、AMQPLAIN、EXTERNAL、RABBIT-CR-DEMO 等
  • user:与连接相关的用户名
  • vhost:与连接相关的 vhost 的名称
  • timeout:连接超时/协商的心跳间隔,单位为秒
  • frame_max:最大传输帧的大小,单位为 B
  • channel_max:此连接上信道的最大数量。如果值 0,则表示无上限,但客户端一般会将 0 转变为 65535
  • client_properties:在建立连接期间由客户端发送的信息属性。
  • recv_oct:收到的字节数。
  • recv_cnt:收到的数据包个数。

信道信息查询

rabbitmqctl list_channels [可选信道连接信息选项]

可选的信道连接选项

  • pid:与连接相关的 Erlang 进程 ID

  • connection:信道所属连接的 Erlang 进程 ID

  • name:信道的名称

  • number:信道的序号

  • user:与信道相关的用户名称

  • vhost:与信道相关的 vhost

  • transactional:信道是否处于事务模式

  • confirm:信道是否处于 publisher confirm 模式

  • consumer_count:信道中的消费者的个数

  • messages_unacknowledged:已投递但是还未被 ack 的消息个数

  • messages_uncommitted:已接收但是还未提交事务的消息个数

  • acks_uncommitted:已 ack 收到但是还未提交事务的消息个数

  • messages_unconfirmed:已发送但是还未确认的消息个数。如果信道不处于publisher confirm 模式下,则此值为 0

  • perfetch_count:新消费者的 Qos 个数限制。0 表示无上限

  • global_prefetch_count:整个信道的 Qos 个数限制。0 表示无上限

消费者信息查询

rabbitmqctl list_consumers [-p vhost]

  • 显示:已订阅队列的名称、相关信道的进程标识等信息

服务状态查询

rabbitmqctl status

节点健康检查

rabbitmqctl node_health_check

节点环境变量

rabbitmqctl environment

节点服务器状态报告

rabbitmqctl report > file.txt

队列创建

可以直接在 web 端操作好像,不知道能不能直接在命令行创建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英伟达开放BEVFusion部署源代码,边缘端实时运行(高达25FPS)

以下文章来源于微信公众号:集智书童 链接:https://mp.weixin.qq.com/s/6BWohe2FxRN8E-yyp_32fg 本文仅用于学术分享,如有侵权,请联系后台作删文处理 引言: 众所周知,雷达与相机的融合方案由于稀疏卷积的原…

STM32F4_PWM DAC

目录 1. 为什么需要使用PWM DAC 2. PWM DAC简介 3. 硬件设计 4. 软件设计 4.1 main.c 4.2 PWMDAC.c 4.3 PWMDAC.h 1. 为什么需要使用PWM DAC 虽然STM32F4自带DAC模块,但是在有些时候,可能出现两个DAC不够用的情况(STM32F4只有两个DAC&…

看过来!一文揭秘为什么选TikTokTikTok数据怎么分析

为什么要选择TikTok开小店?以及商家在运营TikTok之前要了解掌握哪些TikTok相关数据?要分析哪些数据、怎么看TikTok数据才能让商家更快更及时地改进优化自己的TikTok营销策略?往下看。 一、选择TikTok开小店的原因: 1. TK作为一个…

《终身成长》笔记五——随心所欲地夸奖孩子们以成长为目标的努力过程

目录 经典摘录 校园暴力:对“复仇”的思考 施暴者:欺凌与评判息息相关 父母或老师:关于成功和失败的信息 是否意味着,当我们的孩子取得了不起的成就的时候,我们不能热情地表扬他们呢? 关于失败的信息 经…

在moveit2中实现四连杆及曲柄滑块

对于一些特殊的(比如说机械构件闭环的、存在被动关节的)运动模型,该如何用urdf模型描述该模型,且在MoveIt2中进行仿真?下面提供一个思路,仅供参考。 四连杆机构 结构介绍 该机构的组成如下图所示。 粉红…

加密解密软件VMProtect入门使用教程(九)许可制度之许可系统功能

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic(本机)、Virtual Pascal和XCode编译器。 同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起…

前端综合项目-个人博客网页设计

个人博客前端部分设计 文章目录 前端综合项目-个人博客网页设计1. 预计效果2. 公共样式设计2.1 背景设计2.2 导航栏设计2.3 博客列表页和博客详情页的共同内容2.3.1 页面划分css设计2.3.2 左侧card内容2.3.3 右侧article内容 3. 博客列表页4. 博客详情页5. 博客登录页5.1 页面划…

赛效:怎么在99医院库平台查询科室医生坐诊的时间?

如果想要了解更多生活中常用的工具的使用方法,可进入赛效官方网站查看应用软件或者应用问答栏目查看详情。 很多人在去医院就诊时,往往会提前查询下就诊医院当天坐诊的医生有哪些,如果可以直接在网上进行预约的话,通过网络预约要…

word中图标格式的美化

目录 1. 修改行号2. 调整图表格式2.1 方法1 (不推荐)2.2 方法2 3. 参考链接 1. 修改行号 2. 调整图表格式 要达到下图的效果 2.1 方法1 (不推荐) 利用“一系列格式操作”设置表格格式。(该方法不具有可复制性&#…

网络性能测试工具

什么是网络测试 网络测试是用于定量或定性测量 IT 基础架构性能的过程。这是一个原始级别的故障识别,不需要大量的历史数据。对于更高级的监视,使用网络监视工具。 什么是网络测试工具 网络测试工具是一组工具,可帮助测量网络各个方面的性…

ASO优化之如何选择手游的行业词和竞品词

应用商店的搜索关键词转化率占应用总下载转化率的65%。这表明,用户会知道自己想要什么,更倾向于去应用商店寻找特定的应用程序。因此如果能让他们相信我们的应用正是他们所寻找的,那么关键词优化就很重要了。 那么我们该如何选择手游的行业词…

中文文献如何查找下载最高效

提到查找下载中文文献我们就会想到知网、万方、维普等中国知名数据库,很多高校都订购了这些数据库资源,但各个高校订购的资源不仅内容上不一样,而且都不是数据库的全部资源,超出订购范围的文献资源是下载不到的,如下图…

探索iOS之CoreAudio核心音频框架

iOS的CoreAudio分为三层:应用服务层、驱动层、硬件层。其中,应用服务层包括:AudioQueue Service、AudioPlayer Service、AudioSession Service、AudioFile Service、AudioUnit等。 一、CoreAudio整体架构 CoreAudio的整体架构自顶向下是Ser…

求最小生成树(Prim算法与Kruskal算法与并查集)

目录 1、案例要求2、算法设计与实现2.1 Prim算法2.1.1 构造无向图2.1.2 编写Prim算法函数2.1.3 实现代码2.1.4 运行结果截图 2.2 Kruskal算法2.2.1 构造无向图2.2.2 编写并查集UnionFind类2.2.3 编写Kruskal算法2.2.4 实现代码2.2.5 运行结果截图 3、总结 1、案例要求 利用贪心…

CameraLink 高清医学影像分析模块

FMC-XM202是一款基于FMC接口标准的1路CameraLink Full模式(或者2路CameraLink Base模式)采集、1路HDMI(DVI)视频输出的子卡模块,该模块具有2个CameraLink端口(SDR,26PIN)&#xff0c…

简单线性线性回归

文章目录 brief直线回归的一般形式参数计算y观测值和回归值的关系基本前提假定假设检验直线回归的变异来源自由度问题:假设检验 多元线性回归 brief 当研究两个有因果关系的变量时,我们希望建立一个方程式表示两者的关系,这样有一个变量得知…

公司里的5种人,建议马上开除

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 多年前,马云在某期湖畔大学开学演讲时,说了一句经典名言:“小公司的成败在于你聘请什么样的人,大公司的成败在于你开除什么样的人。”K哥觉得&#xff0…

Ocean Optics USB2000光谱仪无法在Win10/8系统运行

1、问题描述 USB2000型光谱仪,由于生产年代过于久远,虽然能被Win10系统识别,但是驱动程序安装完成后依然报错, 提示:该设备无法启动。(代码 10) 请求USB BOS 描述符失败。 运行SpectraSuite软件…

操作系统原理 —— 什么是信号量,信号量如何实现进程互斥、进程同步?(十五)

在之前的章节中,我们提到了进程互斥,以及进程互斥实现的几种方式,那么今天我们再来讲解一种,基于 信号量 来实现进程之间的同步、互斥的方式。 用户进程可以通过使用操作性提供的一对原语来对信号量进行操作,从而很方…

C语言基础知识:C语言中的指针

目录 1、为什么需要指针? 2、指针是什么? 3、指针与变量的关系 4、指针的分类 5、指针的用法 6、指针的运算 7、野指针 8、指针使用时的注意事项 同C语言中其他变量一样,把指针也可以看成是一种变量。不过,这种变量专门存储地址值。…