CentOS 6/7;RabbitMQ:3.3.5;Erlang R16B03-1 (erts-5.10.4)
本篇文章主要讲述如何在CentOS 6/7下安装RabbitMQ的相关基础应用、用户管理及权限管理;
由于RabbitMQ用erlang语言开发,所以安装RabbitMQ必须先安装Erlang:
yum -y install erlang
查看erlang版本:
erl -v
安装RabbitMQ:
yum -y install rabbitmq-server
查看RabbitMQ的版本及安装情况:
rabbitmq-server -v
若发现版本过低,可删除服务,手动从官网下载进行安装:
yum -y remove erlang
yum -y remove rabbitmq-server
erlang官网地址:http://www.erlang.org/download.html
RabbitMQ官网地址:http://www.rabbitmq.com/download.html
版本匹配地址:http://www.rabbitmq.com/which-erlang.html
a.服务器启动
通用启动:
service rabbitmq-server start
service rabbitmq-server stop
service rabbitmq-server restart
ContOS 7也可使用:
systemctl start rabbitmq-server.service
查看启动状态:
service rabbitmq-server status
b.开启管理组件
开启管理组件:
rabbitmq-plugins enable rabbitmq_management
需重启rabbitmq服务;
浏览器打开http://ip:15672/访问,防火墙需关闭;
c.用户管理
liunx用户管理和window类似:
查看用户列表,默认有一个用户guest:
rabbitmqctl list_users
新增用户:
rabbitmqctl add_user xxx(用户名) xxx(密码)
设置用户角色:一个或多个
rabbitmqctl set_user_tags xxx(用户名) xxx(用户角色)
rabbitmqctl set_user_tags xxx(用户名) xxx(用户角色1) xxx(用户角色2) ...
rabbitmq用户角色可分为五类:超级管理员, 监控者, 策略制定者, 普通管理者以及其他
1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。
4) 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
5) 其他的
无法登陆管理控制台,通常就是普通的生产者和消费者
修改用户密码:
rabbitmqctl change_password xxx(用户名) xxx(用户角色)
删除用户:
rabbitmqctl delete_user xxx(用户名)
实例操作结果如下
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl list_users
Listing users ...
guest [administrator]
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl add_user cc 111111
Creating user "cc" ...
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl set_user_tags cc administrator
Setting tags for user "cc" to [administrator] ...
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl change_password cc 222222
Changing password for user "cc" ...
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl delete_user guest
Deleting user "guest" ...
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl list_users
Listing users ...
cc [administrator]
...done.
可使用刚创建的用户登录管理软件控制台:
d.权限管理
在上一章我们知道一个服务器实体(Broker)可以建立多个虚拟主机(vhost),这里面就需要对用户分配vhost的权限;
创建虚拟主机:
rabbitmqctl add_vhost xxx(vhost)
删除虚拟机:
rabbitmqctl delete_vhost xxx(vhost)
虚拟主机查询:
rabbitmqctl list_vhosts
权限授予:
rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"
例如,此命令指示RabbitMQ代理授予名为“tonyg”的用户访问名为“/myvhost”的虚拟主机,并对名称以“tonyg-”开头的所有资源具有配置权限,并对所有资源执行写入和读取权限资源:
set_permissions [-p vhost] user conf write read
vhost:要授予用户访问权限的虚拟主机的名称,默认为“/”。
user:用于授予对指定虚拟主机的访问权限的用户的名称。
conf:正则表达式匹配为其授予用户配置权限的资源名称。
write:正则表达式,匹配为其授予用户写入权限的资源名称。
read:正则表达式,匹配为其授予用户读取权限的资源名称。
设置用户权限。
清除授权:
rabbitmqctl clear_permissions -p / myvhost tonyg
例如,此命令指示RabbitMQ代理拒绝名为“tonyg”的用户访问名为“/ myvhost”的虚拟主机:
查询主机授权:
rabbitmqctl list_permissions -p /myvhost
查询用户授权:
rabbitmqctl list_user_permissions tonyg
实际操作如下:
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl add_vhost /test
Creating vhost "/test" ...
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl list_vhosts
Listing vhosts ...
/
/test
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl set_permissions -p /test cc "^cc-.*" ".*" ".*"
Setting permissions for user "cc" in vhost "/test" ...
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl list_permissions -p /test
Listing permissions in vhost "/test" ...
cc ^cc-.* .* .*
...done.
[root@izbp1comme3jumn4a33wq0z ~]# rabbitmqctl list_user_permissions cc
Listing permissions for user "cc" ...
/test ^cc-.* .* .*
...done.
更多请参考官网:http://www.rabbitmq.com/rabbitmqctl.8.html#set_permissions