您好,登錄后才能下訂單哦!
小編給大家分享一下如何運(yùn)行和管理RabbitMQ,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
RabbitMQ服務(wù)管理
啟動(dòng)RabbitMQ應(yīng)用程序和Erlang節(jié)點(diǎn)
# /etc/init.d/rabbitmq-server start
停止RabbitMQ應(yīng)用程序和Erlang節(jié)點(diǎn)
# /etc/init.d/rabbitmq-server stop
或者
# rabbitmqctl stop
只啟動(dòng)/停止RabbitMQ應(yīng)用
[root@localhost ~]# rabbitmqctl stop_app [root@localhost ~]# rabbitmqctl start_app
啟用管理插件
#rabbitmq-plugins enable rabbitmq_management
RabbitMQ configuration file
RabbitMQ的配置文件有兩個(gè)
一個(gè)是環(huán)境變量的配置文件 rabbitmq-env.conf ;
一個(gè)是配置信息的配置文件 rabbitmq.config;
注意,這兩個(gè)文件默認(rèn)是沒有的,如果需要必須自己創(chuàng)建。RabbitMQ如果是用RPM包安裝的,那么它的配置文件目錄為/etc/rabbitmq,我們需要在此目錄下手動(dòng)創(chuàng)建rabbitmq.config文件和rabbitmq-env.conf文件,并更改這兩個(gè)文件的屬主屬組為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
這個(gè)文件的位置是確定和不能改變的,位于:/etc/rabbitmq目錄下(這個(gè)目錄需要自己創(chuàng)建)。
文件的內(nèi)容包括了RabbitMQ的一些環(huán)境變量,常用的有:
RABBITMQ_NODENAME=FZTEC-240088 節(jié)點(diǎn)名稱 RABBITMQ_NODE_IP_ADDRESS=127.0.0.1 監(jiān)聽I(yíng)P RABBITMQ_NODE_PORT=5672 監(jiān)聽端口 RABBITMQ_LOG_BASE=/data/rabbitmq/log 日志目錄 RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins 插件目錄 RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia 后端存儲(chǔ)目錄
rabbitmq.config
這是一個(gè)標(biāo)準(zhǔn)的erlang配置文件。它必須符合erlang配置文件的標(biāo)準(zhǔn)。
它既有默認(rèn)的目錄,也可以在rabbitmq-env.conf文件中配置,該文件結(jié)構(gòu)為哈希數(shù)組格式
例如:
[ {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數(shù)據(jù)庫(kù)配置選項(xiàng),Mnesia是RabbitMQ用來存儲(chǔ)交換器和隊(duì)列元數(shù)據(jù)的
rabbit指的是RabbitMQ特定的配置選項(xiàng),每個(gè)選項(xiàng)的表達(dá)式都為{[option_name],[option_value]}。
Mnesia配置選項(xiàng):
dump_log_write_threshold:默認(rèn)值為100,將僅限追加的日志內(nèi)容刷出/轉(zhuǎn)儲(chǔ)至真實(shí)的數(shù)據(jù)庫(kù)文件的頻度,它明確指定了在轉(zhuǎn)儲(chǔ)操作發(fā)生前,必須有多少個(gè)條目存儲(chǔ)在日志中。設(shè)置更高的數(shù)值將減少I/O負(fù)載并增加持久化消息的性能。
Rabbit配置選項(xiàng):
tcp_listeners: 默認(rèn)值[{"0.0.0.0",5672},],定義了RabbitMQ應(yīng)該監(jiān)聽的非SSL加密通信的IP地址和端口 {“ip地址”,“端口號(hào)”}數(shù)組
ssl_listeners: 默認(rèn)值為空,定義了RabbitMQ應(yīng)該監(jiān)聽的SSL加密通信的IP地址和端口 {“ip地址”,“端口號(hào)”}數(shù)組
ssl_options: 默認(rèn)值為空,指定SSL相關(guān)的選項(xiàng),有cacertfile(CA證書文件),keyfile(密鑰文件)和fail_if_no_peer_cert(客戶端有效證書) {“鍵”,“值”}數(shù)組
vm_memory_high_watermark: 默認(rèn)值0.4 控制RabbitMQ允許消耗的的內(nèi)存百分比,0.4=40% 十進(jìn)制數(shù)值
msg_store_file_size_limit: 默認(rèn)值16777216 RabbitMQ垃圾收集存儲(chǔ)內(nèi)容之前,消息存儲(chǔ)數(shù)據(jù)庫(kù)的最大大小 整型 單位字節(jié)B
queue_index_max_journal_entries: 默認(rèn)值262144 在轉(zhuǎn)儲(chǔ)到消息存儲(chǔ)數(shù)據(jù)庫(kù)并提交之前,消息存儲(chǔ)數(shù)據(jù)庫(kù)的最大大小 整型
其他參數(shù):
disk_free_limit 磁盤低水位線,若磁盤容量低于指定值則停止接收數(shù)據(jù),默認(rèn)值為{mem_relative, 1.0},即與內(nèi)存相關(guān)聯(lián)1:1,也可定制為多少byte.
hipe_compile 將部分rabbimq代碼用High Performance Erlang compiler編譯,可提升性能,該參數(shù)是實(shí)驗(yàn)性,若出現(xiàn)erlang vm segfaults,應(yīng)關(guān)掉。
force_fine_statistics, 該參數(shù)屬于rabbimq_management,若為true則進(jìn)行精細(xì)化的統(tǒng)計(jì),但會(huì)影響性能。
RabbitMQ兩個(gè)配置文件的更多詳細(xì)信息請(qǐng)參考官網(wǎng)
http://www.rabbitmq.com/configure.html#configuration-file
RabbitMQ用戶管理
添加用戶:
rabbitmqctl add_user [username] [password]
例如:
rabbitmqctl add_user pms pms
將用戶的tags設(shè)置為administrator,注意,這一步非常重要,否則無法使用創(chuàng)建的用戶通過web瀏覽器登錄并管理MQ服務(wù)
rabbitmqctl set_user_tags pms administrator
刪除用戶:
rabbitmqctl delete_user [username]
注意:當(dāng)刪除用戶時(shí),任何引用該用戶的訪問控制條目都會(huì)從Rabbit權(quán)限數(shù)據(jù)庫(kù)中刪除中自動(dòng)刪除。同事rabbit不會(huì)警告你與用戶相關(guān)的訪問控制條目也會(huì)一并被刪除。
修改用戶密碼:
rabbitmqctl change_password Username Newpassword
列出用戶
rabbitmqctl list_users
更改密碼
rabbitmqctl change_password [username] [newpasswd]
RabbitMQ權(quán)限管理
RabbitMQ權(quán)限分類:
讀:有關(guān)消費(fèi)消息的任何操作,包括清除整個(gè)隊(duì)列(需要綁定操作成功)
寫:發(fā)布消息(需要綁定操作成功)
配置:隊(duì)列和交換器的創(chuàng)建和刪除
權(quán)限設(shè)置:
rabbitmqctl set_permissions -p [vhost_name] [user_name] [config] [write] [read]
例1:
rabbitmqctl set_permissions -p / guest ".*" ".*" ".*"
-p / :表示對(duì)/ 虛擬主機(jī)設(shè)置權(quán)限,如何省略vhost,默認(rèn)為“/”虛擬主機(jī)
guest:對(duì)guest用戶設(shè)置權(quán)限
后面的三個(gè)".*"分別對(duì)應(yīng)配置、寫、讀的權(quán)限
“.*”為正則表達(dá)式,指代所有權(quán)限,".*"意味著匹配所有交換器和隊(duì)列。這樣就允許guest用戶對(duì)/ 虛擬主機(jī)的所有隊(duì)列和交換器執(zhí)行配置、寫、讀命令。
例2:
# rabbitmqctl set_permissions -p / aaa "" "check-.*" ".*" Setting permissions for user "aaa" in vhost "/" ...
對(duì)“/”虛擬主機(jī)賦予 aaa用戶不能配置,限制只能對(duì)以“check-”開頭的隊(duì)列和交換器寫操作,對(duì)所有隊(duì)列和交換器可讀的操作的權(quán)限。
查看權(quán)限
rabbitmqctl list_permissions -p [vhost_name]
rabbitmqctl list_permissions -p / Listing permissions in vhost "/" ... guest .* .* .* spms .* .* .* aaa check-.* .*
刪除權(quán)限
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 用戶角色
按照個(gè)人理解,用戶角色可分為五類,超級(jí)管理員, 監(jiān)控者, 策略制定者, 普通管理者以及其他。
(1) 超級(jí)管理員(administrator)
可登陸管理控制臺(tái)(啟用management plugin的情況下),可查看所有的信息,并且可以對(duì)用戶,策略(policy)進(jìn)行操作。
(2) 監(jiān)控者(monitoring)
可登陸管理控制臺(tái)(啟用management plugin的情況下),同時(shí)可以查看rabbitmq節(jié)點(diǎn)的相關(guān)信息(進(jìn)程數(shù),內(nèi)存使用情況,磁盤使用情況等)
(3) 策略制定者(policymaker)
可登陸管理控制臺(tái)(啟用management plugin的情況下), 同時(shí)可以對(duì)policy進(jìn)行管理。但無法查看節(jié)點(diǎn)的相關(guān)信息(上圖紅框標(biāo)識(shí)的部分)。與administrator的對(duì)比,administrator能看到這些內(nèi)容。
(4) 普通管理者(management)
僅可登陸管理控制臺(tái)(啟用management plugin的情況下),無法看到節(jié)點(diǎn)信息,也無法對(duì)策略進(jìn)行管理。
(5) 其他
無法登陸管理控制臺(tái),通常就是普通的生產(chǎn)者和消費(fèi)者。
以上是“如何運(yùn)行和管理RabbitMQ”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。