Linux RocketMQ双主双从,Centos7 RocketMQ4集群(双主双从)
================================
©Copyright 蕃薯耀 2020-12-28
http://fanshuyao.iteye.com/
一、Linux RocketMQ单机版安装配置和使用
Linux RocketMQ安装配置和使用,Centos7 RocketMQ4安装配置,见:
https://www.iteye.com/blog/fanshuyao-2518286
二、RocketMQ集群搭建官网中文说明文档
#集群 https://rocketmq-1.gitbook.io/rocketmq-connector/quick-start/qian-qi-zhun-bei/ji-qun-huan-jing
#其它 https://rocketmq-1.gitbook.io/rocketmq-connector/
三、RocketMQ集群说明
1、多Master模式
一个集群无Slave,全是Master,例如2个Master或者3个Master,这种模式的优缺点如下:
优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。
2、多Master多Slave模式-异步复制
每个Master配置一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:
优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;
缺点:Master宕机,磁盘损坏情况下会丢失少量消息。
3、多Master多Slave模式-同步双写
每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:
优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;
缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的RT会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。
四、默认端口
nameserver默认使用9876端口
master默认使用10911端口
slave默认使用11011端口
正式开始:
五、RocketMQ双主双从(同步),配置文件复制及说明:
1、创建自定义的配置文件目录:
mkdir -p /java/rocketmq4/myconf
复制双主双从(同步)配置文件:
cp /java/rocketmq4/conf/2m-2s-sync/* /java/rocketmq4/myconf
回到自定义配置文件目录,查看复制的配置文件:
[root@host_132 2m-2s-sync]# cd /java/rocketmq4/myconf [root@host_132 myconf]# ll 总用量 16 -rw-r--r--. 1 root root 928 12月 25 09:53 broker-a.properties -rw-r--r--. 1 root root 922 12月 25 09:53 broker-a-s.properties -rw-r--r--. 1 root root 928 12月 25 09:53 broker-b.properties -rw-r--r--. 1 root root 922 12月 25 09:53 broker-b-s.properties
2、集群在2台服务器进行(最好使用4台,不然后面配置文件目录冲突或者端口冲突,总有一个broker启动失败,很折腾人)
192.168.170.128:部署broker-a和broker-b-s
192.168.170.129:部署broker-b和broker-a-s
broker-a:为主1
broker-a-s:为主1的从
broker-b:为主2
broker-b-s:为主2的从
3、RocketMQ如何区分主从(提前说明,可忽略,后面配置文件修改需要用到):
brokerClusterName:为集群的名称,名称相同的表示同一个集群,无论是主机还是从机,都要设置成一样的。
brokerClusterName=myRocketMQ
brokerName:主从配对,相同名称的broker才能做主从设置
brokerName=broker-a
brokerId:用于标识主从关系,0为主,其他大于0的为从(不能小于0)。
一般master设置0,slave设置1。Master角色的Broker支持读和写,Slave角色的Broker仅支持读,也就是Producer只能和Master角色的Broker连接写人消息:Consumer可以连接Master角色的Broker,也可以连接Slave角色的Broker来读取消息。
#Master节点设置 brokerId=0 #Slave节点设置 #brokerId=1
六、RocketMQ双主双从(同步),备份日志文件及修改存放目录(两个服务器都要修改):
修改前,先备份
cp /java/rocketmq4/conf/logback_broker.xml /java/rocketmq4/conf/logback_broker.xml.bak cp /java/rocketmq4/conf/logback_namesrv.xml /java/rocketmq4/conf/logback_namesrv.xml.bak cp /java/rocketmq4/conf/logback_tools.xml /java/rocketmq4/conf/logback_tools.xml.bak
修改日志的文件存放位置:
sed -i "s/\${user.home}/\/java\/rocketmq4/g" /java/rocketmq4/conf/logback_broker.xml sed -i "s/\${user.home}/\/java\/rocketmq4/g" /java/rocketmq4/conf/logback_namesrv.xml sed -i "s/\${user.home}/\/java\/rocketmq4/g" /java/rocketmq4/conf/logback_tools.xml
修改后的日志存放位置:
/java/rocketmq4/logs/rocketmqlogs
七、RocketMQ双主双从(同步),配置文件修改:
服务器1(192.168.170.128)的配置:
1、删除192.168.170.128无用的配置
[root@host_132 myconf]# rm -f broker-a-s.properties [root@host_132 myconf]# rm -f broker-b.properties [root@host_132 myconf]# ll 总用量 8 -rw-r--r--. 1 root root 928 12月 25 09:53 broker-a.properties -rw-r--r--. 1 root root 922 12月 25 09:53 broker-b-s.properties
2、创建各种文件存储路径,放master:
mkdir -p /java/rocketmq4/master/store/ mkdir -p /java/rocketmq4/master/store/commitlog mkdir -p /java/rocketmq4/master/store/consumequeue mkdir -p /java/rocketmq4/master/store/index
因为在同一个服务器要启动两个broker,区分一个主从配置文件的文件夹,slave放在/slave(不然文件冲突,会导致broker启动失败)
mkdir -p /java/rocketmq4/slave/store/ mkdir -p /java/rocketmq4/slave/store/commitlog mkdir -p /java/rocketmq4/slave/store/consumequeue mkdir -p /java/rocketmq4/slave/store/index
3、broker-a.properties配置文件内容:
位置:/java/rocketmq4/myconf/broker-a.properties
需要特别注意的配置项(主从在某些配置项存在不同的配置):
brokerClusterName:集群的名称
brokerName:broker的名称,主从的名称是一样的
brokerId:区分主从,0表示是主机,1表示是从机(大于0都是从机,可以设置2、3)
namesrvAddr:NameServer的服务地址,需要修改自己的
listenPort:监听的端口,如果一台服务启动两个broker或者以上,请一定要修改该端口
storePathRootDir:各类文件的存储根路径,这个也要特别注意,如果一台服务启动两个broker或者以上,请一定要修改不同的目录,而且要先创建相应的目录,不然文件冲突,导致某一个broker一直启动失败
brokerRole:broker的角色,区分主、从、主异步、主同步
flushDiskType:刷盘方式(ASYNC_FLUSH:异步刷盘、SYNC_FLUSH:同步刷盘)
配置的内容:
#broker集群名称,用于划分broker brokerClusterName=myRocketMQ #broker名称,用于主从配对,相同名称的broker才能做主从设置 brokerName=broker-a #用于标识主从关系,0为主,其他大于0的为从(不能小于0)master设置0,slave设置1。Master角色的Broker支持读和写,Slave角色的Broker仅支持读,也就是Producer只能和Master角色的Broker连接写人消息:Consumer可以连接Master角色的Broker,也可以连接Slave角色的Broker来读取消息。 #Master节点设置 brokerId=0 #Slave节点设置 #brokerId=1 #name server服务器地址及端口,可以是多个,分号隔开 namesrvAddr=192.168.170.128:9876;192.168.170.129:9876 #创建topic时,若未指定topic下的队列数,则取该默认值作为默认队列数 defaultTopicQueueNums=8 #是否自动创建默认topic,生产需保持关闭 autoCreateTopicEnable=true #是否自动创建topic的订阅组,默认开启,生产需保持关闭 autoCreateSubscriptionGroup=true #broker服务监听端口 listenPort=10911 #未消费的持久化消息清理时间点,默认是凌晨4点 deleteWhen=04 #持久化消息保存周期(单位:小时),超过该周期将被清理,默认是48小时 fileReservedTime=72 #单个commitLog文件的大小限制(单位:字节),默认是1G mapedFileSizeCommitLog=1073741824 #单个consumeQueue大小限制(存储的消息条数 * 每条消息的索引大小20),默认存30W条 mapedFileSizeConsumeQueue=8000000 #存储使用率阀值,当使用率超过阀值时,将拒绝发送消息请求 diskMaxUsedSpaceRatio=88 #持久化消息存储根路径 storePathRootDir=/java/rocketmq4/master/store #commitLog文件存储路径 storePathCommitLog=/java/rocketmq4/master/store/commitlog #消费队列文件存储路径 storePathConsumeQueue=/java/rocketmq4/master/store/consumequeue #消息索引文件存储路径 storePathIndex=/java/rocketmq4/master/store/index #checkpoint文件存储路径 storeCheckpoint=/java/rocketmq4/master/store/checkpoint #abort文件存储路径 abortFile=/java/rocketmq4/master/store/abort #最大消息大小限制(单位:字节) maxMessageSize=65536 #commitLog最少刷盘page数 flushCommitLogLeastPages=4 #consumeQueue最少刷盘page数 flushConsumeQueueLeastPages=2 #commitLog刷盘间隔时间 flushCommitLogThoroughInterval=10000 #consumeQueue刷盘间隔时间 flushConsumeQueueThoroughInterval=60000 #处理消息发送线程池大小 sendMessageThreadPoolNums=128 #处理消息拉取线程池大小 pullMessageThreadPoolNums=128 #broker角色(SYNC_MASTER:同步双写Master、ASYNC_MASTER:异步复制Master、SLAVE:Slave) brokerRole=SYNC_MASTER #Slave节点设置 #brokerRole=SLAVE #刷盘方式(ASYNC_FLUSH:异步刷盘、SYNC_FLUSH:同步刷盘) flushDiskType=ASYNC_FLUSH
4、broker-b-s.properties配置文件内容(部署在同一台服务器,需要修改成不同的端口):11011
文件位置:/java/rocketmq4/myconf/broker-b-s.properties
和主机不同的配置项:
brokerName
brokerId
listenPort
storePathRootDir
brokerRole
配置的内容:
#broker集群名称,用于划分broker brokerClusterName=myRocketMQ #broker名称,用于主从配对,相同名称的broker才能做主从设置 brokerName=broker-b #用于标识主从关系,0为主,其他大于0的为从(不能小于0)master设置0,slave设置1。Master角色的Broker支持读和写,Slave角色的Broker仅支持读,也就是Producer只能和Master角色的Broker连接写人消息:Consumer可以连接Master角色的Broker,也可以连接Slave角色的Broker来读取消息。 #Slave节点设置 brokerId=1 #name server服务器地址及端口,可以是多个,分号隔开 namesrvAddr=192.168.170.128:9876;192.168.170.129:9876 #创建topic时,若未指定topic下的队列数,则取该默认值作为默认队列数 defaultTopicQueueNums=8 #是否自动创建默认topic,生产需保持关闭 autoCreateTopicEnable=true #是否自动创建topic的订阅组,默认开启,生产需保持关闭 autoCreateSubscriptionGroup=true #broker服务监听端口 listenPort=11011 #未消费的持久化消息清理时间点,默认是凌晨4点 deleteWhen=04 #持久化消息保存周期(单位:小时),超过该周期将被清理,默认是48小时 fileReservedTime=72 #单个commitLog文件的大小限制(单位:字节),默认是1G mapedFileSizeCommitLog=1073741824 #单个consumeQueue大小限制(存储的消息条数 * 每条消息的索引大小20),默认存30W条 mapedFileSizeConsumeQueue=8000000 #存储使用率阀值,当使用率超过阀值时,将拒绝发送消息请求 diskMaxUsedSpaceRatio=88 #持久化消息存储根路径 storePathRootDir=/java/rocketmq4/slave/store #commitLog文件存储路径 storePathCommitLog=/java/rocketmq4/slave/store/commitlog #消费队列文件存储路径 storePathConsumeQueue=/java/rocketmq4/slave/store/consumequeue #消息索引文件存储路径 storePathIndex=/java/rocketmq4/slave/store/index #storeCheckpoint文件存储路径 storeCheckpoint=/java/rocketmq4/slave/store/checkpoint #abortFile文件存储路径 abortFile=/java/rocketmq4/slave/store/abort #最大消息大小限制(单位:字节) maxMessageSize=65536 #commitLog最少刷盘page数 flushCommitLogLeastPages=4 #consumeQueue最少刷盘page数 flushConsumeQueueLeastPages=2 #commitLog刷盘间隔时间 flushCommitLogThoroughInterval=10000 #consumeQueue刷盘间隔时间 flushConsumeQueueThoroughInterval=60000 #处理消息发送线程池大小 sendMessageThreadPoolNums=128 #处理消息拉取线程池大小 pullMessageThreadPoolNums=128 #Slave节点设置 brokerRole=SLAVE #刷盘方式(ASYNC_FLUSH:异步刷盘、SYNC_FLUSH:同步刷盘) flushDiskType=ASYNC_FLUSH
服务器2(192.168.170.129)的配置:
1、删除192.168.170.129无用的配置
[root@host_132 myconf]# rm -f broker-a.properties [root@host_132 myconf]# rm -f broker-b-s.properties [root@host_132 myconf]# [root@host_132 myconf]# ll 总用量 8 -rw-r--r--. 1 root root 922 12月 25 10:39 broker-a-s.properties -rw-r--r--. 1 root root 928 12月 25 10:39 broker-b.properties
2、broker-b.properties配置文件内容:
文件路径:/java/rocketmq4/myconf/broker-b.properties
配置内容:
#broker集群名称,用于划分broker brokerClusterName=myRocketMQ #broker名称,用于主从配对,相同名称的broker才能做主从设置 brokerName=broker-b #用于标识主从关系,0为主,其他大于0的为从(不能小于0)master设置0,slave设置1。Master角色的Broker支持读和写,Slave角色的Broker仅支持读,也就是Producer只能和Master角色的Broker连接写人消息:Consumer可以连接Master角色的Broker,也可以连接Slave角色的Broker来读取消息。 #Master节点设置 brokerId=0 #name server服务器地址及端口,可以是多个,分号隔开 namesrvAddr=192.168.170.128:9876;192.168.170.129:9876 #创建topic时,若未指定topic下的队列数,则取该默认值作为默认队列数 defaultTopicQueueNums=8 #是否自动创建默认topic,生产需保持关闭 autoCreateTopicEnable=true #是否自动创建topic的订阅组,默认开启,生产需保持关闭 autoCreateSubscriptionGroup=true #broker服务监听端口 listenPort=10911 #未消费的持久化消息清理时间点,默认是凌晨4点 deleteWhen=04 #持久化消息保存周期(单位:小时),超过该周期将被清理,默认是48小时 fileReservedTime=72 #单个commitLog文件的大小限制(单位:字节),默认是1G mapedFileSizeCommitLog=1073741824 #单个consumeQueue大小限制(存储的消息条数 * 每条消息的索引大小20),默认存30W条 mapedFileSizeConsumeQueue=8000000 #存储使用率阀值,当使用率超过阀值时,将拒绝发送消息请求 diskMaxUsedSpaceRatio=88 #持久化消息存储根路径 storePathRootDir=/java/rocketmq4/master/store #commitLog文件存储路径 storePathCommitLog=/java/rocketmq4/master/store/commitlog #消费队列文件存储路径 storePathConsumeQueue=/java/rocketmq4/master/store/consumequeue #消息索引文件存储路径 storePathIndex=/java/rocketmq4/master/store/index #checkpoint文件存储路径 storeCheckpoint=/java/rocketmq4/master/store/checkpoint #abort文件存储路径 abortFile=/java/rocketmq4/master/store/abort #最大消息大小限制(单位:字节) maxMessageSize=65536 #commitLog最少刷盘page数 flushCommitLogLeastPages=4 #consumeQueue最少刷盘page数 flushConsumeQueueLeastPages=2 #commitLog刷盘间隔时间 flushCommitLogThoroughInterval=10000 #consumeQueue刷盘间隔时间 flushConsumeQueueThoroughInterval=60000 #处理消息发送线程池大小 sendMessageThreadPoolNums=128 #处理消息拉取线程池大小 pullMessageThreadPoolNums=128 #broker角色(SYNC_MASTER:同步双写Master、ASYNC_MASTER:异步复制Master、SLAVE:Slave) brokerRole=SYNC_MASTER #刷盘方式(ASYNC_FLUSH:异步刷盘、SYNC_FLUSH:同步刷盘) flushDiskType=ASYNC_FLUSH
3、broker-a-s.properties配置文件内容:
文件路径:/java/rocketmq4/myconf/broker-a-s.properties
配置内容:
#broker集群名称,用于划分broker brokerClusterName=myRocketMQ #broker名称,用于主从配对,相同名称的broker才能做主从设置 brokerName=broker-a #用于标识主从关系,0为主,其他大于0的为从(不能小于0)master设置0,slave设置1。Master角色的Broker支持读和写,Slave角色的Broker仅支持读,也就是Producer只能和Master角色的Broker连接写人消息:Consumer可以连接Master角色的Broker,也可以连接Slave角色的Broker来读取消息。 #Slave节点设置 brokerId=1 #name server服务器地址及端口,可以是多个,分号隔开 namesrvAddr=192.168.170.128:9876;192.168.170.129:9876 #创建topic时,若未指定topic下的队列数,则取该默认值作为默认队列数 defaultTopicQueueNums=8 #是否自动创建默认topic,生产需保持关闭 autoCreateTopicEnable=true #是否自动创建topic的订阅组,默认开启,生产需保持关闭 autoCreateSubscriptionGroup=true #broker服务监听端口 listenPort=11011 #未消费的持久化消息清理时间点,默认是凌晨4点 deleteWhen=04 #持久化消息保存周期(单位:小时),超过该周期将被清理,默认是48小时 fileReservedTime=72 #单个commitLog文件的大小限制(单位:字节),默认是1G mapedFileSizeCommitLog=1073741824 #单个consumeQueue大小限制(存储的消息条数 * 每条消息的索引大小20),默认存30W条 mapedFileSizeConsumeQueue=8000000 #存储使用率阀值,当使用率超过阀值时,将拒绝发送消息请求 diskMaxUsedSpaceRatio=88 #持久化消息存储根路径 storePathRootDir=/java/rocketmq4/slave/store #commitLog文件存储路径 storePathCommitLog=/java/rocketmq4/slave/store/commitlog #消费队列文件存储路径 storePathConsumeQueue=/java/rocketmq4/slave/store/consumequeue #消息索引文件存储路径 storePathIndex=/java/rocketmq4/slave/store/index #storeCheckpoint文件存储路径 storeCheckpoint=/java/rocketmq4/slave/store/checkpoint #abortFile文件存储路径 abortFile=/java/rocketmq4/slave/store/abort #最大消息大小限制(单位:字节) maxMessageSize=65536 #commitLog最少刷盘page数 flushCommitLogLeastPages=4 #consumeQueue最少刷盘page数 flushConsumeQueueLeastPages=2 #commitLog刷盘间隔时间 flushCommitLogThoroughInterval=10000 #consumeQueue刷盘间隔时间 flushConsumeQueueThoroughInterval=60000 #处理消息发送线程池大小 sendMessageThreadPoolNums=128 #处理消息拉取线程池大小 pullMessageThreadPoolNums=128 #Slave节点设置 brokerRole=SLAVE #刷盘方式(ASYNC_FLUSH:异步刷盘、SYNC_FLUSH:同步刷盘) flushDiskType=ASYNC_FLUSH
七、RocketMQ双主双从(同步),启动测试:
1、先在两台服务器分别启动nameServer
nohup sh mqnamesrv &
2、在【192.168.170.128】启动master-a和broker-b-s(&符号表示后台运行)
启动master-a:
nohup sh mqbroker -c /java/rocketmq4/myconf/broker-a.properties &
启动broker-b-s:
nohup sh mqbroker -c /java/rocketmq4/myconf/broker-b-s.properties &
查看进程:
ps -ef | grep BrokerStartup
查看日志文件:
tail -f /java/rocketmq4/logs/rocketmqlogs/broker.log
3、在【192.168.170.129】启动master-b和broker-a-s
启动master-b:
nohup sh mqbroker -c /java/rocketmq4/myconf/broker-b.properties &
启动broker-a-s:
nohup sh mqbroker -c /java/rocketmq4/myconf/broker-a-s.properties &
查看集群信息,192.168.170.128:9876 为nameServer
sh mqadmin clusterList -n 192.168.170.128:9876
查看集群信息结果:
[root@host_132 store]# sh mqadmin clusterList -n 192.168.170.128:9876 RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0). RocketMQLog:WARN Please initialize the logger system properly. #Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE myRocketMQ broker-a 0 192.168.170.128:10911 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 446914.70 0.4031 myRocketMQ broker-a 1 192.168.170.129:11011 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 446914.70 0.3966 myRocketMQ broker-b 0 192.168.170.129:10911 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 446914.70 0.3966 myRocketMQ broker-b 1 192.168.170.128:11011 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 446914.70 0.4031
八、RocketMQ双主双从(同步),关闭rocketMQ
sh mqshutdown broker sh mqshutdown namesrv
九、RocketMQ双主双从(同步),启动失败问题解决
查看broker启动失败的错误日志(此处是修改了日志路径的,root用户默认是在:/root/logs/rocketmqlogs/broker.log):
tail -f /java/rocketmq4/logs/rocketmqlogs/broker.log
1、RocketMQ Broker端口和目录冲突导致启动失败问题解决
Try to shutdown service thread:AllocateMappedFileService started:true lastThread:Thread[AllocateMappedFileService,5,main]
Try to shutdown service thread:PullRequestHoldService started:false lastThread:null
详细错误内容:
[root@host_132 myconf]# tail -f /java/rocketmq4/logs/rocketmqlogs/broker.log 2020-12-25 16:05:30 INFO main - dLegerGroup= 2020-12-25 16:05:30 INFO main - dLegerPeers= 2020-12-25 16:05:30 INFO main - dLegerSelfId= 2020-12-25 16:05:30 INFO main - preferredLeaderId= 2020-12-25 16:05:30 INFO main - isEnableBatchPush=false 2020-12-25 16:05:30 INFO main - Try to start service thread:AllocateMappedFileService started:false lastThread:null 2020-12-25 16:05:30 INFO main - Try to shutdown service thread:AllocateMappedFileService started:true lastThread:Thread[AllocateMappedFileService,5,main] 2020-12-25 16:05:30 INFO main - shutdown thread AllocateMappedFileService interrupt true 2020-12-25 16:05:30 INFO main - join thread AllocateMappedFileService elapsed time(ms) 7 90000 2020-12-25 16:05:30 INFO main - Try to shutdown service thread:PullRequestHoldService started:false lastThread:null
错误点1:配置文件
双主双从中,如果同一个服务器部署启动了2个broker,配置文件需要注意修改的地方:
#broker服务监听端口,同一个服务器中,主从的端口不能一样
listenPort=11011
#持久化消息存储根路径,同一个服务器中,主从的端口不能一样
storePathRootDir=/java/rocketmq4/slave/store
错误点2:产生了lock锁定
由于第一次启动失败,导致产生相应的lock文件,所以需要清除之前产生的文件(注意:生产环境不能这样操作)
如果日志存放路径没有修改,则删除:
root用户在/root目录下,其他用户在/home目录
rm -rf /root/store/*
如果在多台服务器,分别有主从配置目录,请一定要仔细全部删除,然后重新启动。
rm -rf /java/rocketmq4/master/store/* rm -rf /java/rocketmq4/slave/store/*
另外需要注意的是,不使用kill -9 pid的方式结束进程,因为启动时产生了lock文件,这样操作可能导致下次启动失败。
而是使用命令进行关闭:
sh mqshutdown broker sh mqshutdown namesrv
错误点3:特别需要注意:
之前创建相关配置目录时,创建了很多目录,导致broker一直启动失败,而且没有明确的错误,只提示:
Try to shutdown service thread:AllocateMappedFileService started:true lastThread:Thread[AllocateMappedFileService,5,main]
Try to shutdown service thread:PullRequestHoldService started:false lastThread:null
mkdir -p /java/rocketmq4/master/store mkdir -p /java/rocketmq4/master/store/commitlog mkdir -p /java/rocketmq4/master/store/consumequeue mkdir -p /java/rocketmq4/master/store/index mkdir -p /java/rocketmq4/master/store/checkpoint mkdir -p /java/rocketmq4/master/store/abort
最后取消了相关文件的配置,查看store,有些配置是文件来的:
[root@host_132 store]# ll 总用量 12 -rw-r--r--. 1 root root 0 12月 29 10:33 abort -rw-r--r--. 1 root root 4096 12月 29 10:33 checkpoint drwxr-xr-x. 2 root root 6 12月 29 10:32 commitlog drwxr-xr-x. 2 root root 193 12月 29 10:33 config -rw-r--r--. 1 root root 4 12月 29 10:33 lock
问题原因:abort、checkpoint是文件来的,但创建成了目录,导致一直启动失败,这2个文件系统会自动创建。
commitlog、consumequeue、index是目录,config是目录,但config自动创建的。
启动后,如果提示consumequeue不存在:
Error when measuring disk space usage, file doesn't exist on this path: /java/rocketmq4/master/store/consumequeue
可以直接创建一个文件夹(目录)解决报错:
mkdir -p /java/rocketmq4/master/store/consumequeue
consumequeue这个是目录,千万不要创建成文件类型,不然后面可能报RocketMQ硬盘满了的错误:the broker's disk is full
Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14 DESC:
service not available now. It may be caused by one of the following reasons:
the broker's disk is full [CL: 0.41 CQ: 0.41 INDEX: 0.41], messages are put to the slave, message store has been shut down, etc.
2、、RocketMQ 默认配置文件内存过大,导致启动失败问题解决
见:https://www.iteye.com/blog/fanshuyao-2518286
十、rocketmq-console安装和使用
rocketmq-console是RocketMQ的运行监控管理系统
1、下载地址:rocketmq-externals-rocketmq-console-1.0.0.zip
https://github.com/apache/rocketmq-externals/releases
源代码地址:
https://github.com/apache/rocketmq-externals
千万不要下载最新的源码运行,因为会报错:、
最版本的代码下载下来会报错:
java.lang.IllegalStateException: defaultMQAdminExt should be init before you get this at org.apache.rocketmq.console.service.client.MQAdminInstance.threadLocalMQAdminExt(MQAdminInstance.java:39) at org.apache.rocketmq.console.service.client.MQAdminExtImpl.examineBrokerClusterInfo(MQAdminExtImpl.java:204) at org.apache.rocketmq.console.task.DashboardCollectTask.collectBroker(DashboardCollectTask.java:170)
2、配置荐修改:
application.properties
server.port=4000 rocketmq.config.namesrvAddr=192.168.170.128:9876;192.168.170.129:9876 #修改成windows的目录,在eclipse运行 rocketmq.config.dataPath=E:/datas/rocketmq-console/data
rocketmq.config.namesrvAddr必须修改成自己的NameServer地址,多个通过英文分号分隔
3、rocketmq-console在eclipse中启动运行(或者打包成jar包运行)
rocketmq-console是Java Springboot项目,依赖Jdk8和maven,打包需要用到。
访问地址:
http://127.0.0.1:4000/
运行效果图:
================================
©Copyright 蕃薯耀 2020-12-28
http://fanshuyao.iteye.com/
相关推荐
rocketmq设置开机启动脚本
### 在CentOS-6.8 64bit下安装...通过以上步骤,可以在CentOS-6.8 64bit系统上成功安装并配置RocketMQ 4..2.0集群,实现双主双从同步复制。在整个过程中需要注意每个步骤的具体细节,确保系统的稳定性和可靠性。
- 首先确保系统是基于Linux发行版,如Ubuntu、CentOS等。 - 安装Java开发环境,因为RocketMQ依赖Java运行。可以使用`sudo apt-get install default-jdk`或`yum install java-1.8.0-openjdk-devel`命令安装Java 8或...
至于监控平台,RocketMQ提供了名为RocketMQ Monitor的监控工具,用于实时查看和分析RocketMQ集群的状态,包括消息发送与消费速率、队列状态、broker性能指标等。监控平台的部署步骤应该会包括安装JMX工具、配置监控...
然后,Producer和Consumer应用可以通过Java API或者命令行工具与RocketMQ集群进行交互,实现消息的发送和接收。 总之,理解RocketMQ的原理和编译过程,以及正确配置Linux环境,对于开发者来说至关重要。这不仅可以...
RocketMQ-Exporter则是为了监控RocketMQ集群状态而设计的一个工具,通常与Prometheus等监控系统配合使用,提供度量指标的收集和暴露。 标题和描述中提到的"rocketmq-exporter脚本",是指一个用于在CentOS 6和CentOS...
安装RocketMQ的Java客户端库,通过编程方式与RocketMQ集群交互。使用`Maven`或`Gradle`添加依赖,并编写发送和消费消息的代码。 8. **监控与管理**: RocketMQ提供了一个Web管理界面,可以显示集群状态、队列信息...
Centos7下搭建Rocketmq4.3中间件,配置监控台 04 Centos7下搭建ZooKeeper3.4中间件,常用命令总结 05 Centos7下搭建ElasticSearch中间件,常用接口演示 06 Centos7下搭建Nginx,FastDFS文件管理中间件 07 Centos7下...
【Linux软件全家桶.rar】这个压缩包集合了多种在Linux CentOS 7系统中常见的软件,为用户提供了便捷的一站式安装体验。以下是这些软件的主要功能和应用知识点: 1. **Tomcat**:Apache Tomcat是一款开源的Java ...
- **RocketMQ集群**:4台服务器实现消息传递,确保消息不丢失。 - **Nagios**:监控服务器状态,异常时发送通知。 - **队列处理**:应对高并发请求,通过队列异步处理,防止服务器崩溃。 5. **架构逻辑设计** -...
- **RocketMQ集群**:4台RocketMQ 3集群作为消息总线,确保消息不丢失。 - **Nagios**:1台Nagios 3.5监控服务器,异常时发送报警。 - **队列处理**:通过队列异步处理高并发请求,防止服务器过载。 **2.4 架构逻辑...
### 从无到有搭建中小型互联网公司后台服务架构和运维架构 #### 一、课程概述与目标 本课程旨在帮助学员全面理解并掌握构建中小型互联网公司后台服务架构和运维架构所需的技能与工具。课程覆盖了从理论到实践的全...