一、主从集群架构
1、普通集群(主备模式)
RabbitMQ代理操作所需的所有数据/状态都在所有节点之间复制。消息队列是一个例外,默认情况下,消息队列驻留在一个节点上,尽管它们在所有节点上都是可见且可访问的。
注意点:
1.此种模式,master点上的队列不能copy到salve节点上,连接到salve节点上的消费者是可以消费消息,消息消费master上队列中的消息也会删除掉。
2.master节点down掉后,两个salve节点消费者也不能消费当中的消息。
3.master节点发布消息后,或对消息进行操作后会立即同步到所有的salve节点上
2、集群环境准备
- 节点配置:
master节点:192.168.231.131 主机名:(mq1)
salve节点1:192.168.231.132 主机名:(mq2)
salve节点2:192.168.231.133 主机名:(mq3)
- 准备三台服务器并配置IP映射:
vim /etc/hosts 命令加入映射信息:
192.168.231.131 mq1
192.168.231.132 mq2
192.168.231.133 mq3
- 三台服务器上安装RabbitMQ,并同步cookie文件(是隐藏文件),在master节点上执行
为什么必须同步cookie文件?
.erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每一个节点上要保持相同的.erlang.cookie文件,Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,或者${home}/.erlang.cookie ,所以必须保证各节点cookie保持一致,否则节点之间就无法通信。
安装步骤这里就不叙述了,
下面开始同步cookie文件:
scp /var/lib/rabbitmq/.erlang.cookie root@mq2: /var/lib/rabbitmq/
scp /var/lib/