RabbitMQ 安裝使用及集羣架設

Ubuntu 系統安裝 RabbitMQ 

寫在前面 連接rabbitMQ官網 php教程。PHP-RabbitMQphp

1.關於RabbitMQ安裝html

 因爲rabbitMq須要erlang語言的支持,在安裝rabbitMq以前須要安裝erlang,執行命令:node

sudo apt-get install erlang-nox

 安裝rabbitMQ數據庫

sudo apt-get update
   sudo apt-get install rabbitmq-server

2.RabbitMQ基本操做服務器

啓動:sudo rabbitmq-server start
   關閉: sudo rabbitmq-server stop
   重啓: sudo rabbitmq-server restart
   查看狀態:sudo rabbitmqctl status

3.RabbitMQ功能
1.路由
2.隊列
3.持久性
4.廣播
5.任務確認
6.負載均衡
參見官網手冊 寫的很是具體詳細。cookie

4.RabbitMQ集羣
 1.主機名解析
 RabbitMQ節點使用域名相互尋址,所以全部集羣成員的主機名必須可以從全部集羣節點解析,能夠修改hosts文件或者使用DNS解析。 若是要使用節點名稱的完整主機名(RabbitMQ默認爲短名稱),而且可使用DNS解析完整的主機名,則可能須要調查設置環境變量 RABBITMQ_USE_LONGNAME = trueapp

 2.集羣節點
 RAM節點和disk節點
 disk持久化 ram非持久隊列down掉後數據消失 RAM節點是一種特殊狀況,可用於改善高排隊,交換或綁定流失的性能集羣。
變動當前節點類型須要關閉當前節點 rabbitmqctl stop_app
使用 rabbitmqctl change_cluster_node_type disc負載均衡

 3.集羣節點驗證
 RabbitMQ節點和CLI工具(例如rabbitmqctl)使用cookie來肯定它們是否被容許相互通訊,要使兩個節點可以通訊,它們必須具備相同的共享密鑰,稱爲Erlang Cookie.
Cookie只是一個字符串,最多能夠有255個字符。它一般存儲在本地文件中。該文件必須只能由全部者訪問(400權限)。每一個集羣節點必須具備相同的 cookie,文件位置/var/lib/rabbitmq/.erlang.cookie, 把rabbit二、rabbit3設置成和rabbit2同樣的便可,權限是400工具

 4.正常方式啓動全部節點性能

rabbitmq-server -detached
	rabbitmq-server -detached
	rabbitmq-server -detached

5.集羣中MQ的操做
 1.查看集羣狀態

[root@rabbit1 ~]# rabbitmqctl cluster_status
				Cluster status of node rabbit@rabbit1 ...
				[{nodes,[{disc,[rabbit@rabbit1]}]},
				 {running_nodes,[rabbit@rabbit1]},
				 {cluster_name,<<"rabbit@rabbit1">>},
				 {partitions,[]},
				 {alarms,[{rabbit@rabbit1,[]}]}]

  2.加入一個集羣
  1)中止要加入的mq應用程序 rabbitmqctl stop_app
  2)加入目標mq集羣 rabbitmqctl join_cluster rabbit@rabbit1
  3)啓動要加入的mq應用程序 rabbitmqctl start_app
注意:加入集羣會隱式重置節點,從而刪除此節點上之前存在的全部資源和數據
  加入後查看狀態

[root@rabbit1 ~]# rabbitmqctl cluster_status
				Cluster status of node rabbit@rabbit1 ...
				[{nodes,[{disc,[rabbit@rabbit1,rabbit@rabbit2]}]},
				 {running_nodes,[rabbit@rabbit2,rabbit@rabbit1]},
				 {cluster_name,<<"rabbit@rabbit1">>},
				 {partitions,[]},
				 {alarms,[{rabbit@rabbit2,[]},{rabbit@rabbit1,[]}]}]

經過遵循上述步驟,咱們能夠在集羣正在運行的同時隨時向集羣添加新節點
已加入羣集的節點可隨時中止。他們也能夠崩潰。在這兩種狀況下,羣集的其他部分都會繼續運行,而且節點在再次啓動時會自動「跟上」(同步)其餘羣集節點。


*當整個集羣關閉時,最後一個關閉的節點必須是第一個要聯機的節點。
若是要脫機的最後一個節點沒法恢復,可使用forget_cluster_node命令將其從羣集中刪除
若是全部集羣節點同時中止而且不受控制(例如斷電),則可能會留下全部節點都認爲其餘節點在其後中止的狀況。在這種狀況下,您能夠在一個節點上使用force_boot命令使其再次可引導 *


 3.集羣移除節點
  當節點再也不是節點的一部分時,須要從集羣中明確地刪除節點。咱們首先從集羣中刪除rabbit@rabbit3,並將其返回到獨立操做
 1)咱們中止RabbitMQ應用程序 rabbitmqctl stop_app
 2)重置節點 rabbitmqctl reset
 3)從新啓動RabbitMQ應用程序 rabbitmqctl start_app

 4.遠程刪除節點(處理節點無響應時)
 1)關閉要刪除的節點 rabbitmqctl stop_app
 2)遠程其餘服務器使用 rabbitmqctl forget_cluster_node rabbit@rabbit1
請注意,rabbit1仍然認爲它與rabbit2集羣 ,並試圖啓動它將致使錯誤。咱們須要從新設置才能從新啓動。
 3) 被刪除的節點 rabbitmqctl reset #必需要重置
 4)被刪除節點重啓 單獨使用 rabbitmqctl start_app

6.主機名更改

 RabbitMQ節點使用主機名相互通訊。所以,全部節點名稱必須可以解析全部集羣對等體的名稱。對於像rabbitmqctl這樣的工具也是如此。

 除此以外,默認狀況下,RabbitMQ使用系統的當前主機名命名數據庫目錄。若是主機名更改,則會建立一個新的空數據庫。爲避免數據丟失,設置固定且可解析的主機名相當重要。每當主機名更改時,必須從新啓動RabbitMQ節點。

 使用rabbit @ localhost 做爲代理節點名稱能夠實現相似的效果。此解決方案的影響是羣集不起做用,由於所選主機名不會從遠程主機解析爲可路由地址。從遠程主機調用時,rabbitmqctl命令一樣會失敗。沒有這種弱點的更復雜的解決方案是使用DNS,例如,若是在EC2上運行,則使用 Amazon Route 53。若是要使用nodename的完整主機名(RabbitMQ默認爲短名稱),而且可使用DNS解析該完整主機名,則可能須要調查設置環境變量 RABBITMQ_USE_LONGNAME = true。


集羣手冊連接RabbitMQ集羣

相關文章
相關標籤/搜索