rabbitmq在redhat5.5下搭建部署

RabbitMQ 安裝配置與管理

安裝  

安裝目錄爲/usr/local/

1. 安裝erlang虛擬機

Rabbitmq基於erlang語言開發,所有需要安裝erlang虛擬機

下載otp_src_R15B01.tar.gz

tar zxvf otp_src_R15B01.tar.gz

cd otp_src_R15B01

./configure && make install

2 xmlto (rabbitmq 編譯安裝時需要使用) 
wget  https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.23.tar.gz  
tar -zxf xmlto-0.0.23.tar.gz 
cd xmlto-0.0.23 
./configure  
make  
make install  //如發現含有man報錯 是需要去網站下載man文檔 此步失敗可略過

 

3. 安裝Python

如果Python版本低,編譯simplejson時會報錯。請安裝Python-2.7.3.tar.bz2

             tar -jxvf Python-2.7.3.tar.bz2

               cd Python-2.7.3

              ./configure &&make && make install

 

4. 安裝simplejson

如果 機器上python 版本爲2.6以下版本 會提示You don't appear to have simplejson.py installed 安裝

 tar -zxvf simplejson-2.6.1.tar.gz

   cd  simplejson-2.6.1

     python setup.py install      // 最好用root權限安裝

 

 

5. 安裝rabbitmq server

下載rabbitmq-server-generic-unix-2.8.6.tar.gz

tar xvzf rabbitmq-server-generic-unix-2.8.6.tar.gz
cd rabbitmq_server-2.8.6/sbin/            //這是編譯過的包 可以直接使用
開啓監控  下面3條命令爲可選 需要使用可開啓 查看 喜歡研究的可以查看下 不用的話就用關閉命令關閉插件

 

 

 

./rabbitmq-plugins enable  rabbitmq_management  開啓監控插件

./rabbitmq-plugins list                          查看插件列表

./rabbitmq-plugins disable                       關閉插件

 

rabbitmq-server -detached    //啓動rabbitmq  至此rabbitmq算是起來了

 

 

配置

一般情況下,RabbitMQ的默認配置就足夠了。如果希望特殊設置的話,有兩個途徑:

一個是環境變量的配置文件 rabbitmq-env.conf 
一個是配置信息的配置文件 rabbitmq.config
注意,這兩個文件默認是沒有的,如果需要必須自己創建。
rabbitmq-env.conf這個文件的位置是確定和不能改變的,位於:/etc/rabbitmq目錄下(這個目錄需要自己創建)。
文件的內容包括了RabbitMQ的一些環境變量,配置下面
RABBITMQ_MNESIA_BASE=/rabbitmq/data        //需要使用的MNESIA數據庫的路徑
RABBITMQ_LOG_BASE=/rabbitmq/log        //log的路徑
RABBITMQ_PLUGINS_DIR=/rabbitmq/plugins    //插件的路徑

 

具體的列表見:http://www.rabbitmq.com/configure.html#define-environment-variables

 

rabbitmq.config
這是一個標準的erlang配置文件。它必須符合erlang配置文件的標準。
它既有默認的目錄,也可以在rabbitmq-env.conf文件中配置。

 

集羣配置

 

1)配置erlang

Rabbitmq的集羣是依賴於erlang的集羣來工作的,所以必須先構建起erlang的集羣環境。Erlang的集羣中各節 點是通過一個magic cookie來實現的,這個cookie存放在$HOME/.Erlang.cookie 中,文件是400的權限。所以必須保證各節點cookie保持一致,否則節點之間就無法通信。

將其中一臺節點上的.erlang.cookie值複製下來保存到其他節點上。或者使用scp的方法也可,但是要注意文件的權限和屬主屬組。

$ cat .erlang.cookie  

IYZNFNJIUWABJUELIUFE  

將值保存到其他節點上:

先更改文件權限,給予其可寫權限:

$chmod 700 .erlang.cookie  

$ echo -n " IYZNFNJIUWABJUELIUFE" >$HOME/.erlang.cookie  

$chmod 400 .erlang.cookie  

 

2 配置各節點下的hosts文件,確保節點之間主機名稱可以相互解析。

192.168.1.**   nodename

192.168.1.**   nodename

192.168.1.**   nodename

192.168.1.**   nodename

 

 

1)手動配置rabbitmq集羣

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節點加入到 host1rabbitmq集羣

使用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@host1disk節點,rabbit@host2rabbit@host3ram節點

可以通過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集羣:

rabbitmq的默認配置腳本爲

/etc/rabbitmq/rabbitmq.conf

在其中添加

[

...

{rabbit, [

...

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

...

]},

...

].

分別啓動每個rabbitmq節點

Rabbitry -detached

rabbitmq就自動組成集羣了

注意事項:

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

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

監控

RabbitMQ提供了一個web的監控頁面系統,這個系統是以Plugin的方式進行調用的。

首先,確定rabbitmq-env.conf中配置好plugins目錄的位置

啓動管理插件命令 :

  rabbitmq-plugins enable rabbitmq_management

重新啓動RabbitMQ,輸入http://server-name:55672/mgmt/ 就能夠進入到監控頁面。默認的用戶名和密碼是: guest 和 guest

 

管理

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

1. 服務器啓動與關閉

啓動: rabbitmq-server –detached

關閉:rabbitmqctl stop

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

2. 插件管理

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

關閉某個插件:rabbitmq-plugins disablexxx

注意:重啓服務器後生效。

3. virtual_host管理

新建virtual_host: rabbitmqctl add_vhost  xxx

撤銷virtual_host:rabbitmqctl  delete_vhost xxx

4. 用戶管理

新建用戶: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

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可以爲:namedurableauto_deleteargumentsmessages_ready

messages_unacknowledgedmessagesconsumersmemory

 

Exchange信息:rabbitmqctllist_exchanges [-p vhostpath] [exchangeinfoitem ...]

Exchangeinfoitem有:nametypedurableauto_deleteinternalarguments.

 

Binding信息:rabbitmqctllist_bindings [-p vhostpath] [bindinginfoitem ...]

Bindinginfoitem有:source_namesource_kinddestination_namedestination_kindrouting_keyarguments

 

Connection信息:rabbitmqctl list_connections [connectioninfoitem ...]

Connectioninfoitem有:recv_octrecv_cntsend_octsend_cntsend_pend等。

 

Channel信息:rabbitmqctl  list_channels[channelinfoitem ...]

Channelinfoitemconsumer_countmessages_unacknowledgedmessages_uncommitted

acks_uncommittedmessages_unconfirmedprefetch_countclient_flow_blocked

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