多服务器单实例 —— 参考博客:
https://www.cnblogs.com/lixioayi/articles/9993658.html
首先要找到cookie文件,所有实例要保持cookie一致(启动运行过的RabbitMQ会生成):
[root@localhost ~]# find / -name .erlang.cookie /var/lib/rabbitmq/.erlang.cookie [root@localhost ~]#
里面查看就是一堆字母:
[root@localhost ~]# cat /var/lib/rabbitmq/.erlang.cookie RMSWWJGQNKZKNEILPSHS[root@localhost ~]#
然后选定主从关系,统一使用主实例的Cookie
cookie是一个只读文件,那就用SCP直接传输覆盖吧(从机记得先关闭服务)
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.2.110:/var/lib/rabbitmq/ The authenticity of host '192.168.2.110 (192.168.2.110)' can't be established. ECDSA key fingerprint is SHA256:hkKgDGf17aUrVAPXT5ZPL0/TjONX7nTeB5vrsSzXihE. ECDSA key fingerprint is MD5:91:9e:04:92:71:6f:00:d9:d1:9b:3b:6e:74:88:a7:d4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.110' (ECDSA) to the list of known hosts. root@192.168.2.110's password: .erlang.cookie 100% 20 58.1KB/s 00:00 [root@localhost ~]#
再检查从机是不是被覆盖了
cat /var/lib/rabbitmq/.erlang.cookie
两边Cookie一致,OK
再把从机打开:
service rabbitmq-server start
草,这里RabbitMQ有点坑啊
主机和从机都设置了一样的用户,然后结果就是主机和从机都用不了了
新建账户之后发现,原来的那个账户已经被删除了,靠,要重新做个帐号来使用
然后发条消息给从机队列,再关掉从机,队列直接挂掉
要保证从机挂掉不丢失消息,就要配置镜像队列策略
策略添加
^ 表示同步所有节点的信息
下面选择同步的是交换机和队列,交换机,队列
最后定义模式
然后再次在从机B队列中发送消息,关闭从机
会发现,这个队列自动划分到主机上,消息会被保留
但是重新开启后,该队列只能永远分配到主机上了,从机不再拥有这个队列