Rabbitmq 相關介紹之雙機鏡像模式集羣配置

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 "/"

在瀏覽器訪問,並查看建狀態以下:
瀏覽器

wKioL1nEuZSj6k-PAADF3Wi8HwU045.jpg一個集羣須要至少有一個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

相關文章
相關標籤/搜索