RabbitMQ具有很好的消息傳遞性能,同時(shí)又是開源軟件,使用范圍較廣。在學(xué)習(xí)的過程中,個(gè)人發(fā)現(xiàn)除了對(duì)Client端的代碼框架、API特性以及異常處理需要加強(qiáng)學(xué)習(xí)外,在Server端最重要的就是對(duì)HA和集群的研究學(xué)習(xí)了。而在RabbitMQ中HA也非常的依賴于集群,因此集群就成為重中之重。 本人研究RabbitMQ完全出于興趣,所以使用的都是自己的業(yè)余時(shí)間,所用的工具也就是一臺(tái)筆記本而已,因此在本機(jī)上搭建一個(gè)RabbitMQ 集群環(huán)境就成為首要解決的問題了。今天花了2個(gè)小時(shí)研究了一下,已經(jīng)初步成功搭建出了集群,這里做一個(gè)記錄。 因?yàn)樽约菏褂玫氖荳indows系統(tǒng),因此簡(jiǎn)而言之入手點(diǎn)自然就是RabbitMQ提供的bat文件了。RabbitMQ提供了5個(gè)bat文件,分別是: rabbitmq-service.bat,rabbitmq-server.bat,rabbitmq-plugins.bat,rabbitmq-echopid.bat以及 rabbitmqctl.bat。我們先從rabbitmq-server.bat和rabbitmqctl.bat入手。 我們準(zhǔn)備搭建的是擁有兩個(gè)Node節(jié)點(diǎn)的Cluster,這里分別取名Cluster-Node1和ClusterNode2。每個(gè)Node當(dāng)然要有自己的bat文件啦,因此以上兩個(gè)bat就變成了4個(gè): rabbitmq-server-cluster-1.bat,rabbitmq-server-cluster-2.bat,rabbitmqctl-cluster-1.bat和rabbitmqctl-cluster-2.bat。這里就說一下如何修改吧。 1. 需要修改Windows中的hosts文件。 既然要在一臺(tái)機(jī)器上模擬兩個(gè)Node,那么自然要配置一下兩個(gè)Node的ip了,在hosts文件中添加如下兩段: 127.0.0.1 Cluster-Node1 127.0.0.1 Cluster-Node2 保存。 2. 在rabbitmq-server*中添加 set APPDATA="D:\09-Opensource\rabbitmq\workspace" set RABBITMQ_CONFIG_FILE="D:\09-Opensource\rabbitmq\workspace\config\1\rabbitmq" 第一個(gè)是啟動(dòng)時(shí)設(shè)置的RabbitMQ的默認(rèn)配置根目錄。這里配置成自己制定的目錄吧。當(dāng)然如果不修改也是可以的,那就在c盤users下對(duì)應(yīng)的用戶目錄里。 第二個(gè)比較重要了,我們知道RabbitMQ是可以配置Config文件的,但是默認(rèn)呢確沒有,需要手工創(chuàng)建。在Config文件中可以配置RabbitMQ的各種參數(shù),對(duì)以后的學(xué)習(xí)研究很有幫助。這里第二個(gè)參數(shù)便是設(shè)置了Config文件的路徑。 之后再添加(或者直接修改也是ok的) set RABBITMQ_NODENAME=rabbit1@Cluster-Node1 這里注意了@號(hào)之前的也必須完全不一樣哦 還有就是 RABBITMQ_NODE_PORT=9991 這里也需要修改一下,畢竟我們的IP是一樣的嘛; 自然RABBITMQ_DIST_PORT=15672也是要改一下的了,原因同上。 這樣rabbitmq-server的兩個(gè)文件就修改完了,記得保存。 3. 在rabbitmqctl-cluster-*中修改 這兩個(gè)文件就很簡(jiǎn)單了: 同樣,添加一下set APPDATA="D:\09-Opensource\rabbitmq\workspace" 之后再添加(或者直接修改也是ok的) set RABBITMQ_NODENAME=rabbit1@Cluster-Node1 這樣就OK啦。 4. 創(chuàng)建集群 首先,先運(yùn)行rabbitmqctl-cluster-*文件,將兩個(gè)server啟動(dòng)起來。 之后運(yùn)行rabbitmqctl-cluster-2 stop_app,將Node2先掛起來。 再運(yùn)行 rabbitmqctl-cluster-2 join_cluster rabbit1@Cluster-Node1,這樣就將Node2加入了Node1的集群(其實(shí)之前的集群里也只有Node1一個(gè)嘛。。。) 然后將Node2激活 rabbitmqctl-cluster-2 start_app 看看勞動(dòng)成果吧: rabbitmqctl-cluster-2 cluster_status. 下一章準(zhǔn)備寫寫如何激活集群的plugin吧 |
|