CentOS安裝RabbitMQ
安裝erlang
配置epel源
centos6.x
wget -O /etc/yum.repos.d/epel.repo [http://mirrors.aliyun.com/repo/epel-6.repo](http://mirrors.aliyun.com/repo/epel-6.repo)
centos7.x
wget -O /etc/yum.repos.d/epel.repo [http://mirrors.aliyun.com/repo/epel-7.repo](http://mirrors.aliyun.com/repo/epel-7.repo)
安裝erlang源
erlang-solutions.repo
···
[erlang-solutions]
name=CentOS basearch - Erlang Solutions
baseurl=https://mirrors.tuna.tsinghua.edu.cn/erlang-solutions/centos/$releasever
gpgcheck=0
gpgkey=https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
enabled=1
···
安裝erlang
yum install erlang
國外的源,下載過程會超時,需要重復多次
安裝完成后可以用erl命令查看是否安裝成功
erl -version
安裝rabbitmq
rabbitmq.repo
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
yum install -y rabbitmq-server
啟動rabbitmq
chkconfig rabbitmq-server on
/sbin/service rabbitmq-server start
需要禁止selinux
安裝Web管理界面插件
終端輸入:
rabbitmq-plugins enable rabbitmq_management
安裝成功后會顯示如下內(nèi)容
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
登錄Web管理界面
安裝好插件并開啟服務后,可以瀏覽器輸入localhost:15672,賬號密碼全輸入guest即可登錄积锅。默認沒有開啟遠程權(quán)限
添加遠程用戶
運行如下的命令志笼,增加用戶 rollen温鸽,密碼 root,注意用戶名密碼都不能帶特殊符號
rabbitmqctl add_user rollen root
rabbitmqctl set_user_tags rollen administrator
rabbitmqctl set_permissions -p / rollen ".*" ".*" ".*"
常用命令
服務管理
啟動:rabbitmq-server -detached
隊列關(guān)閉 rabbitmqctl stop_app
隊列啟動 rabbitmqctl start_app
隊列配置初始化: rabbitmqctl reset 用戶密碼信息都會被清理
集群配置相關(guān)命令
rabbitmqctl stop_app
rabbitmqctl reset
在當前集群中加入某節(jié)點:rabbitmqctl join_cluster {rabbit_node_name} (某些低版本可以采用rabbitmqctl cluster {rabbit_node_name})
rabbitmqctl start_app
集群狀態(tài):rabbitmqctl cluster_status
將某節(jié)點剔除出當前集群:rabbitmqctl forget_cluster_node {rabbit_node_name}
插件管理
開啟某個插件: rabbitmq-plugins enable {插件名}
關(guān)閉某個插件: rabbitmq-plugins disable {插件名}
有關(guān)插件名可以在rabbitmq的安裝目錄下的plugins目錄中查看:$RABBITMQ_HOME/plugins
舉例:
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins list
用戶管理
添加 用戶 密碼
rabbitmqctl add_user rollen userpassword
設(shè)置用戶角色
rabbitmqctl set_user_tags rollen administrator
tag可以配置的角色:
(1) 超級管理員(administrator)
可登陸管理控制臺(啟用management plugin的情況下),可查看所有的信息辽俗,并且可以對用戶坐榆,策略(policy)進行操作。
(2) 監(jiān)控者(monitoring)
可登陸管理控制臺(啟用management plugin的情況下)冗茸,同時可以查看rabbitmq節(jié)點的相關(guān)信息(進程數(shù)席镀,內(nèi)存使用情況,磁盤使用情況等)
(3) 策略制定者(policymaker)
可登陸管理控制臺(啟用management plugin的情況下), 同時可以對policy進行管理夏漱。但無法查看節(jié)點的相關(guān)信息(上圖紅框標識的部分)豪诲。與administrator的對比,administrator能看到這些內(nèi)容挂绰。
(4) 普通管理者(management)
僅可登陸管理控制臺(啟用management plugin的情況下)屎篱,無法看到節(jié)點信息,也無法對策略進行管理葵蒂。
(5) 其他
無法登陸管理控制臺交播,通常就是普通的生產(chǎn)者和消費者。
刪除用戶
rabbitmqctl delete_user username
修改密碼
rabbitmqctl change_password username newpassword
權(quán)限管理
權(quán)限設(shè)置:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read}
conf:一個正則表達式match哪些配置資源能夠被該用戶訪問践付。
write:一個正則表達式match哪些配置資源能夠被該用戶讀秦士。
read:一個正則表達式match哪些配置資源能夠被該用戶訪問。
查看(指定vhost)所有用戶的權(quán)限信息:rabbitmqctl list_permissions [-p vhostPath]
查看指定用戶的權(quán)限信息:rabbitmqctl list_user_permissions {username}
清除用戶的權(quán)限信息: rabbitmqctl clear_permissions [-p vhostPath] {username}
舉例:
rabbitmqctl set_permissions -p / username "." "." ".*"
獲取服務器狀態(tài)信息
服務器狀態(tài):rabbitmqctl status
隊列信息: rabbitmqctl list_queues [-p vhostpath] [queueinfoitem …]
queueinfoitem可以為: name, durable, auto_delete, arguments, messages_ready, messages_unacknowled, messages, consumers, memory.
Exchange信息: rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem …]
exchangeinfoitem有:name, type, durable, auto_delete, internal, arguments.
Binding信息:rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem …]
bindinginfoitem有:source_name, source_kind, destination_name, destination_kind, routing_key, arguments.等
connection信息:rabbitmqctl list_connections [connectioninfoitem …]
connectioninfoitem有:recv_oct永高,recv_cnt隧土,send_oct,send_cnt命爬,send_pend等曹傀。
channel信息:rabbitmqctl list_channels [channelinfoitem …]
channelinfoitem有:consumer_count,messages_unacknowledged饲宛,messages_uncommitted皆愉,acks_uncommitted,messages_unconfirmed,prefetch_count亥啦,client_flow_blocked
舉例:
rabbitmqctl list_queues name messages_ready pid slave_pids
更改節(jié)點類型
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
或
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app
vhost管理
添加vhost: rabbitmqctl add vhost {name}
刪除vhost: rabbitmqctl delete vhost {name}
鏡像隊列的設(shè)置
鏡像隊列的配置通過添加policy完成炭剪,policy添加的命令為:
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
-p Vhost: 可選參數(shù),針對指定vhost下的queue進行設(shè)置
Name: policy的名稱
Pattern: queue的匹配模式(正則表達式)
Definition: 鏡像定義翔脱,包括三個部分 ha-mode奴拦,ha-params,ha-sync-mode
ha-mode: 指明鏡像隊列的模式届吁,有效值為 all/exactly/nodes
all表示在集群所有的節(jié)點上進行鏡像
exactly表示在指定個數(shù)的節(jié)點上進行鏡像错妖,節(jié)點的個數(shù)由ha-params指定
nodes表示在指定的節(jié)點上進行鏡像,節(jié)點名稱通過ha-params指定
ha-params: ha-mode模式需要用到的參數(shù)
ha-sync-mode: 鏡像隊列中消息的同步方式疚沐,有效值為automatic暂氯,manually
Priority: 可選參數(shù), policy的優(yōu)先級
例如亮蛔,對隊列名稱以hello開頭的所有隊列進行鏡像痴施,并在集群的兩個節(jié)點上完成鏡像,policy的設(shè)置命令為:
rabbitmqctl set_policy hello-ha “^hello” ‘{“ha-mode”:”exactly”,”ha-params”:2,”ha-sync-mode”:”automatic”}’
有關(guān)鏡像隊列的原理可以參考《rabbitmq——鏡像隊列》
更多信息可以參考:http://www.rabbitmq.com/manpages.html
常用命令管理參考:http://blog.csdn.net/u013256816/article/details/53524814