啟動: 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/[email protected] * /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[email protected] 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[email protected] 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