图解集群
一个好消息是,RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持集群。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样借助ZooKeeper实现集群搭建。
先简单说两个问题,后面会详细介绍:
❶ 如何实现各个节点上的队列消息的同步?
我们只需在搭建好集群后,添加一个镜像队列的策略即可。
❷ 如何实现多个节点的透明代理?如何实现各个节点的负载均衡?
HAProxy可以解决这一切。
好了,下面看图理解镜像队列和HAProxy的作用:
集群搭建
刚刚说过,RabbitMQ兔子窝的集群搭建并不需要借助ZooKeeper,直接使用自身提供的命令即可实现。
下面,搭建一个伪集群进行演示(伪集群用端口号区分,真实集群用IP地址区分):
## 基本思路 ##
默认的rabbitmq节点(rabbit@ubuntu)开启在5672端口上,对应web控制台在15672端口上。
我们在演示的时候,不使用它,而是自己创建两个节点,并声明端口防止冲突:
rabbit1@ubuntu节点:5673/15673,作为master
rabbit2@ubuntu节点:5674/15674,作为slave
## 启动第一个节点 ##
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RAB