安裝
1. 安裝erlang虛擬機
Rabbitmq基於erlang語言開發,所有需要安裝erlang虛擬機
#wget http://www.erlang.org/download/otp_src_R15B01.tar.gz
#tar zxvf otp_src_R15B01.tar.gz&& cd otp_src_R15B01
#./configure &&make install
2. 安裝rabbitmq server
#wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.2/rabbitmq-server-generic-unix-2.8.2.tar.gz
#tar rabbitmq-server-generic-unix-2.8.2.tar.gz&& cd /rabbitmq-server-generic-unix-2.8.2
修改Makeifle ,添加以下參數,指定安裝目錄
SBIN_DIR = /usr/sbin
MAN_DIR = /usr/share/man
TARGET= /usr/lib/rabbitmq
最後
#make && makeinstall
注意:安裝腳本最後會從一個網站上拉man手冊,有時連不上這個網站,安裝腳本就會停住,這時可以Ctrl-c結束安裝進程,這時其實已經安裝完成只差man手冊。
配置
1. 配置文件
Rabbitmq的配置文件有三個,位於/etc/rabbitmq/,
這三個文件分別是:
(1)enabled_plugins, 設置允許的插件列表,該配置文檔的格式爲erlang的列表格式如
[rabbitmq_management,rabbitmq_visualiser].
(2)rabbitmq.conf,設置rabbitmq的運行參數。該配置文件中的每個參數爲一個erlang的 tuple,結構爲{Key,Value}, Key爲atom類型, Value爲一個term。其中幾個關鍵參數爲:
tcp_listerners 設置rabbimq的監聽端口,默認爲[5672]。
disk_free_limit 磁盤低水位線,若磁盤容量低於指定值則停止接收數據,默認值爲
{mem_relative, 1.0},即與內存相關聯1:1,也可定製爲多少byte.
vm_memory_high_watermark,設置內存低水位線,若低於該水位線,則開啓流控機制,默認值是0.4,即內存總量的40%。
hipe_compile 將部分rabbimq代碼用HighPerformance Erlang compiler編譯,可提升性能,該參數是實驗性,若出現erlang vm segfaults,應關掉。
force_fine_statistics, 該參數屬於rabbimq_management,若爲true則進行精細化的統計,但會影響性能。
(3)rabbitmq-env.conf rabbitmq的環境參數配置
RABBITMQ_NODE_PORT 端口設置,默認爲5672
RABBITMQ_NODENAME 節點名稱,默認爲rabbit
MNESIA_BASE 後端存儲目錄 ,默認爲/var/lib/rabbitmq/mnesia
LOG_BASE 日誌目錄,默認爲/var/log/rabbitmq/
其它參數詳情請見:http://www.rabbitmq.com/configure.html
2. 集羣配置
(1)手動配置
a)首先在每個節點上啓動RabbitMq
host1#rabbitmq-server-detached
host2#rabbitmq-server-detached
host3#rabbitmq-server-detached
可以通過exportRABBITMQ_NAME=xxx 指定節點名稱,若不指定默認爲rabbit
完整的節點名爲xxx@hostname
b)加入集羣
讓host2 和host3上的rabbitmq節點加入到 host1的rabbitmq集羣
使用rabbitmqctl命令對rabbitmq進行操作
加入集羣前必須停止當前app,加入後在重啓app,過程如下:
host2#rabbitmqctlstop_app
host2#rabbitmqctlcluster rabbit@host1
host2#rabbitmqctlstart_app
host3#rabbitmqctlstop_app
host3#rabbitmqctlcluster rabbit@host1
host3#rabbitmqctlstart_app
關於節點類型(ram |disk)
ram節點的狀態保存在內存中,disk節點保存在磁盤中
被加入的節點爲disk,如本例中rabbit@host1爲disk節點,rabbit@host2,rabbit@host3爲ram節點
可以通過rabbitmqctlcluster命令改變加入的集羣以及節點類型該命令後可以加多個節點名稱,指定的節點就會變成disk節點
如可以將本例中所有節點都改成disk節點
host2#rabbitmqctlstop_app
host2#rabbitmqctlreset
host2#rabbitmqctlcluster rabbit@host1 rabbit@host2
host2#rabbitmqctlstart_app
host3#rabbitmqctlstop_app
host3#rabbitmqctlreset
host3#rabbitmqctlcluster rabbit@host1 rabbit@host3
host3#rabbitmqctlstart_app
(2) 自動配置:
rabbitmq的默認配置腳本爲
/etc/rabbitmq/rabbitmq.conf
在其中添加
[
...
{rabbit, [
...
{cluster_nodes,['rabbit@host1', 'rabbit@host2', 'rabbit@host3']},
...
]},
...
].
分別啓動每個rabbitmq節點
rabbitmq-detached
rabbitmq就自動組成集羣了
注意事項:
1)每個節點的erlangcookie須相同,可以在啓動服務器加–setcookie參數設置相同的參數,也可以在home目錄下設置相同的.erlang.cookie文件。
2)節點間應該能相互解析,可以通過修改/etc/hosts文件實現
管理
Rabbitmq服務器的主要通過rabbitmqctl和rabbimq-plugins兩個工具來管理,以下是一些常用功能。
1. 服務器啓動與關閉
啓動: rabbitmq-server –detached
關閉:rabbitmqctl stop
若單機有多個實例,則在rabbitmqctlh後加–n 指定名稱
2. 插件管理
開啓某個插件:rabbitmq-plugins enable xxx
關閉某個插件:rabbitmq-plugins disable xxx
注意:重啓服務器後生效。
3. virtual_host 管理
新建virtual_host: rabbitmqctl add_vhost xxx
撤銷virtual_host:rabbitmqctl delete_vhost xxx
4. 用戶管理
新建用戶:rabbitmqctl add_user xxx pwd
刪除用戶: rabbitmqctl delete_userxxx
改密碼: rabbimqctl change_password {username} {newpassword}
設置用戶角色:rabbitmqctl set_user_tags {username} {tag ...}
Tag可以爲administrator, monitoring, management
Tag |
Capabilities |
(None) |
No access to the management plugin |
management |
Anything the user could do via AMQP plus: List virtual hosts to which they can log in via AMQP View all queues, exchanges and bindings in "their" virtual hosts View and close their own channels and connections View "global" statistics covering all their virtual hosts, including activity by other users within them |
monitoring |
Everything "management" can plus: List all virtual hosts, including ones they could not log in to via AMQP View other users's connections and channels View node-level data such as memory use and clustering View truly global statistics for all virtual hosts |
administrator |
Everything "monitoring" can plus: Create and delete virtual hosts View, create and delete users View, create and delete permissions Close other users's connections |
5. 權限管理
權限設置:set_permissions [-p vhostpath] {user} {conf} {write} {read}
Vhostpath
Vhost路徑
user
用戶名
Conf
一個正則表達式match哪些配置資源能夠被該用戶訪問。
Write
一個正則表達式match哪些配置資源能夠被該用戶讀。
Read
一個正則表達式match哪些配置資源能夠被該用戶訪問。
6. 獲取服務器狀態信息
服務器狀態:rabbitmqctl status
隊列信息:rabbitmqctl list_queues [-p vhostpath] [queueinfoitem ...]
Queueinfoitem可以爲:name, durable,auto_delete,arguments,messages_ready,
messages_unacknowledged,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信息:rabbitmqctllist_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
更多的信息請參考:http://www.rabbitmq.com/man/rabbitmqctl.1.man.html