rabbitMQ的安裝配置

安裝

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章