设为首页 收藏本站
查看: 450|回复: 0

[经验分享] 运行和管理RabbitMQ

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-24 08:23:14 | 显示全部楼层 |阅读模式
RabbitMQ服务管理

启动RabbitMQ应用程序和Erlang节点
1
# /etc/init.d/rabbitmq-server start




停止RabbitMQ应用程序和Erlang节点
1
# /etc/init.d/rabbitmq-server stop



或者
1
# rabbitmqctl stop




只启动/停止RabbitMQ应用
1
2
3
[iyunv@localhost ~]# rabbitmqctl stop_app

[iyunv@localhost ~]# rabbitmqctl start_app




RabbitMQ configuration file

RabbitMQ的配置文件有两个
  • 一个是环境变量的配置文件 rabbitmq-env.conf ;
  • 一个是配置信息的配置文件 rabbitmq.config;


注意,这两个文件默认是没有的,如果需要必须自己创建RabbitMQ如果是用RPM包安装的,那么它的配置文件目录为/etc/rabbitmq,我们需要在此目录下手动创建rabbitmq.config文件和rabbitmq-env.conf文件,并更改这两个文件的属主属组为rabbitmq
1
2
3
4
5
[iyunv@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的一些环境变量,常用的有:

1
2
3
4
5
6
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文件中配置,该文件结构为哈希数组格式
例如:
1
2
3
4
5
6
7
8
9
[
{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配置选项:
1
2
tcp_listeners:            默认值[{"0.0.0.0",5672},],定义了RabbitMQ应该监听的非SSL加密通信的IP地址和端口
{“ip地址”,“端口号”}数组




1
2
ssl_listeners:             默认值为空,定义了RabbitMQ应该监听的SSL加密通信的IP地址和端口
{“ip地址”,“端口号”}数组



1
2
ssl_options:    默认值为空,指定SSL相关的选项,有cacertfile(CA证书文件),keyfile(密钥文件)和fail_if_no_peer_cert(客户端有效证书)
{“键”,“值”}数组



1
2
vm_memory_high_watermark: 默认值0.4  控制RabbitMQ允许消耗的的内存百分比,0.4=40%
十进制数值



1
2
msg_store_file_size_limit: 默认值16777216  RabbitMQ垃圾收集存储内容之前,消息存储数据库的最大大小
整型  单位字节B



1
2
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用户管理

添加用户:
1
rabbitmqctl add_user [username]  [password]




删除用户:
1
rabbitmqctl  delete_user [username]



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

列出用户
1
rabbitmqctl  list_users




更改密码
1
rabbitmqctl change_password  [username] [newpasswd]







RabbitMQ权限管理

RabbitMQ权限分类
  • 读:有关消费消息的任何操作,包括清除整个队列(需要绑定操作成功)
  • 写:发布消息(需要绑定操作成功)
  • 配置:队列和交换器的创建和删除


权限设置:

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



例1:
1
rabbitmqctl set_permissions -p / guest ".*" ".*" ".*"



-p / :表示对/ 虚拟主机设置权限,如何省略vhost,默认为“/”虚拟主机
guest:对guest用户设置权限
后面的三个".*"分别对应配置、写、读的权限
“.*”为正则表达式,指代所有权限,".*"意味着匹配所有交换器和队列。这样就允许guest用户对/ 虚拟主机的所有队列和交换器执行配置、写、读命令。

例2:
1
2
# rabbitmqctl set_permissions -p / aaa "" "check-.*" ".*"
Setting permissions for user "aaa" in vhost "/" ...



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

查看权限
1
rabbitmqctl list_permissions -p [vhost_name]



1
2
3
4
5
rabbitmqctl list_permissions -p /
Listing permissions in vhost "/" ...
guest   .*      .*      .*
spms    .*      .*      .*
aaa             check-.*        .*




删除权限
1
rabbitmqctl clear_permissions -p [vhost_name] [user_name]



例如:
1
2
3
4
5
6
rabbitmqctl clear_permissions -p / aaa
Clearing permissions for user "aaa" in vhost "/" ...
[iyunv@localhost ~]# rabbitmqctl list_permissions -p /
Listing permissions in vhost "/" ...
guest   .*      .*      .*
spms    .*      .*      .*










运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-304680-1-1.html 上篇帖子: Linux操作系统怎么解决“/boot”分区满了 下篇帖子: Codis部署与pipline写入出错的解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表