如何运行和管理RabbitMQ

62次阅读
没有评论

共计 4476 个字符,预计需要花费 12 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下如何运行和管理 RabbitMQ,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

RabbitMQ 服务管理

启动 RabbitMQ 应用程序和 Erlang 节点

# /etc/init.d/rabbitmq-server start

停止 RabbitMQ 应用程序和 Erlang 节点

# /etc/init.d/rabbitmq-server stop

或者

# rabbitmqctl stop

只启动 / 停止 RabbitMQ 应用

[root@localhost ~]# rabbitmqctl stop_app
[root@localhost ~]# rabbitmqctl start_app

启用管理插件

#rabbitmq-plugins enable rabbitmq_management

RabbitMQ configuration file

RabbitMQ 的配置文件有两个

一个是环境变量的配置文件 rabbitmq-env.conf;

一个是配置信息的配置文件 rabbitmq.config;

注意,这两个文件默认是没有的,如果需要必须自己创建。RabbitMQ 如果是用 RPM 包安装的,那么它的配置文件目录为 /etc/rabbitmq,我们需要在此目录下手动创建 rabbitmq.config 文件和 rabbitmq-env.conf 文件,并更改这两个文件的属主属组为 rabbitmq

[root@localhost rabbitmq]# ll
total 12
-rw-r--r-- 1 root root 23 Nov 10 18:37 enabled_plugins
-rw-r--r-- 1 rabbitmq rabbitmq 36 Nov 10 18:35 rabbitmq.config
-rw-r--r-- 1 rabbitmq rabbitmq 80 Nov 10 18:35 rabbitmq-env.conf

rabbitmq-env.conf

这个文件的位置是确定和不能改变的,位于:/etc/rabbitmq 目录下(这个目录需要自己创建)。
文件的内容包括了 RabbitMQ 的一些环境变量,常用的有:

RABBITMQ_NODENAME=FZTEC-240088  节点名称
RABBITMQ_NODE_IP_ADDRESS=127.0.0.1  监听 IP
RABBITMQ_NODE_PORT=5672  监听端口
RABBITMQ_LOG_BASE=/data/rabbitmq/log  日志目录
RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins  插件目录
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia  后端存储目录

rabbitmq.config

这是一个标准的 erlang 配置文件。它必须符合 erlang 配置文件的标准。
它既有默认的目录,也可以在 rabbitmq-env.conf 文件中配置,该文件结构为哈希数组格式

例如:

[{mnesia, [{dump_log_write_threshold, 1000}]},
{rabbit, [{vm_memory_high_watermark, 0.4}]}
{rabbitmq_management,
[{listener, [{port, 55673},
{ip,  0.0.0.0}
].

mnesia 指的是 Mnesia 数据库配置选项,Mnesia 是 RabbitMQ 用来存储交换器和队列元数据的

rabbit 指的是 RabbitMQ 特定的配置选项,每个选项的表达式都为{[option_name],[option_value]}。

Mnesia 配置选项:

dump_log_write_threshold:默认值为 100,将仅限追加的日志内容刷出 / 转储至真实的数据库文件的频度,它明确指定了在转储操作发生前,必须有多少个条目存储在日志中。设置更高的数值将减少 I / O 负载并增加持久化消息的性能。

Rabbit 配置选项:

tcp_listeners:  默认值[{0.0.0.0 ,5672},],定义了 RabbitMQ 应该监听的非 SSL 加密通信的 IP 地址和端口
{“ip 地址”,“端口号”}数组
ssl_listeners:  默认值为空,定义了 RabbitMQ 应该监听的 SSL 加密通信的 IP 地址和端口
{“ip 地址”,“端口号”}数组
ssl_options:  默认值为空,指定 SSL 相关的选项,有 cacertfile(CA 证书文件),keyfile(密钥文件)和 fail_if_no_peer_cert(客户端有效证书)
{“键”,“值”}数组
vm_memory_high_watermark:  默认值 0.4  控制 RabbitMQ 允许消耗的的内存百分比,0.4=40%
十进制数值
msg_store_file_size_limit:  默认值 16777216 RabbitMQ 垃圾收集存储内容之前,消息存储数据库的最大大小
整型   单位字节 B 
queue_index_max_journal_entries:  默认值 262144  在转储到消息存储数据库并提交之前,消息存储数据库的最大大小
整型

其他参数:

disk_free_limit 磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative, 1.0}, 即与内存相关联 1:1,也可定制为多少 byte.
hipe_compile 将部分 rabbimq 代码用 High Performance Erlang compiler 编译,可提升性能,该参数是实验性,若出现 erlang vm segfaults,应关掉。
force_fine_statistics,该参数属于 rabbimq_management,若为 true 则进行精细化的统计,但会影响性能。

RabbitMQ 两个配置文件的更多详细信息请参考官网

http://www.rabbitmq.com/configure.html#configuration-file

RabbitMQ 用户管理

添加用户:

rabbitmqctl add_user [username] 

  此处含有隐藏内容,需要正确输入密码后可见!

例如:

rabbitmqctl add_user pms pms

将用户的 tags 设置为 administrator,注意,这一步非常重要,否则无法使用创建的用户通过 web 浏览器登录并管理 MQ 服务

rabbitmqctl set_user_tags pms administrator

删除用户:

rabbitmqctl delete_user [username]

注意:当删除用户时,任何引用该用户的访问控制条目都会从 Rabbit 权限数据库中删除中自动删除。同事 rabbit 不会警告你与用户相关的访问控制条目也会一并被删除。

修改用户密码:

rabbitmqctl change_password Username Newpassword

列出用户

rabbitmqctl list_users

更改密码

rabbitmqctl change_password [username] [newpasswd]

RabbitMQ 权限管理

RabbitMQ 权限分类:

读:有关消费消息的任何操作,包括清除整个队列(需要绑定操作成功)

写:发布消息(需要绑定操作成功)

配置:队列和交换器的创建和删除

权限设置:

rabbitmqctl set_permissions -p [vhost_name] [user_name] [config] [write] [read]

例 1:

rabbitmqctl set_permissions -p / guest  .*   .*   .*

-p /:表示对 / 虚拟主机设置权限,如何省略 vhost,默认为“/”虚拟主机

guest:对 guest 用户设置权限

后面的三个 .* 分别对应配置、写、读的权限

“.*”为正则表达式,指代所有权限,.* 意味着匹配所有交换器和队列。这样就允许 guest 用户对 / 虚拟主机的所有队列和交换器执行配置、写、读命令。

例 2:

# rabbitmqctl set_permissions -p / aaa    check-.*   .* 
Setting permissions for user  aaa  in vhost  /  ...

对“/”虚拟主机赋予 aaa 用户不能配置,限制只能对以“check-”开头的队列和交换器写操作,对所有队列和交换器可读的操作的权限。

查看权限

rabbitmqctl list_permissions -p [vhost_name]
rabbitmqctl list_permissions -p /
Listing permissions in vhost  /  ...
guest .* .* .*
spms .* .* .*
aaa check-.* .*

删除权限

rabbitmqctl clear_permissions -p [vhost_name] [user_name]

例如:

rabbitmqctl clear_permissions -p / aaa 
Clearing permissions for user  aaa  in vhost  /  ...
[root@localhost ~]# rabbitmqctl list_permissions -p /
Listing permissions in vhost  /  ...
guest .* .* .*
spms .* .* .*

MQ 用户角色
按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。
(1)  超级管理员 (administrator)
可登陆管理控制台 (启用 management plugin 的情况下),可查看所有的信息,并且可以对用户,策略(policy) 进行操作。
(2)  监控者 (monitoring)
可登陆管理控制台 (启用 management plugin 的情况下),同时可以查看 rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3)  策略制定者(policymaker)
可登陆管理控制台 (启用 management plugin 的情况下), 同时可以对 policy 进行管理。但无法查看节点的相关信息(上图红框标识的部分)。与 administrator 的对比,administrator 能看到这些内容。
(4)  普通管理者(management)
仅可登陆管理控制台 (启用 management plugin 的情况下),无法看到节点信息,也无法对策略进行管理。
(5) 其他
无法登陆管理控制台,通常就是普通的生产者和消费者。

以上是“如何运行和管理 RabbitMQ”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计4476字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)