文章目录
- 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
设置国内 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
设置 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
开启 web 端管理界面
### 开启web端界面管理,监听15672端口
rabbitmq-plugins enable rabbitmq_management
### 创建一个访问账号
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin management
### 重启服务生效,访问验证,端口15672
systemctl restart rabbitmq-server
我好像账号必须给【management】权限,连【administartor】都进不去这个界面,不知道为啥
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
服务端口开放信息
用户管理
单个用户可以跨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 端操作好像,不知道能不能直接在命令行创建