您好,登錄后才能下訂單哦!
小編給大家分享一下如何運行和管理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] [password]
例如:
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”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。