環境:
四臺centOS操做系統服務器192.168.0.73,192.168.0.74,192.168.0.75,192.168.0.76html
1 在每臺服務器上按照以下步驟安裝rabbitMQ
1.1 rabbitMQ是基於erlang語言開發的,所以先安裝erlang
執行命令:web
yum install erlang
1.2 安裝rabbitMQ
分別執行命令正則表達式
1 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.0/rabbitmq-server-3.5.0-1.noarch.rpm 2 rpm -ivh rabbitmq-server-3.5.0-1.noarch.rpm
1.3 安裝完成後以服務的方式啓動rabbitMQ,並驗證相關進程是否運行正常vim
1 service rabbitmq-server start 2 ps -ef | grep rabbitmq
1.4 若是須要使用webUI管理,執行一下命令安裝插件;完成後重啓rabbitMQ服務器
1 rabbitmq-plugins enable rabbitmq_management 2 service rabbitmq-server restart
1.5 經過webUI登陸地址http://192.168.0.73:15672 默認用戶名和密碼都是guest
guest帳戶默認只容許經過localhost登陸,出現沒法登陸時經過修改配置文件便可解決cookie
vim /etc/rabbitmq/rabbitmq.config
寫入[{rabbit, [{loopback_users, []}]}]. 保存便可
2 集羣搭建
這裏所採用的四臺rabbitMQ服務器的hostname分別是queue-01,queue-02,queue-03,queue-04;hostname可經過app
1 cat /proc/sys/kernel/hostname
命令查看oop
2.1 中止全部節點的rabbitMQ服務spa
service rabbitmq-server stop
2.2 分別在四臺機器的/etc/hosts文件中加入以下內容,指定queue-01,queue-02,queue-03,queue-04的host。操作系統
192.168.0.73 queue-01 192.168.0.74 queue-02 192.168.0.75 queue-03 192.168.0.76 queue-04
2.3 以queue-01爲基礎,同步每一個節點的.erlang.cookie文件(以queue-02爲例),具體緣由請參考:http://www.cnblogs.com/flat_peach/archive/2013/04/07/3004008.html
1 queue-01#chmod 777 .erlang.cookie 2 queue-02#chmod 777 .erlang.cookie 3 queue-01#scp .erlang.cookie root@192.168.0.74:/var/lib/rabbitmq/ 4 queue-02#chmod 400 .erlang.cookie 5 queue-01#chmod 400 .erlang.cookie
2.4 經過detached參數獨立運行全部節點,查看節點狀態
1 rabbitmq-server -detached 2 rabbitmqctl cluster_status
2.5 將queue-02做爲磁盤節點,queue-03,queue-04做爲內存節點與queue-01鏈接起來
1 queue-02#rabbitmqctl stop_app 2 queue-02#rabbitmqctl join_cluster rabbit@queue-01 3 queue-02#rabbitmqctl start_app 4 5 queue-03#rabbitmqctl stop_app 6 queue-03#rabbitmqctl join_cluster --ram rabbit@queue-01 7 queue-03#rabbitmqctl start_app 8 9 queue-04#rabbitmqctl stop_app 10 queue-04#rabbitmqctl join_cluster --ram rabbit@queue-01 11 queue-04#rabbitmqctl start_app
經過以上步驟rabbitMQ集羣已經能正常工做了
若是但願使用鏡像功能,能夠經過rabbitMQ的策略來實現,在集羣中的任意節點配置策略會自動同步到其餘節點。
rabbitmqctl set_policy -p test ha-allqueue "^" '{"ha-mode":"all"}'
以上命令在名稱爲test的vhost上建立了一個名爲ha-allqueue的策略,策略模式爲all,即複製到全部節點,包含新增節點。 策略正則表達式爲 「^」 表示匹配全部隊列名稱,即全部隊列都會以鏡像的形式存在於其餘全部節點。