Linux环境快速搭建RocketMQ双Master模式
第一步:修改/etc/hosts文件

重启网卡:service network restart
相互ping一下,在121机器上ping 192.168.99.121 ping rocketmq-nameserver2 ping rocketmq-master2 。 122机器上也一样。

第二步,解压并创建存储路径
1、如果下载下来的是源码,那编译源码,具体如何编译源码,参考官网https://rocketmq.incubator.apache.org/docs/quick-start/
2、如果下载下来的是编译后的压缩包,则解压:
tar -xvf alibaba-rocketmq-4.1.0.tar.gz
3、创建文件保存路径:
mkdir -p recketmq/store/{commitlog,consumequeue,index,checkpoint,abort}
第三步,配置文件
用Vim编辑或者用gedit编辑,按照相应的模式编辑相应的文件,这里选的是双Master模式,所以选择rocketmq/conf/2m-noslave/文件夹下面的文件。
因为有两个master主节点,所以主节点1启动依赖broker-a.properties,主节点2启动依赖broker-b.properties,如果是三个Master,那么还会有一个broker-c.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 #删除文件时间点,默认凌晨 0点 deleteWhen=00 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/opt/rocketmq/data #commitLog 存储路径 storePathCommitLog=/opt/rocketmq/data/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/opt/rocketmq/data/consumequeue #消息索引存储路径 storePathIndex=/opt/rocketmq/data/index #checkpoint 文件存储路径 storeCheckpoint=/opt/rocketmq/data/checkpoint #abort 文件存储路径 abortFile=/opt/rocketmq/data/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
brokerId=0表示是master,大于0则表示是slave;
另外BrokerName=broker-a要对应;在34机器上是broker-a,在第二台机器37上则是broker-b。分别在34和37上修改broker-a.properties和broker-b.properties。
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876。这个要和之前配置的名称相互对应。
对外服务的通信端口是9876。
文件默认大小是1G,当写满后再自动创建。#commitLog每个文件的大小默认1G
第四步,修改日志配置文件
在创建的软连接文件夹rocketmq下创建一个logs目录 mkdir /usr/rocketmq/logs(也可以不创建,系统会自动创建。)
然后执行cd /usr/rocketmq/conf 进入conf文件夹,然后 sed -i 's#${user.home}#/usr/rocketmq#g' *.xml进行日志文件的替换,sed是linux的替换命令。两台机器同样操作。
第五步,修改启动脚本中的JVM参数
因为我们之前将nameServer和broker放在了同一台机器上,所以需要分别对nameServer和broker进行jvm的性能调优。生产环境默认即可不要修改。
1)broker的调优
vi /usr/rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m "
2)nameserver的调优
vi /usr/rocketmq/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m"
注意,在这里我将JVM的堆的初始化和最大大小统一设置为1G,并将新生代大小设置为512M。主要是考虑到我的虚拟机内存,实际上在线上是可以走默认的4G堆内存的。
第六步,启动NameServer
启动两台机器的NameServer:先启动两台机器的NameServer,再启动两台机器的Borker,关机的时候顺序相反,先关闭两台机器的Broker,再关闭两台机器的Nameserver。
# cd /usr/rocketmq/bin
# nohup sh mqnamesrv &
上面这条命令nohup是起一个守护线程。
mqadnin是管理员命令,mqfiltersrv是rocketmq的单独组件,mqnamesrv是NameServer,mqbroker是Broker。
查看进程:
jps
查看状态:
# tail -f -n 500 /usr/rocketmq/logs/rocketmqlogs/broker.log
# tail -f -n 500 /usr/rocketmq/logs/rocketmqlogs/namesrv.log
第七步,启动broker
启动BrokerServer A 192.168.99.121和BrokerServer B 192.168.99.122
启动BrokerServer A 192.168.99.121
nohup sh mqbroker -c /opt/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
netstat -ntlp
jps
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
启动BrokerServer B 192.168.99.122
nohup sh mqbroker -c /opt/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
netstat -ntlp
jps
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
浙公网安备 33010602011771号