1、環境介紹
node
系統: Centos 6.7 2.6.32-573.el6.x86_64 node1 172.16.60.187 node2 172.16.60.188 軟件包 erlang-19.0.4-1.el6.x86_64.rpm rabbitmq-server-3.6.12-1.el6.noarch.rpm 直接使用rpm包安裝便可: #yum install socat -y #rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm #rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm
2、開始配置普通集羣web
一、設置hosts,是rabbitmq節點能夠順利的互通 在兩臺服務器上配置/etc/hosts,以下: #cat /etc/hosts 172.16.60.187 node1 172.16.60.188 node2 在2臺服務器配置ulimit限制 #cat /etc/security/limits.conf * hard nofile 65535 * soft nofile 65535 二、啓動2臺rabbitmq #service rabbitmq-server start 三、設置不一樣節點間同一認證的Erlang Cookie 採用從主節點copy的方式保持Cookie的一致性,這裏將node1節點的cookie拷貝到node2,拷貝以前先停掉node2節點的rabbitmq進程 #service rabbitmq-server stop #scp /var/lib/rabbitmq/.erlang.cookie root@172.16.60.188:/var/lib/rabbitmq/.erlang.cookie 修改權限爲400 #chmod 400 /var/lib/rabbitmq/.erlang.cookie 從新啓動rabbitmq #service rabbitmq-server start 四、查看Cookie狀況 [root@node1 ~]# cat /var/lib/rabbitmq/.erlang.cookie CLAPXRVVRHOJYFPTZVTB [root@node2 ~]# cat /var/lib/rabbitmq/.erlang.cookie CLAPXRVVRHOJYFPTZVTB 五、沒有建立普通集羣以前,查看集羣狀態 [root@node1 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@node1 [{nodes,[{disc,[rabbit@node1]}]}, {running_nodes,[rabbit@node1]}, {cluster_name,<<"rabbit@node1">>}, {partitions,[]}, {alarms,[{rabbit@node1,[]}]}] ################################################################ [root@node2 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@node2 [{nodes,[{disc,[rabbit@node2]}]}, {running_nodes,[rabbit@node2]}, {cluster_name,<<"rabbit@node2">>}, {partitions,[]}, {alarms,[{rabbit@node2,[]}]}] 六、建立並部署集羣,以node2爲例 [root@node2 rabbitmq]# rabbitmqctl stop_app Stopping rabbit application on node rabbit@node2 [root@node2 rabbitmq]# rabbitmqctl join_cluster rabbit@node1 Clustering node rabbit@node2 with rabbit@node1 [root@node2 rabbitmq]# rabbitmqctl start_app Starting node rabbit@node2 注:根據官方文檔,若是有node3,繼續加入集羣那麼就在node3操做,中止app--添加--啓動app #rabbitmqctl join_cluster rabbit@node1 七、查看集羣狀態 #rabbitmqctl cluster_status Cluster status of node rabbit@node2 [{nodes,[{disc,[rabbit@node1,rabbit@node2]}]}, {running_nodes,[rabbit@node1,rabbit@node2]}, {cluster_name,<<"rabbit@node1">>}, {partitions,[]}, {alarms,[{rabbit@node1,[]},{rabbit@node2,[]}]}] 到這裏2臺服務器構成的普通集羣就配置好了。 八、啓動管理界面 [root@node1 ~]# rabbitmq-plugins enable rabbitmq_management The following plugins have been enabled: amqp_client cowlib cowboy rabbitmq_web_dispatch rabbitmq_management_agent rabbitmq_management Applying plugin configuration to rabbit@node1... started 6 plugins. ######################################################################### [root@node2 rabbitmq]# rabbitmq-plugins enable rabbitmq_management The following plugins have been enabled: amqp_client cowlib cowboy rabbitmq_web_dispatch rabbitmq_management_agent rabbitmq_management Applying plugin configuration to rabbit@node2... started 6 plugins. 九、配置用戶名和密碼 [root@node1 ~]# rabbitmqctl add_user admin admin123 Creating user "admin" [root@node1 ~]# rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator] [root@node1 ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" Setting permissions for user "admin" in vhost "/"
在瀏覽器訪問,並查看建狀態以下:
瀏覽器
一個集羣須要至少有一個disc節點,一個RAM節點,那麼咱們將node2修改成RAM節點。bash
在node2節點上操做以下: [root@node2 ~]# rabbitmqctl stop_app Stopping rabbit application on node rabbit@node2 [root@node2 ~]# rabbitmqctl change_cluster_node_type ram Turning rabbit@node2 into a ram node [root@node2 ~]# rabbitmqctl start_app Starting node rabbit@node2 查看是否修改爲功 [root@node1 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@node1 [{nodes,[{disc,[rabbit@node1]},{ram,[rabbit@node2]}]}, #修改爲功 {running_nodes,[rabbit@node2,rabbit@node1]}, {cluster_name,<<"rabbit@node1">>}, {partitions,[]}, {alarms,[{rabbit@node2,[]},{rabbit@node1,[]}]}] ######################################################## [root@node2 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@node2 [{nodes,[{disc,[rabbit@node1]},{ram,[rabbit@node2]}]}, #修改爲功 {running_nodes,[rabbit@node1,rabbit@node2]}, {cluster_name,<<"rabbit@node1">>}, {partitions,[]}, {alarms,[{rabbit@node1,[]},{rabbit@node2,[]}]}] 同時經過rabbitmq-magagement界面看到的也是一個Disc一個Ram。
3、配置鏡像隊列集羣
服務器
[root@node1 ~]# rabbitmqctl set_policy mirror_queue1 "^" '{"ha-mode":"all","ha-sync-mode":"automatic","ha-promote-on-shutdown":"always"}' Setting policy "mirror_queue1" for pattern "^" to "{\"ha-mode\":\"all\",\"ha-sync-mode\":\"automatic\",\"ha-promote-on-shutdown\":\"always\"}" with priority "0" 查看 [root@node1 ~]# rabbitmqctl list_policies Listing policies / mirror_queue1 all ^ {"ha-mode":"all","ha-sync-mode":"automatic","ha-promote-on-shutdown":"always"} 0 ####################### [root@node2 ~]# rabbitmqctl list_policies Listing policies / mirror_queue1 all ^ {"ha-mode":"all","ha-sync-mode":"automatic","ha-promote-on-shutdown":"always"} 0
一樣的,添加好鏡像隊列以後,也能夠在rabbitmq-management界面看到。cookie