下面以三台虚拟机为例,搭建RabbitMQ集群
首先在第一台上面安装完成RabbitMQ,然后克隆三台。
接下来修改主机名称,分别修改为node1,node2,node3
vim /etc/hostname
其余两台也按上面命令对应修改。
然后重启虚拟机,使其生效。
vim /etc/hosts
配置node1 2 3三个节点的ip,每一台都要。
接下来,确保各个节点的 cookie 文件使用的是同一个值,在node1执行如下命令
scp /root/.erlang.cookie root@node2:/root/.erlang.cookie
scp /root/.erlang.cookie root@node3:/root/.erlang.cookie
由于安装mq的方式不同,使用.erlang.cookie的位置可能会不同。官方介绍集群的文档介绍如下: .erlang.cookie一般会存在于两个地方,第一个是:$HOME/.erlang.cookie;第二个是:/var/lib/rabbitmq/.erlang.cookie。
如果我们使用解压缩安装方式(二进制安装或者编译安装),那么该文件存在位置为$HOME目录下。即$HOME/.erlang.cookie。如果我们使用root安装,则位置为:/root/.erlang.cookie,其他用户为/home/用户名/.erlang.cookie。
如果我们使用rpm包方式安装,那么这个文件会存在于/var/lib/rabbitmq目录下。
根据自身情况修改路径。
rabbitmq-server -detached
将node2加入到node1里面去,在node2执行
rabbitmqctl stop_app
rabbitmqctl reset // 重置mq
rabbitmqctl join_cluster rabbit@node1 // 加入node1
rabbitmqctl start_app //只启动应用服务
此时node2就连接到了node1,然后在node3里面执行
rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl join_cluster rabbit@node2rabbitmqctl start_app
连接到node2,这样如果node2挂掉,node3会自动顶替上去
查看集群状态
rabbitmqctl cluster_status
然后重新设置用户
创建账号rabbitmqctl add_user admin 123设置用户角色rabbitmqctl set_user_tags admin administrator设置用户权限rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
登录mq后台查看
可以看到三个节点非常健康的在运行
如果想接触集群的话,假如接除node2,那么在node2执行以下代码
rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl start_apprabbitmqctl cluster_status
然后在node1主节点执行
rabbitmqctl forget_cluster_node rabbit@node2
镜像队列
name: 任意名称
pattern: ^mirror 备份以mirror为前缀的队列
ha-mode: 备份模式
exactly:指定对应模式
ha-params:指定备份几份
ha-sync-mode:同步模式 automatic:自动备份
记得去掉//以及后面内容还有空格再添加策略
添加成功
代码验证
修改之前代码的队列名称,启动服务
可以看到一个+1 ,点进去查看
可以看到在3节点备份了一个