环境:
节点A:
系统:Windows 7
计算机名:WIN-7FK4S28G46O
IP:192.168.226.128
用户:Administrator
节点B:
系统:Windows 7
计算机名:WIN-7FK4S28G461
IP:192.168.226.129
用户:Administrator
Erlang版本:22.0
RabbitMQ版本:3.7.17
1.所有节点中安装erlang与RabbitMQ(老版本的RabbitMQ不支持安装路径中存在中文和空格),
安装位置:
D:\Programs\erl10.4
D:\Programs\RabbitMQ Server
2.所有节点打开CMD,执行rabbitmq-plugins enable rabbitmq_management,并确认可以正常访问http://localhost:15672
3.所有节点中配置环境变量:
RABBITMQ_SERVER D:\Programs\RabbitMQ Server\rabbitmq_server-3.7.17
ERLANG_HOME D:\Programs\erl10.4
Path 追加 %ERLANG_HOME%\bin;%RABBITMQ_SERVER%\sbin
4.所有节点中修改Hosts文件,增加:
192.168.226.128 rabbit@WIN-7FK4S28G46O
192.168.226.129 rabbit@WIN-7FK4S28G461
5.所有节点新建文件C:\Users\Administrator\AppData\Roaming\RabbitMQ\rabbitmq.config,文件内容为:
[{rabbit,[{cluster_nodes, ['rabbit@WIN-7FK4S28G46O', 'rabbit@WIN-7FK4S28G461']}]}].
6.所有节点新建文件夹D:\Programs\RabbitMQ Server\db,D:\Programs\RabbitMQ Server\log
7.所有节点新建文件C:\Users\Administrator\AppData\Roaming\RabbitMQ\rabbitmq-env.conf
节点A内容为:
NODENAME=rabbit@WIN-7FK4S28G46O
NODE_IP_ADDRESS=192.168.226.128
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=D:\Programs\RabbitMQ Server\db
RABBITMQ_LOG_BASE=D:\Programs\RabbitMQ Server\log
节点B内容为:
NODENAME=rabbit@WIN-7FK4S28G461
NODE_IP_ADDRESS=192.168.226.129
NODE_PORT=5672
RABBITMQ_MNESIA_BASE=D:\Programs\RabbitMQ Server\db
RABBITMQ_LOG_BASE=D:\Programs\RabbitMQ Server\log
8.将节点A中的C:\Users\Administrator\.erlang.cookie文件,替换到节点B中的C:\Users\Administrator\.erlang.cookie和C:\Windows\System32\config\systemprofile\.erlang.cookie
9.节点A(主节点WIN-7FK4S28G46O)依次执行下列命令:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
10.节点B(次节点WIN-7FK4S28G461)依次执行下列命令:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@WIN-7FK4S28G46O
rabbitmqctl start_app
11.新增用户
访问http://192.168.226.128:15672,点击Admin - Users - Add a user,填写Username:admin,Password:admin,点击Set中的Admin,增加Administrator用户类型。点击Add user按钮增加admin用户。
新增用户成功后,点击上方表格中的admin,找到Permissions,确认Virtual Host为“/”,其他三项为“.*”,点击Set permission,为admin用户增加权限。
12.修改集群为镜像节点
点击Admin - Policies - Add/update a policy,填写:
Name:ha-all
Pattern:^
点击HA mode,value填写all
点击Add policy添加策略
(^:为匹配符,只有一个^代表匹配所有,^zlh为匹配名称为zlh的exchanges或者queue。)
(ha-mode:为匹配类型,他分为3种模式:all-所有(所有的queue),exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器),nodes-指定(需配置ha-params参数,此参数为数组类型比如["3rabbit@F","rabbit@G"]这样指定为F与G这2台机器。)。)
至此节点AB为一个RabbitMQ集群,且各节点消息互相同步。可以使用Nginx或HAProxy负载均衡此集群