一、原理说明
官网地址:http://activemq.apache.org/replicated-leveldb-store
原理图:
原理说明:
1)使用Zookeeper集群注册所有的ActiveMQ Broker,但只有其中一个Broker可以提供服务,它将被视为Master,其他的Broker处于待机状态被视为Slave。如果Master因故障而不能提供服务,Zookeeper会从Slave中选举出一个Broker充当Master。
2)Slave连接Master并同步他们的存储状态,Slave不接受客户端连接。所有的存储操作都将被复制到连接至Maste的Slaves。
3)如果Master宕机得到了最新更新的Slave会变成Master。故障节点在恢复后会重新加入到集群中并连接Master进入Slave模式。
4)所有需要同步的消息操作都将等待存储状态被复制到其他法定节点的操作完成才能完成。所以,如给你配置了replicas=3,name法定大小是(3/2)+1 = 2。Master将会存储更新然后等待(2-1)=1个Slave存储和更新完成,才汇报success。有一个node要作为观察者存在。当一个新的Master被选中,你需要至少保障一个法定mode在线以能够找到拥有最新状态的ode,这个node才可以成为新的Master。因此,推荐运行至少3个replica nodes以防止一个node失败后服务中断。
二、集群规划
主机 | zookeeper集群端口 | zookeeper安装目录 | AMQ集群bind端口 | AMQ消息tcp端口 | AMQ管理控制台端口 | AMQ安装目录 |
10.0.0.11 | 2191 | /data/app/zookeeper | bind=”tcp://0.0.0.0:63631” | 61616 | 8161 | /data/app/activemq |
10.0.0.12 | 2192 | /data/app/zookeeper | bind=”tcp://0.0.0.0:63632” | 61617 | 8162 | /data/app/activemq |
10.0.0.13 | 2193 | /data/app/zookeeper | bind=”tcp://0.0.0.0:63633” | 61618 | 8263 | /data/app/activemq |