首先先把 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