上一遍文章介绍了4.5之前集群的搭建,本文介绍4.6之后可以引入第三方dleger实现自动选举功能的集群搭建
dleger:同步数据;选举
通过第三方dleger配置master宕了,slave自动选举master
dleger是独立的服务,内嵌到broker中,同一集群下dleger之前建立通信,发送心跳包;dleger完成数据同步,选举
集群图:
dleger数据同步、选举:
准备六台虚拟机,配置两主四从(自我配置的)
首先六台机器(broker)启动nameserve(在窗口),在bin 目录下执行
命令: ./mqnamesrv &
一主三从配置(配置了dleger)
主配置:
1、修改配置文件(主(master))
vi rockemq/conf/2m-2s-async/broker-a.properties
加入配置属性:
namesrvAddr=192.168.32.130:9876;192.168.32.131:9876;192.168.32.132:9876;192.168.32.133:9876;192.168.32.134:9876;192.168.32.135:9876
#dleger
anbleDLegerCommitLog = true
dLegerGroup = broker-a
dLegerPeers = n0-192.168.32.130:40911;n1-192.168.32.131:40911;n2-192.168.32.132:40911;n3-192.168.32.133:40911
dLegerSelfId = n0
sendMessageThreadPoolNums = 4
2、启动boker(bin目录下)
./mqbroker -c ../conf/2m-2s-async/broker-a.properties
从配置:
1、修改配置文件(从(slave)第一台)
vi rockemq/conf/2m-2s-async/broker-a-s.properties
加入配置属性:
namesrvAddr=192.168.32.130:9876;192.168.32.131:9876;192.168.32.132:9876;192.168.32.133:9876;192.168.32.134:9876;192.168.32.135:9876
#dleger
anbleDLegerCommitLog = true
dLegerGroup = broker-a
dLegerPeers = n0-192.168.32.130:40911;n1-192.168.32.131:40911;n2-192.168.32.132:40911;n3-192.168.32.133:40911
dLegerSelfId = n1
sendMessageThreadPoolNums = 4
2、启动boker(bin目录下)
./mqbroker -c ../conf/2m-2s-async/broker-a-s.properties
3、修改配置文件(从(slave)第二台)
vi rockemq/bin/conf/2m-2s-async/broker-a-s.properties
加入配置属性:
namesrvAddr=192.168.32.130:9876;192.168.32.131:9876;192.168.32.132:9876;192.168.32.133:9876;192.168.32.134:9876;192.168.32.135:9876
#dleger
anbleDLegerCommitLog = true
dLegerGroup = broker-a
dLegerPeers = n0-192.168.32.130:40911;n1-192.168.32.131:40911;n2-192.168.32.132:40911;n3-192.168.32.133:40911
dLegerSelfId = n2
sendMessageThreadPoolNums = 4
注意:brokerId,dLegerSelfId得换(brokerId = 0 是主,brokerId > 0 是从)
4、启动boker(bin目录下)
./mqbroker -c ../conf/2m-2s-async/broker-a-s.properties
5、同上配置第三台从
注意:brokerId,dLegerSelfId得换
一主一从配置(未配置dleger)
主配置:
1、修改配置文件(主(master))
vi rockemq/conf/2m-2s-async/broker-a.properties
加入配置属性:
namesrvAddr=192.168.32.130:9876;192.168.32.131:9876;192.168.32.132:9876;192.168.32.133:9876;192.168.32.134:9876;192.168.32.135:9876
2、启动boker(bin目录下)
./mqbroker -c ../conf/2m-2s-async/broker-b.properties
从配置:
1、修改配置文件(从(slave)第一台)
vi rockemq/conf/2m-2s-async/broker-b-s.properties
加入配置属性:
namesrvAddr=192.168.32.130:9876;192.168.32.131:9876;192.168.32.132:9876;192.168.32.133:9876;192.168.32.134:9876;192.168.32.135:9876
2、启动boker(bin目录下)
./mqbroker -c ../conf/2m-2s-async/broker-b-s.properties
各个broker 集群之间的 DLedger 是不影响的,以集群为单位 DLedger 隔离
如此两主四从集群及搭建好了,其中一主三从支持主备切换
看控制台
1、启动控制台
2、这里随便配置一个nameServier,端口号是9876,记得先按回车再保存
3、查看Cluster(集群)情况
停掉broker-a主服务器,可以看到自主选出新的master
同一主从集群里需要配置至少三个从,三台机器,因为如果broker-a就两个从,选举没有过半数(brokerId=0是master),各自投一票给别人,票数无法超过一半,无法选出主;一般集群broker数量都应该为奇数
附加:
属性释义:
enableDlegerCommitLog:打开dleger
dLegerGroup:分组,一般来说跟brokerName配置成一样的。同一个M-S集群
dLegerPeers:dleger结点,与broker不同,相当于放哨的;broker有几个,dleger有几个;
enableDlegerCommitLog=true,在broker里会默认启一个40911端口(相当于 broker小弟,独立的,内嵌到broker)
dLegerSelfId:与dLegerPeers上面对应;如图中n0
选举:
broker的配置已失效,即使brokerId=0,但经过选举后会另产生master