Rabbitmq镜像集群模式搭建
一. 搭建第一台rabbitmq服务
1. 在服务器上新建文件夹,拷入安装包(见附件)
自行下载rabbitmq,erlang,socat
地址:
http://www.dest-unreach.org/socat/
https://www.erlang.org/downloads
https://www.rabbitmq.com/install-windows.html
可参照我的版本
2. 分别赋权
3. 分别执行安装命令
4. 启动rabbitmq
5. 配置rabbitmq管理账户
6. 防火墙打开5672/15672端口 (rabbitmq服务默认端口为15672)
7. 登录前台界面
管理链接为:http://localhost:15672,登陆账户密码为设置的 admin admin
登陆管理端,并打开访问权限。
登陆后台
查看用户权限,默认状态下权限是不允许访问(此时程序访问5672端口是连接被拒绝)。
点击用户名,进入用户页面,直接点击设置权限。此时刷新页面回到Users页面,权限变成可访问
二. RabbitMQ集群部署
1 按照前面的方式在想要集群的多台主机上安装好RabbitMQ实例
2 更改主机/etc/hosts
加入主机节点。 如下所示二台主机均在/etc/hosts中添加,然后二台主机相互之间可以ping通rabbit-node
添加内容:
3 多台主机的erlang.cookie设置为同一个
使用rpm包安装的rabbitmq, erlang.cookie的位置在/var/lib/rabbitmq/.erlang.cookie。具体操作流程如下:如果以rabbit-node1的erlang.cookie作为集群的erlang.cookie.
3.1在rabbit-node1的主机上给erlang.cookie赋权
3.2在rabbit-node2主机上执行
3.3查看erlang.cookie是否统一,如果已统一,再执行如下命令,恢复原本权限(一定要恢复)
4 配置集群
4.1 在2台主机上停止当前Rabbitmq-server, 分别执行,如有问题,可以使用ps查看rabbitmq进程号,在kill -9 杀掉。
4.2 然后执行,开启服务
分别在两台主机上执行rabbitmqctl cluster_status查看集群状况,此时只有本机的记录。打印输出如下:
Cluster status of node rabbit@localhost ...
[{nodes,[{disc,[rabbit@localhost]}]},
{running_nodes,[rabbit@localhost]},
{cluster_name,<<"rabbit@localhost">>}, {partitions,[]},
{alarms,[{rabbit@localhost,[]}]}]`
5 将rabbit-node1,rabbit-node2组成集群。
5.1 两台服务器均修改hostname与/etc/hosts中配置的一样,不然加入到集群会有问题,参见2 的配置
[root@localhost ~]# vi /etc/hostname
rabbit-node1
5.2 修改网络配置/etc/sysconfig/network,如下:
[root@rabbit-node1 ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rabbit-node2
[root@rabbit-node1 ~]# service network restart
5.3 重启服务器使host修改生效,查询hostname是否已修改
[root@rabbit-node1 ~]# hostname
rabbit-node1
5.4 启动rabbitmq服务
5.5在二台主机上分别执行rabbitmqctl cluster_status查看集群状态,结果如下:
Cluster status of node rabbit@rabbit-node1 ...
[{nodes,[{disc,['rabbit@rabbit-node1','rabbit@rabbit-node2']}]},
{running_nodes,['rabbit@rabbit-node2','rabbit@rabbit-node1']},
{cluster_name,<<"rabbit@rabbit-node1">>},
{partitions,[]},
{alarms,[{'rabbit@rabbit-node2',[]},{'rabbit@rabbit-node1',[]}]}]
表示集群创建成功,从任意一个节点的rabbitmq web管理端也可以看到各个节点状态。
6 搭建rabbitmq的镜像高可用模式集群
在任意一个节点上执行如下命令:
参数意思为:
ha-all:为策略名称。
:为匹配符,只有一个代表匹配所有,^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台机器。)。
查看策略:rabbitmqctl list_policies -p /