死磕中间件rocketmq消息中间件的集群搭建
rocketMQ的集群搭建
-
rocketmq的下载地址点击下载
-
把下载好的上传到服务器上,介绍一个命令 rz -y 从你本地上传到服务器上-y的意思是有就删除然后重新上传上来
-
解压rocketmq的zip文件 到指定的目录下
unzip rocketmq-all-4.7.0-bin-release.zip -d /usr/local
-
新建一个rocketmq目录 为了好定位不然服务多了不好区分
mkdir rocketmq
-
将解压之后的rocketmq-all-4.7.0-bin-release 的目录剪切rocketmq目录中
mv rocketmq-all-4.7.0-bin-release /usr/local/rocketmq
-
rocketmq的启动 进入rocketMQ解压目录下的bin文件夹
nohup sh mqnamesrv & 关闭是:sh mqshutdown namesrv
-
启动成功或者失败的日志 在rocketmq的logs目录中
tail -f ~/logs/rocketmqlogs/namesrv.log
-
启动broker的命令
nohup sh mqbroker -n 192.168.109.131:9876 &
关闭的命令:sh mqshutdown broker如果启动失败那么就是broker的JVM分配过大,修改rocketmq的bin目录下的 runserver.sh
然后修改runbroker.sh 修改为:
这样就可以成功启动了
-
测试RocketMQ 用脚本文件测试生产者和消费者
生产者: 开启第一个终端 # 设置环境变量 export NAMESRV_ADDR=192.168.109.131:9876 #实用安装包的Demo发送消息 sh tools.sh org.apache.rocketmq.example.quickstart.Producer 消费者: 使用第二个终端 #设置环境变量 export NAMESRV_ADDR=192.168.109.131:9876 sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
集群的搭建
设置环境变量
vim /etc/profile#set rocketmq
export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.7.0-bin-release
PATH=ROCKETMQHOME/bin:{ROCKETMQ_HOME}/bin:ROCKETMQHOME/bin:PATH使配置文件生效:
source /etc/profile
创建生产者发送消息存放的路径:
mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
双主双从同步模式
配置文件Master1:
vim /usr/local/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync/broker-a.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=192.168.109.134:9876;192.168.109.135:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口, listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/local/rocketmq/store/broker-a #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/broker-a/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/broker-a/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/broker-a/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 异步复制Master #- SYNC_MASTER 同步双写Master #- SLAVE brokerRole=SYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128
配置slave2
vim /usr/local/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync/broker-b-s.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=192.168.109.134:9876;192.168.109.135:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口, listenPort=10920 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/local/rocketmq/store/broker-b-s #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/broker-b-s/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/broker-b-s/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/broker-b-s/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 异步复制Master #- SYNC_MASTER 同步双写Master #- SLAVE brokerRole=SLAVE #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128
配置Master2 去第二台服务器上去配置
vim /usr/local/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync/broker-b.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=192.168.109.134:9876;192.168.109.135:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口, listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/local/rocketmq/store/broker-a #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/broker-a/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/broker-a/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/broker-a/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 异步复制Master #- SYNC_MASTER 同步双写Master #- SLAVE brokerRole=SYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128
配置slave1
vim /usr/local/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync/broker-b-s.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=192.168.109.134:9876;192.168.109.135:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口, listenPort=10920 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/local/rocketmq/store/broker-b-s #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/broker-b-s/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/broker-b-s/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/broker-b-s/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 异步复制Master #- SYNC_MASTER 同步双写Master #- SLAVE brokerRole=SLAVE #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128
以上四个配置都要将原有的几个配置注释或者删除掉
启动集群 nameserver 和淡季一样 nohup sh mqnamesrv & bin目录下 启动集群的broker 第一台服务器上的master1 nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync/broker-a.properties & 启动集群的broker 第一台服务器上的slave2 nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync/broker-b-s.properties & 启动集群的broker 第二台服务器上的master2 nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync/broker-b.properties & 启动集群的broker 第二台服务器上的slave1 nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.7.0-bin-release/conf/2m-2s-sync/broker-a-s.properties &
这样就把双主双从同步模式的rocketmq集群搭建好了,希望能够帮助大家欢迎留言评论~~~~ 下一篇更新rocketmq支持的可视化web端的配置
- 消息中间件RocketMQ(二):使用Docker搭建二主二从集群
- RocketMQ:一个纯java的开源消息中间件--开发测试环境搭建
- zookeeper+activemq+levelDB集群消息中间件搭建
- RocketMQ:一个纯java的开源消息中间件--开发测试环境搭建
- zookeeper+activemq+集群消息中间件搭建
- RocketMQ:一个纯java的开源消息中间件--开发测试环境搭建
- 教你一手如何基于RocketMQ搭建生产级消息集群
- zookeeper+activemq+集群消息中间件搭建
- 【linux】RocketMQ:一个纯java的开源消息中间件--开发测试环境搭建
- 消息中间件——RocketMQ(一) 环境搭建(完整版)
- 【分布式事务】基于RocketMQ搭建生产级消息集群?
- 【分布式事务】基于RocketMQ搭建生产级消息集群?
- Kafka、RabbitMQ、RocketMQ 消息中间件的对比 | 消息发送性能篇
- Kafka、RabbitMQ、RocketMQ 消息中间件的对比 | 消息发送性能篇
- 为什么RocketMQ是金融核心系统消息中间件的第一选择
- 消息队列之kafka(集群搭建)
- 消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型?
- RocketMQ 4.1.0 与 Docker搭建与集群
- 启动RocketMQ消息队列的中间件Broker的时候报错
- activemq集群搭建与多线程消息发送接收案例