海门网站建设制作,保健品网站怎么做的,企业宣传视频模板素材,视频制作公司简介目录一、Broker集群模式1、单Master#xff1a;2、多Master多Slave模式异步复制3、多Master多Slave模式同步双写二、集群搭建实践1、集群架构2、克隆生成rocketmqos13、修改rocketmqos1配置文件4、克隆生成rocketmqOS25、修改rocketmqOS2配置文件6、启动服务器7、测试一、Brok…
目录一、Broker集群模式1、单Master2、多Master多Slave模式异步复制3、多Master多Slave模式同步双写二、集群搭建实践1、集群架构2、克隆生成rocketmqos13、修改rocketmqos1配置文件4、克隆生成rocketmqOS25、修改rocketmqOS2配置文件6、启动服务器7、测试一、Broker集群模式
根据Broker集群中各个节点间关系的不同Broker集群可以分为以下几类
1、单Master
只有一个broker其本质上就不能称为集群。这种方式也只能是在测试时使用生产环境下不能使用因为存在单点问题。 多Masterbroker集群仅由多个master构成不存在Slave。同一Topic的各个Queue会平均分布在各个master节点上。 优点 配置简单单个Master宕机或重启维护对应用无影响在磁盘配置为RAID10时即使机器宕机不可恢复情况下由于RAID10磁盘非常可靠消息也不会丢异步刷盘丢失少量消息同步刷盘一条不丢性能最高 缺点 单台机器宕机期间这台机器上未被消费的消息在机器恢复之前不可订阅不可消费消息实时性会受到影响。
2、多Master多Slave模式异步复制
broker集群由多个master构成每个master又配置了多个slave在配置了RAID磁盘阵列的情况下一个master一般配置一个slave即可。master与slave的关系是主备关系即master负责处理消息的读写请求而slave仅负责消息的备份与master宕机后的角色切换。 异步复制即前面所讲的复制策略中的异步复制策略即消息写入master成功后master立即向producer返回成功ACK无需等待slave同步数据成功。 该模式的最大特点之一是当master宕机后slave能够自动切换为master。不过由于slave从master的同步具有短暂的延迟毫秒级所以当master宕机后这种异步复制方式可能会存在少量消息的丢失问题。
3、多Master多Slave模式同步双写
该模式是多Master多Slave模式的同步复制实现。所谓同步双写指的是消息写入master成功后master会等待slave同步数据成功后才向producer返回成功ACK即master与slave都要写入成功后才会返回成功ACK也即双写。 该模式与异步复制模式相比优点是消息的安全性更高不存在消息丢失的情况。但单个消息的RT略高从而导致性能要略低大约低10%。 该模式存在一个大的问题对于目前的版本Master宕机后Slave不会自动切换到Master。
二、集群搭建实践
1、集群架构
这里要搭建一个双主双从异步复制的Broker集群。为了方便这里使用了两台主机来完成集群的搭建。这两台主机的功能与broker角色分配如下表:
2、克隆生成rocketmqos1
克隆rocketmqOS主机并修改配置。指定主机名为rocketmqOS1。
3、修改rocketmqos1配置文件
配置文件位置要修改的配置文件在rocketMQ解压目录的 conf/2m-2s-async目录中 修改 broker-a.properties 将该配置文件内容修改为如下
# 指定整个broker集群的名称或者说是RocketMQ集群的名称
brokerClusterNameDefaultCluster
# 指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群
brokerNamebroker-a
# master的brokerId为0
brokerId0
# 指定删除消息存储过期文件的时间为凌晨4点
deleteWhen04
# 指定未发生更新的消息存储文件的保留时长为48小时48小时后过期将会被删除
fileReservedTime48
# 指定当前broker为异步复制master
brokerRoleASYNC_MASTER
# 指定刷盘策略为异步刷盘
flushDiskTypeASYNC_FLUSH
# 指定Name Server的地址
namesrvAddr10.70.20.11:9876;10.70.20.12:9876修改broker-b-s.properties将该配置文件内容修改为如下
brokerClusterNameDefaultCluster
# 指定这是另外一个master-slave集群
brokerNamebroker-b
# slave的brokerId为非0
brokerId1
deleteWhen04
fileReservedTime48
# 指定当前broker为slave
brokerRoleSLAVE
flushDiskTypeASYNC_FLUSH
namesrvAddr192.168.59.164:9876;192.168.59.165:9876
# 指定Broker对外提供服务的端口即Broker与producer与consumer通信的端口。默认10911。由于当前主机同时充当着master1与slave2而前面的master1使用的是默认端口。这里需要将这两个端口加以区分以区分出master1与slave2
listenPort11911
# 指定消息存储相关的路径。默认路径为~/store目录。由于当前主机同时充当着master1与slave2master1使用的是默认路径这里就需要再指定一个不同路径
storePathRootDir~/store-s
storePathCommitLog~/store-s/commitlog
storePathConsumeQueue~/store-s/consumequeue
storePathIndex~/store-s/index
storeCheckpoint~/store-s/checkpoint
abortFile~/store-s/abort4、克隆生成rocketmqOS2
克隆rocketmqOS1主机并修改配置。指定主机名为rocketmqOS2。
5、修改rocketmqOS2配置文件
对于rocketmqOS2主机同样需要修改rocketMQ解压目录的conf目录的子目录2m-2s-async中的两个配置文件。
修改broker-b.properties将该配置文件内容修改为如下
brokerClusterNameDefaultCluster
brokerNamebroker-b
brokerId0
deleteWhen04
fileReservedTime48
brokerRoleASYNC_MASTER
flushDiskTypeASYNC_FLUSH
namesrvAddr10.70.20.12:9876;10.70.20.11:9876修改broker-a-s.properties将该配置文件内容修改为如下
brokerClusterNameDefaultCluster
brokerNamebroker-a
brokerId1
deleteWhen04
fileReservedTime48
brokerRoleSLAVE
flushDiskTypeASYNC_FLUSH
namesrvAddr192.168.59.164:9876;192.168.59.165:9876
listenPort11911
storePathRootDir~/store-s
storePathCommitLog~/store-s/commitlog
storePathConsumeQueue~/store-s/consumequeue
storePathIndex~/store-s/index
storeCheckpoint~/store-s/checkpoint
abortFile~/store-s/abort6、启动服务器
启动NameServer集群
分别启动rocketmqOS1与rocketmqOS2两个主机中的NameServer。启动命令完全相同。
nohup sh bin/mqnamesrv tail -f ~/logs/rocketmqlogs/namesrv.log启动两个Master
(分别启动rocketmqOS1与rocketmqOS2两个主机中的broker master。注意它们指定所要加载的配置文件是不同的。)
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties tail -f ~/logs/rocketmqlogs/broker.lognohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties tail -f ~/logs/rocketmqlogs/broker.log启动两个Slave
(分别启动rocketmqOS1与rocketmqOS2两个主机中的broker slave。注意它们指定所要加载的配置文件是不同的.)
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties tail -f ~/logs/rocketmqlogs/broker.lognohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties tail -f ~/logs/rocketmqlogs/broker.log7、测试
按上一篇博客最后的方法进行测试即可https://blog.csdn.net/zzyyllll/article/details/129168549?spm1001.2014.3001.5501 点进集群里显示四台即表示配置集群成功。