RabbitMQ 3.6.10 cluster (Centos 6.8)

首先先把 RabbitMQ 安裝好,包括 er-lang ,這裏就很少說明了,只針對cluster 建設。
我假設是經過 rpm 的方式安裝,那麼路徑上就比較好解釋說明。node

針對rabbitmq 所使用的port,分別爲:4369,5672, 15672, 25672 ,所以,最後防火牆別忘了設置容許訪問,在設置以前請先關閉防火牆。web

假設有3臺服務器,名稱分別爲:rbmq0, rbmq1, rbmq2, 其中,rbmq0 是主服務器。服務器

而後到3臺的服務器中,添加到 /etc/hosts 中,分別爲:cookie

X.X.28.116  rbmq0 SVR-28-116
X.X.28.114  rbmq1 SVR-28-114
X.X.28.113  rbmq2 SVR-28-113app

再到每一臺中,修改 /etc/rabbitmq/rabbitmq-env.conf  內容以下:tcp

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="+A 128"
NODE_PORT=5672
NODENAME=rbmq0  <-- 每一臺服務器添加本身服務器的名字,另外兩臺分別爲:rbmq1, rbmq23d

而後先到 rbmq0 上執行 rabbitmq, 這主要是確保3臺的rabbitmq 都沒有問題,因此請到每一臺執行rabbitmq-serverrest

[root@SVR-28-116 ~]# service rabbitmq-server restartserver

只要你沒修改 /etc/rabbitmq/rabbitmq.conf 文件, 基本上不會有什麼問題。第一次使用,當你執行完畢以後,請到 /var/lib/rabbitmq 目前錄找 blog

這個文件是由rabbitmq生成的,第一次執行就會出如今以上的目錄中。

而後看下內容:

分別把文件內容複製到另外2臺服務器,一樣放在 /var/lib/rabbitmq 目錄下,你能夠用如下方式快速處理。目的就是必須保證3臺的 ,erlang.cookie 內容的一至。很重要!!

 

 而後再到第一臺rbmq0 執行:

[root@SVR-28-116 ~]# rabbitmqctl cluster_nodes

Cluster status of node 'rbmq0@SVR-28-116'
[{nodes,[{disc,['rbmq0@SVR-28-116']}]},
{running_nodes,['rbmq0@SVR-28-116']},
{cluster_name,<<"rbmq0">>},
{partitions,[]},
{alarms,[{'rbmq0@SVR-28-116',[]}]}]

這時你能夠先放一邊,再到另外兩臺上按如下方式分別執行:

rbmq1 Server

[root@SVR-28-114 ~]# service rabbitmq-server start

執行後確保沒有問題。

[root@SVR-28-114 ~]# rabbitmqctl stop_app

[root@SVR-28-114 ~]# rabbitmqctl join_cluster rbmq0@SVR-28-116

Clustering node 'rbmq1@SVR-28-114' with 'rbmq0@SVR-28-116'

那就表示已經添加成功

另外一臺一樣也執行

rbmq1 Server

[root@SVR-28-113 ~]# service rabbitmq-server start

執行後確保沒有問題。

[root@SVR-28-113 ~]# rabbitmqctl stop_app

[root@SVR-28-113 ~]# rabbitmqctl join_cluster rbmq0@SVR-28-116

Clustering node 'rbmq1@SVR-28-113' with 'rbmq0@SVR-28-116'

表示已經添加成功

而後,咱們再到第一臺執行:

[root@SVR-28-116 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node 'rbmq0@SVR-28-116'
[{nodes,[{disc,['rbmq0@SVR-28-116','rbmq1@SVR-28-114','rbmq2@SVR-28-113']}]},     <-- 114, 113 已經添加成功

{running_nodes,['rbmq0@SVR-28-116']},
{cluster_name,<<"rbmq0">>},
{partitions,[]},
{alarms,[{'rbmq0@SVR-28-116',[]}]}]

基本上算是已經成功了。接下來再作幾件事:

[root@SVR-28-116 rabbitmq]# rabbitmq-plugins enable rabbitmq_management

主要是使用web介面的管理。

訪問web:

http://X.X.28.116:15672

能夠看到,rbmq1,rbmq2 並無執行。那麼,咱們分別到該兩臺服務器啓動rabbitmq-server

service rabbitmq-server start

 基本上算是完成了。

 Firewall

# rabbitmq amqp
-A INPUT -p tcp -m tcp -m state --dport 5672:5673 --state NEW -j ACCEPT
# rabbitmq http management
-A INPUT -p tcp -m tcp -m state --dport 15672 --state NEW -j ACCEPT
# rabbitmq cluster
-A INPUT -p tcp -m tcp -m state --dport 25672 --state NEW -j ACCEPT

# rabbitmq  epmd (port 4369) on mqmaster-A INPUT -p tcp -m tcp -m state --dport 4369 --state NEW -j ACCEPT

相關文章
相關標籤/搜索