rocketmq在linux搭建双master遇到的坑
我的环境 两台阿里云centos7服务器
首先,去官网下载解压包,解压。
然后进入bin目录,需要修改runserver.sh文件和runbroker.sh文件。因为rocketmq默认配置文件需要的内存是非常高的。需要改小点。
就是把那两个文件的这个参数改得小点。改成512m就可以了
然后启动Name Server
nohup sh bin/mqnamesrv &
然后启动broker(有两种方法,我使用的是第二种方法。)
我使用的是第二种方法,也是我亲自成功的。第一种方法我是一直都不成功,很郁闷。困扰我一个星期。
第一种:
先去安装的根目录下执行这个命令,批量创建文件目录。因为下面的配置文件会用到
mkdir -vp store/{commitlog/,consumequeue/,index/,checkpoint/,abort/}
启动broker复杂一点,需要跟配置文件。因为这个配置文件中包含大量的参数,比如brokerName 、namesrvAddr、autoCreateTopicEnable、数据,日志,索引,存放目录 等等。如果你不跟这个配置文件,那你启动的时候就必须在后面一个一个追加参数。麻烦的一比
当然,默认这个配置文件里面的配置是很少的。你需要把原来的删除掉 给我下面的配置信息给copy过去就ok。
nohup sh bin/mqbroker ./conf/2m-noslave/broker-a.properties &
broker-a.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a|broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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 #commitLog 存储路径 storePathCommitLog= /usr/local/rocketmq/store /commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/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=ASYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128
第二种:
在根目录执行这个命令
sh bin/mqbroker -m >broker.p
broker.p
打开这个文件 把我下面的全部复制上去去。替换到原来的
namesrvAddr=你的集群地址 brokerIP1=你的外网地址 brokerName=test-a brokerClusterName=DefaultCluster brokerId=0 autoCreateTopicEnable=true autoCreateSubscriptionGroup=true rejectTransactionMessage=false fetchNamesrvAddrByAddressServer=false transactionTimeOut=3000 transactionCheckMax=5 transactionCheckInterval=60000 storePathRootDir=/root/store storePathCommitLog=/root/store/commitlog flushIntervalCommitLog=500 commitIntervalCommitLog=200 flushCommitLogTimed=false deleteWhen=04 fileReservedTime=72 maxTransferBytesOnMessageInMemory=262144 maxTransferCountOnMessageInMemory=32 maxTransferBytesOnMessageInDisk=65536 maxTransferCountOnMessageInDisk=8 accessMessageInMemoryMaxRatio=40 messageIndexEnable=true messageIndexSafe=false haMasterAddress= brokerRole=ASYNC_MASTER flushDiskType=ASYNC_FLUSH cleanFileForciblyEnable=true transientStorePoolEnable=false
然后启动
nohup sh bin/mqbroker -c broker.p &
查看是否启动成功 有 BrokerStartup 和 NamesrvStartup 则说明启动成功
[root@iZ2zei0nwllapkwklisoncZ apache-rocketmq]# jps 3811 Jps3722 NamesrvStartup 3758 BrokerStartup
关闭
> sh bin/mqshutdown broker The mqbroker(36695) is running... Send shutdown request to mqbroker(36695) OK > sh bin/mqshutdown namesrv The mqnamesrv(36664) is running... Send shutdown request to mqnamesrv(36664) OK
需要注意的是:需要在阿里云上开启三个端口
一个是9876端口 这个是nameServer的端口
一个是10909端口 这个是vip通道的端口
一个是10911端口 这个是broker的端口
坑巨多!!!慢慢发现吧
双master双slave的搭建也很简单。配置文件修改三个参数
slave的brokerName和主的一样。
brokerId要大于0
brokerRole这个值要变成SLAVE