启动: service rabbitmq-server start 或 rabbitmq-service start
关闭: service rabbitmq-server stop 或 rabbitmq-service stop
重启: service rabbitmq-server restart
状态: rabbitmqctl status
[root@mcw14 ~]# rabbitmq-service stop -bash: rabbitmq-service: command not found [root@mcw14 ~]# service rabbitmq-server restart Redirecting to /bin/systemctl restart rabbitmq-server.service [root@mcw14 ~]# rabbitmqctl status Status of node rabbit@mcw14 ... Runtime OS PID: 81996 OS: Linux Uptime (seconds): 28 Is under maintenance?: false RabbitMQ version: 3.8.16 Node name: rabbit@mcw14 Erlang configuration: Erlang/OTP 23 [erts-11.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe] Erlang processes: 367 used, 1048576 limit Scheduler run queue: 1 Cluster heartbeat timeout (net_ticktime): 60 Plugins Enabled plugin file: /etc/rabbitmq/enabled_plugins Enabled plugins: * rabbitmq_management * amqp_client * rabbitmq_web_dispatch * cowboy * cowlib * rabbitmq_management_agent Data directory Node data directory: /var/lib/rabbitmq/mnesia/rabbit@mcw14 Raft data directory: /var/lib/rabbitmq/mnesia/rabbit@mcw14/quorum/rabbit@mcw14 Config files * /etc/rabbitmq/rabbitmq.config Log file(s) * /var/log/rabbitmq/rabbit@mcw14.log * /var/log/rabbitmq/rabbit@mcw14_upgrade.log Alarms (none) Memory Total memory used: 0.1046 gb Calculation strategy: rss Memory high watermark setting: 0.4 of available memory, computed to: 1.4708 gb other_proc: 0.0357 gb (34.15 %) code: 0.0282 gb (27.01 %) other_system: 0.0124 gb (11.84 %) allocated_unused: 0.0105 gb (10.05 %) reserved_unallocated: 0.0069 gb (6.62 %) plugins: 0.0055 gb (5.27 %) other_ets: 0.0033 gb (3.12 %) atom: 0.0015 gb (1.4 %) binary: 0.0002 gb (0.22 %) mgmt_db: 0.0002 gb (0.15 %) mnesia: 0.0001 gb (0.09 %) metrics: 0.0001 gb (0.06 %) msg_index: 0.0 gb (0.03 %) quorum_ets: 0.0 gb (0.01 %) connection_other: 0.0 gb (0.0 %) connection_channels: 0.0 gb (0.0 %) connection_readers: 0.0 gb (0.0 %) connection_writers: 0.0 gb (0.0 %) queue_procs: 0.0 gb (0.0 %) queue_slave_procs: 0.0 gb (0.0 %) quorum_queue_procs: 0.0 gb (0.0 %) File Descriptors Total: 2, limit: 32671 Sockets: 0, limit: 29401 Free Disk Space Low free disk space watermark: 0.05 gb Free disk space: 16.5811 gb Totals Connection count: 0 Queue count: 0 Virtual host count: 1 Listeners Interface: [::], port: 15672, protocol: http, purpose: HTTP API Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0 [root@mcw14 ~]#
或者systemctl管理
用户管理
新增账号: rabbitmqctl add_user username password 删除用户: rabbitmqctl delete_user username 所有用户: rabbitmqctl list_users 修改密码: rabbitmqctl change_password username newpassword 清除密码: rabbitmqctl clear_password {userName}
admin登录
创建用户和查看用户:
rabbitmqctl add_user machangwei 123456
页面上面也可以查看到这个用户
刚刚创建的用户没有授权,不是管理用户,上面两个账号是管理用户,所以可以登录,好像是授权管理用户才能登录管理页面
根据下面的角色管理,给账号赋予administrator角色后,就i你登录到管理页面了
修改machangwei密码:
rabbitmqctl change_password machangwei 12
再看已经登录的页面,提示登录失败
刷新页面就这样了
使用新密码登录
接下来演示清除密码
清除密码之后
页面又退出登录了
admin用户登录查看,machangwei账号是没有密码了的
重新加上密码,直接修改密码就可以
清除了密码,跟你查看用户没有关系,照样是查到的
清除密码必须接账号
角色管理
用户角色分为5中类型:
none:无任何角色。新创建的用户的角色默认为 none。
management:可以访问web管理页面。
policymaker: 包含managerment所有权限,并且可以管理策略(Policy)和参数(Parameter)
monitoring: 包含management所有权限,并且可以看到所有链接、信道及节点相关的信息
administartor:包含monitoring所有权限,并且可以管理用户、虚拟机、权限、策略、参数等。(最高权限)
设置用户角色: rabbitmqctl set_user_tags zhaojigang administrator
设置多个角色: rabbitmqctl set_user_tags hncscwc monitoring policymaker
查看用户角色: rabbitmqctl list_users
设置上面创建的machangwei为管理用户
页面上查看machangwei账号拥有的角色。
继续执行命令,设置machangwei账号有多个角色
页面上查看,可以看到,它这个是设置标签,每次都是重新设置,会将之前的角色清空,换成本次设置的角色,这里不是新增,这点需要注意
我们再加上管理角色,
这下machangwei账号有登录页面的权限了,查看页面,显示是machangwei登录。
命令行查看用户,也可以看到用户有哪些角色
Vhost管理
所有虚拟主机: rabbitmqctl list_vhosts
添加虚拟主机: rabbitmqctl add_vhost vhostname
删除虚拟主机: rabbitmqctl delete_vhost vhostname
查看虚拟主机
页面上面查看下虚拟机主机
添加一个虚拟主机
可以看到刚刚创建的虚拟主机跟账号没有绑定,名字也能看到页面和命令行看到的一样
权限管理
命令格式如下:rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}
查询所有权限:rabbitmqctl list_permissions [-p VHostPath]
查看用户权限:rabbitmqctl list_user_permissions username
清除用户权限:rabbitmqctl clear_permissions [-p VHostPath] username
rabbitmqctl set_permissions -p mcw_vhost1 machangwei /etc/rabbitmq/rabbitmq.config read [-p vhost] {user} {conf} {write} {read}
rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read} # 表示设置用户权限。 {vhost} 表示待授权用户访问的vhost名称,默认为 "/"; {user} 表示待授权反问特定vhost的用户名称; {conf}表示待授权用户的配置权限,是一个匹配资源名称的正则表达式; {write} 表示待授权用户的写权限,是一个匹配资源名称的正则表达式; {read}表示待授权用户的读权限,是一个资源名称的正则表达式。 # rabbitmqctl set_permissions -p / admin "^mip-.*" ".*" ".*" # 例如上面例子,表示授权给用户 "admin" 具有所有资源名称以 "mip-" 开头的 配置权限;所有资源的写权限和读权限。
查看插件
rabbitmq-plugins list
如下,之前开启了管理页面的插件,才能通过页面访问rabbitmq,现在可以看到,前面是有标记的,也就是没有标记的应该就是没有开通,而且标记不同,大写的标记,应该是插件的服务端程序吧。
[root@mcw14 ~]# rabbitmq-plugins list Listing plugins with pattern ".*" ... Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on rabbit@mcw14 |/ [ ] rabbitmq_amqp1_0 3.8.16 [ ] rabbitmq_auth_backend_cache 3.8.16 [ ] rabbitmq_auth_backend_http 3.8.16 [ ] rabbitmq_auth_backend_ldap 3.8.16 [ ] rabbitmq_auth_backend_oauth2 3.8.16 [ ] rabbitmq_auth_mechanism_ssl 3.8.16 [ ] rabbitmq_consistent_hash_exchange 3.8.16 [ ] rabbitmq_event_exchange 3.8.16 [ ] rabbitmq_federation 3.8.16 [ ] rabbitmq_federation_management 3.8.16 [ ] rabbitmq_jms_topic_exchange 3.8.16 [E*] rabbitmq_management 3.8.16 [e*] rabbitmq_management_agent 3.8.16 [ ] rabbitmq_mqtt 3.8.16 [ ] rabbitmq_peer_discovery_aws 3.8.16 [ ] rabbitmq_peer_discovery_common 3.8.16 [ ] rabbitmq_peer_discovery_consul 3.8.16 [ ] rabbitmq_peer_discovery_etcd 3.8.16 [ ] rabbitmq_peer_discovery_k8s 3.8.16 [ ] rabbitmq_prometheus 3.8.16 [ ] rabbitmq_random_exchange 3.8.16 [ ] rabbitmq_recent_history_exchange 3.8.16 [ ] rabbitmq_sharding 3.8.16 [ ] rabbitmq_shovel 3.8.16 [ ] rabbitmq_shovel_management 3.8.16 [ ] rabbitmq_stomp 3.8.16 [ ] rabbitmq_top 3.8.16 [ ] rabbitmq_tracing 3.8.16 [ ] rabbitmq_trust_store 3.8.16 [e*] rabbitmq_web_dispatch 3.8.16 [ ] rabbitmq_web_mqtt 3.8.16 [ ] rabbitmq_web_mqtt_examples 3.8.16 [ ] rabbitmq_web_stomp 3.8.16 [ ] rabbitmq_web_stomp_examples 3.8.16 [root@mcw14 ~]#
监控管理器
这个就是前面开启和关闭rabbitmq的管理页面的命令
rabbitmq-plugins enable rabbitmq_management #启动
rabbitmq-plugins disable rabbitmq_management #关闭
应用管理
慎用,好像是开启和停止节点用的
关闭应用:rabbitmqctl stop_app
启动应用:rabbitmqctl start_app
stop之后,就不能访问页面了,根据命令返回打印信息,好像是停止的这个节点
stop之后,程序进程还是在的,再次start一下,又能正常访问页面了。我这里只有一个node,如果有多个node,停止一个,应该是可以在页面访问看到情况的
队列管理
查看所有队列:rabbitmqctl list_queues
清除所有队列:rabbitmqctl reset #需要先执行rabbitmqctl stop_app
强制清除队列:rabbitmqctl force_reset
删除单个队列:rabbitmqctl delete_queue queue_name
目前没有队列
添加之后,访问拒绝
参考:https://blog.csdn.net/hefeng_aspnet/article/details/125865990
查看权限
有正则匹配的配置
点击设置权限,把以mip-开头的配置,给重新设置了,为有所有权限
再次添加队列
成功添加队列,点击进入队列页面
这个消息下面,我们看到了之前添加的三个键值对。
再次查询消息队列,可以看到我们刚刚创建的队列,但是消息,显示的是0,不知道是为什么
这里有个push消息,我们试一试
消息被推送了
之前添加的参数,不是消息,我们上面点击发布消息,才是真的往这个队列里面添加了消息,可以看到多了条消息,persistent应该是是否持久化的意思吧,而memory是指内存里面有条消息,但是没有持久化存储呢吧,持久化存储为0,总共一条消息
此时再去Linux上查看,可以看到消息队列mcwcountage已经多了一条消息了。
再次发布一条消息
可以看到,两条消息了
再次查看,两条消息了
点击get消息,可以看到我们刚刚推送的消息
两条消息都get一下。如果填的消息数据,大于实际 有的消息数量,那么只显示已存在的消息
点击之后,消息被清空了
再次push两个消息
移除消息,没有安装插件,那么安装一下
显示开启了两个插件在这个节点
可以看到,这两个插件已经开启了
刚刚的操作没有截图,我们将多出来的队列1删除掉
看上面,可以知道此时只有一个队列。我们进入之后,点击移动,这时候会新建mcwqueue2队列,并把mcwcountage下的所有消息移动到新的队列,有点像是备份似的,不清楚,如果下面移动时,填写的是已有的队列名称,是不是只是新增到已有的队列里面,大概率是这样子吧。
点击移动消息,跳转到展示所有消息队列的页面,可以看到新增的队列,并且两条 消息已经从旧的mcwcountage队列移走,移动到新的队列mcwqueue2里面去了。
我们再测试一下删除,这里的删除好像是删除队列
可以看到,进入队列的详情页面,点击删除,的确把该队列删除掉了,如下,已经看不到mcwqueue2队列了
测试重启消息队列服务,对没有持久化消息的影响
我们push两个消息进入消息队列
我们重启之后,可以看到消息丢失。那么重启之后是否需要将消息持久化呢,怎么做持久化呢,持久化后是否上图中persistent就是2了呢
消息如何持久化呢?
下面看下有两条消息
[root@controller ~]# rabbitmqctl list_queues Listing queues ... q-agent-notifier-security_group-update_fanout_0134e1dc992d4f3291571f4f1150f033 0 q-l3-plugin_fanout_67ad4da1e291429b9a561a0b03734552 0 q-plugin 0 conductor_fanout_e2d9de48537d4ec09edb946f2fdb5008 0 q-agent-notifier-l2population-update_fanout_48739ab147b04dc895fe2fd340aa7eae 0 q-agent-notifier-network-delete_fanout_ed0e5abc181c4fe0bb4a802ea928a2e8 0 reply_20ac7e9ae5a349aea2ea680a5aec7d79 0 consoleauth.controller 0 q-agent-notifier-network-delete.controller 0 q-plugin.controller 0 compute_fanout_9f8cf7456e73451e8ce7d65460849817 0 reply_2455b8e5c5dc40da8650f56ae4e45174 0 q-agent-notifier-l2population-update.controller 0 cinder-volume_fanout_8dc268f1cf7d46d8bbfe4a521da8b202 0 cinder-volume.controller@lvm_fanout_b606cbf8a67c4600879b2a64a5320db4 0 q-agent-notifier-network-update 0 q-agent-notifier-port-update.controller 0 conductor_fanout_2b33be46a0d448868f6dc32678a21500 0 q-agent-notifier-port-update_fanout_2b5d1a5c039e4e2caddea9ed34185fe8 0 q-agent-notifier-port-update_fanout_ebc99b8c158c48529e653e9ceb2f7760 0 consoleauth_fanout_4964cf77ca7944f8a8d85fe555703a0c 0 q-server-resource-versions_fanout_753834a40abd430998a0ba30955f1122 0 cinder-volume.compute2@nfs_fanout_2868e267441e4e528f4d300f33282d19 0 conductor.controller 0 q-agent-notifier-l2population-update_fanout_9cae8c6abdc84202bc35ebbee373b422 0 reply_c9910c029ba1432c98ae4c3576ef7df6 0 conductor 0 q-agent-notifier-network-update.controller 0 scheduler_fanout_5eea12b3d0114d58ac0d10fc3799f0d1 0 q-agent-notifier-security_group-update_fanout_1452a407fcd54a5ab47285254b86a8d3 0 q-agent-notifier-security_group-update.compute1 0 reply_52a5090b02f5436c9e7aa541e732ef52 0 cinder-volume 0 q-agent-notifier-network-update_fanout_a4a9e02adfc748fd9a8835996e802bfa 0 cinder-volume_fanout_75d1c7f92a394bd088b7f65e121d6f9a 0 q-server-resource-versions 0 neutron-vo-Trunk-1.1_fanout_138759917974485faad26891827e7447 0 compute.compute2 0 neutron-vo-Trunk-1.1_fanout_676122d00eb34a59be324d0604c9111c 0 scheduler.controller 0 neutron-vo-SubPort-1.0_fanout_e49ddc715b1943389e7e0ddd6dfb5032 0 cinder-volume.compute2@nfs.compute2 0 dhcp_agent.controller 0 neutron-vo-Trunk-1.1.controller 0 q-agent-notifier-port-update.compute1 0 neutron-vo-SubPort-1.0.compute2 0 dhcp_agent_fanout_54b2d45e5d0d490f8d62283a9abcb0b8 0 cinder-volume.compute2@nfs 0 q-reports-plugin.controller 0 neutron-vo-SubPort-1.0_fanout_496e5f4cee6445af8a1edcb5c312abe6 0 q-reports-plugin_fanout_d4e460c745f445c8a22c39cbc15b9f92 0 q-agent-notifier-network-update.compute1 0 cinder-scheduler 0 consoleauth 0 q-reports-plugin_fanout_89d519d055464103a1ec5029a36390a8 0 dhcp_agent 0 q-agent-notifier-security_group-update.compute2 0 q-agent-notifier-l2population-update.compute1 0 q-agent-notifier-network-delete_fanout_d518f4f111774991971c7cdc5302fb0d 0 q-reports-plugin 0 q-agent-notifier-network-delete_fanout_4368adffe18e4742a12e2c4559b07985 0 neutron-vo-SubPort-1.0_fanout_2a542add26d8456396efe5ef3cb4c23f 0 cinder-volume.controller@lvm.controller 0 q-agent-notifier-l2population-update_fanout_5e726a5d09f942e1afb8b02d89cdf9fe 0 q-agent-notifier-network-update.compute2 0 reply_f3414e08cc93430a914663877436085d 0 cinder-volume.controller@lvm 0 scheduler 0 neutron-vo-SubPort-1.0 0 q-l3-plugin.controller 0 neutron-vo-Trunk-1.1.compute1 0 q-agent-notifier-l2population-update.compute2 0 neutron-vo-SubPort-1.0.controller 0 q-agent-notifier-port-update.compute2 0 reply_4961a61a307a428fb0b03043c7654f7d 0 q-agent-notifier-security_group-update.controller 0 q-agent-notifier-security_group-update 0 compute_fanout_b980ee35b47c47688d4fda1a1eb9fe34 0 cinder-scheduler_fanout_3b662fb1565b4a9f8c1224380cf8c8da 0 neutron-vo-Trunk-1.1 0 compute 0 q-agent-notifier-network-delete.compute1 0 cinder-scheduler.controller 0 compute.compute1 0 q-l3-plugin_fanout_31c332c953be4c9194085590c844f934 0 neutron-vo-Trunk-1.1_fanout_a8dca45b75d8436a9ba44f8832d04d58 0 q-agent-notifier-l2population-update 0 q-agent-notifier-network-update_fanout_84a4aa333c7e435482fc64b04d120051 0 q-server-resource-versions.controller 0 neutron-vo-SubPort-1.0.compute1 0 q-agent-notifier-port-update 0 q-agent-notifier-security_group-update_fanout_49d673aeec024d8fa36a49523cf335fd 0 q-agent-notifier-network-delete.compute2 0 q-agent-notifier-port-update_fanout_e3f806abc57744b290540a21aba6626f 0 q-l3-plugin 0 reply_80e9590155d64a2480314f86613ea532 0 neutron-vo-Trunk-1.1.compute2 0 q-agent-notifier-network-delete 0 q-agent-notifier-network-update_fanout_c60c9bcfa3eb40c7b5c025980bece3f5 0 q-plugin_fanout_a07db20790814d52ba25d914e01fe82f 0 [root@controller ~]#
集群管理
查看集群状态: rabbitmqctl cluster_status
摘除节点: rabbitmqctl forget_cluster_node [--offline]
组成集群命令: rabbitmqctl join_cluster <clusternode> [--ram]
修改节点存储形式: rabbitmqctl change_cluster_node_type disc | ram
修改节点名称: rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2 newnode2] [oldnode3 newnode3...]
[root@mcw14 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@mcw14 ... Basics Cluster name: rabbit@mcw14 Disk Nodes rabbit@mcw14 Running Nodes rabbit@mcw14 Versions rabbit@mcw14: RabbitMQ 3.8.16 on Erlang 23 Maintenance status Node: rabbit@mcw14, status: not under maintenance Alarms (none) Network Partitions (none) Listeners Node: rabbit@mcw14, interface: [::], port: 15672, protocol: http, purpose: HTTP API Node: rabbit@mcw14, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication Node: rabbit@mcw14, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0 Feature flags Flag: drop_unroutable_metric, state: disabled Flag: empty_basic_get_metric, state: disabled Flag: implicit_default_bindings, state: enabled Flag: maintenance_mode_status, state: enabled Flag: quorum_queue, state: enabled Flag: user_limits, state: enabled Flag: virtual_host_metadata, state: enabled [root@mcw14 ~]#
看下我们部署的openstack,它的集群状态是什么样的,也就一个节点,跟上面命令访问结果不一样,那么上面可能是没有形成集群,只是一个单节点。
加入集群失败
信息查看
rabbitmqadmin list connections #查看所有连接
rabbitmqadmin show overview #概览 Overview
rabbitmqadmin list nodes #查看所有节点 Node
rabbitmqadmin list channels #查看所有通道 Channel
rabbitmqadmin list consumers #查看所有消费者 Consumer
rabbitmqadmin list exchanges #查看所有路由 Exchange
rabbitmqadmin list bindings #查看所有路由与队列的关系绑定 Binding