溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何運(yùn)行和管理RabbitMQ

發(fā)布時(shí)間:2021-11-25 10:31:08 來源:億速云 閱讀:156 作者:小新 欄目:數(shù)據(jù)庫(kù)

小編給大家分享一下如何運(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è)資訊頻道!

向AI問一下細(xì)節(jié)

免責(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)容。

AI