php 编程 google 云计算 开源 linux 程序员 Android Python shell Ubuntu Windows Firefox 微软 mysql wordpress java apache centos nginx

RabbitMQ 安裝配置與管理

安裝

安裝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

安裝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 && make install

註意:安裝腳本最後會從一個網站上拉man手冊,有時連不上這個網站,安裝腳本就會停住,這時可以Ctrl-c結束安裝進程,這時其實已經安裝完成只差man手冊。

配置

配置文件

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代碼用High Performance 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

集群配置

(1)手動配置

a)首先在每個節點上啟動RabbitMq

host1#rabbitmq-server -detached

host2#rabbitmq-server -detached

host3#rabbitmq-server -detached

此時每個節點自成集群,每個集群只有本節點

可以通過export RABBITMQ_NAME=xxx 指定節點名稱,若不指定默認為rabbit

完整的節點名為xxx@hostname

b)加入集群

讓host2 和host3上的rabbitmq節點加入到 host1的rabbitmq集群

使用rabbitmqctl命令對rabbitmq進行操作

加入集群前必須停止當前app,加入後在重啟app,過程如下:

host2#rabbitmqctl stop_app

host2#rabbitmqctl cluster rabbit@host1

host2#rabbitmqctl start_app

host3#rabbitmqctl stop_app

host3#rabbitmqctl cluster rabbit@host1

host3#rabbitmqctl start_app

關於節點類型(ram |disk)

ram節點的狀態保存在內存中,disk節點保存在磁盤中

被加入的節點為disk,如本例中rabbit@host1為disk節點,rabbit@host2,rabbit@host3為ram節點

可以通過rabbitmqctl cluster命令改變加入的集群以及節點類型 該命令後可以加多個節點名稱, 指定的節點就會變成disk節點

如可以將本例中所有節點都改成disk節點

host2#rabbitmqctl stop_app

host2#rabbitmqctl reset

host2#rabbitmqctl cluster rabbit@host1 rabbit@host2

host2#rabbitmqctl start_app

host3#rabbitmqctl stop_app

host3#rabbitmqctl reset

host3#rabbitmqctl cluster rabbit@host1 rabbit@host3

host3#rabbitmqctl start_app

(2) 自动配置:

rabbitmq的默认配置脚本为

/etc/rabbitmq/rabbitmq.conf

在其中添加

[

...

{rabbit, [

...

{cluster_nodes, ['rabbit@host1', 'rabbit@host2', 'rabbit@host3']},

...

]},

...

].

分別啟動每個rabbitmq節點

rabbitmq -detached

rabbitmq就自動組成集群了

註意事項:

1)每個節點的erlang cookie須相同, 可以在啟動服務器加 –setcookie參數設置相同的參數,也可以在home目錄下設置相同的.erlang.cookie文件。

2)節點間應該能相互解析,可以通過修改/etc/hosts文件實現

管理

Rabbitmq服務器的主要通過rabbitmqctl和rabbimq-plugins兩個工具來管理,以下是一些常用功能。

服務器啟動與關閉

啟動: rabbitmq-server –detached

關閉:rabbitmqctl stop

若單機有多個實例,則在rabbitmqctlh後加 –n 指定名稱

插件管理

開啟某個插件:rabbitmq-plugins enable xxx

關閉某個插件:rabbitmq-plugins disable xxx

註意:重啟服務器後生效。

virtual_host 管理

新建virtual_host: rabbitmqctl add_vhost  xxx

撤銷virtual_host:rabbitmqctl  delete_vhost xxx

用戶管理

新建用戶:rabbitmqctl add_user xxx pwd

刪除用戶:   rabbitmqctl delete_user xxx

改密碼: 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

  1. 權限管理

    權限設置:set_permissions [-p vhostpath] {user} {conf} {write} {read}

    Vhostpath

    Vhost路徑

    user

    用戶名

    Conf

    一個正則表達式match哪些配置資源能夠被該用戶訪問。

    Write

    一個正則表達式match哪些配置資源能夠被該用戶讀。

    Read

    一個正則表達式match哪些配置資源能夠被該用戶訪問。

    獲取服務器狀態信息

    服務器狀態: 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信息: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

延伸阅读

    评论