RocketMQ-四种集群环境构建
1.单点模式
2.主从模式
主节点消息收发,同步到从节点,主节点挂了,从节点可以保证消息不丢失
3.双主模式
4.双主双从模式,多主多从模式
主要使用2和4两种
主从模式集群构建
保障消息的即时性和可靠性并存
投递一条消息后,关闭主节点,故障演练,数据一致性能否保证
(同步刷盘和异步刷盘)
从节点可以继续提供消费者继续消费,不能接收消息
主节点重新上线后进行消费进度的offset同步
开始构建主从模式架构
1.在构建过的虚拟机中修改配置
vi /etc/hosts
172.19.24.103 rocketmq-nameserver1
172.19.24.103 rocketmq-master1
172.19.24.113 rocketmq-nameserver2
172.19.24.113 rocketmq-master-slave1
两台机器都配置hosts如上
2.slave机器修改配置文件如下
brokerClusterName=rocketmq-cluster
brokerName=broker-a
brokerId=1
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubScriptionGroup=true
listenPosr=10911
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
storePathRootDir=/usr/local/rocketmq/store
storePathCommitLog=/usr/local/rocketmq/store/commitLog
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
storePathIndex=/usr/local/rocketmq/store/index
storeCheckpooint=/usr/local/rocketmq/store/checkpoint
abortFile=/usr/local/rocketmq/store/abort
maxMessageSize=65536
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
同步到两台机器
相关单机搭建请参考RocketMQ环境搭建一文
3.增加相关日志信息配置,详见Rocket单机的环境配置
第一台机器启动NameServer
nohup sh mqnamesrv &
第一台机器启动Broker
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties > /dev/null 2>&1 &
第一台机器启动NameServer
nohup sh mqnamesrv &
第二台机器启动Broker
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties > /dev/null 2>&1 &
值得注意的是放火墙需要打开10912端口,HA主要使用该端口同步数据。
查看防火墙端口是否打开
firewall-cmd --query-port=10912/tcp
(1)首先启动完成master和slave
(2)用Producer发送消息到集群
(3)将主节点关闭,模拟主节点宕机
(4)Consumer启动之后还是能消费到Producer发送的数据
(5)再次启动Master节点,没有消费到新的数据
证明主从架构能够保证主节点宕机之后,能够保证数据不丢失。具备高可用特性,可避免单点故障。