Rocket MQ分为nameserver和broker,双主双从的意思为,两个nameserver和两个broker,同时还有两个broker-slave,作为两个broker的备份。
两个nameserver为双主,broker已master/slave方式交叉部署,这样,在事故发生后可以保证broker的数据完整性。
- RocketMQ使用软件版本为:4.3.2-release,需要将安装程序包上传至安装服务器上
- mv rocketmq-all-4.3.2-bin-release rocketmq-4.3.2
- 修改配置hosts文件,将涉及到的虚拟机IP和hostname写入每台涉及到的虚拟机中。
- 配置jdk1.8的环境变量(模板机自带)如果没有,上传jdk.18.0.144.tar.gz文件,使用root用户,执行tar xf jdk.18.0.144.tar.gz -C /usr/local/,然后配置JAVA环境
- 所有节点均需要创建数据文件夹,请使用以下命令:
$ mkdir -p ~/store/{commitlog,consumequeue,index} |
6.修改配置文件,cd conf/2m-2s-async/ 下的配置文件,文件有broker-a.properties/broker-a-s.properties/broker-b.properties/broker-b-s.properties,需要按照以下对应关系修改配置文件,配置文件修改有一定的对应关系:[假设有4台服务器,分别为:mqnameserver1,mqnameserver2,mqbroker-1,mqbroker-2,配置文件中使用,实际配置时注意替换为IP]
物理机1:nameserver + broker-a[master] + broker-b[slave]
物理机2:nameserver + broker-b[master] + broker-a[slave]
配置文件:broker-a.properties 如下:
#所属集群名字 自定义,需要和开发确认,默认不变 brokerClusterName=DefaultCluster #broker名字,不同配置文件不同(主节点和从节点一致) brokerName=broker-a #0表示Master 大于0表示Slave brokerId=0 #删除文件时间点 默认为0点 deleteWhen=04 #Broker 的角色 brokerRole=ASYNC_MASTER # 刷盘方式:ASYNC_FLUSH 异步刷盘 SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #nameServer地址,分号分割 namesrvAddr=mqnameserver1:9876;mqnameserver2:9876 #brokerIP #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=false #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=false #Broker 对外服务的监听端口 listenPort=10911 #存储路径 storePathRootDir=/home/tomcat/rocketmq/store #消费队列存储路径存储路径 storePathCommitLog=/home/tomcat/rocketmq/store/commitlog #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #刷新commitlog间隔时间 flushIntervalCommitLog=1000 flushCommitLogTimed=false #文件保存时间 默认为48小时 fileReservedTime=72 |
配置文件:broker-a-s.properties 如下:
#所属集群名字 自定义 brokerClusterName=DefaultCluster #broker名字,不同配置文件不同(主节点和从节点一致) brokerName=broker-a #0表示Master 大于0表示Slave brokerId=1 #删除文件时间点 默认为0点 deleteWhen=04 #Broker 的角色 brokerRole=SLAVE # 刷盘方式:ASYNC_FLUSH 异步刷盘 SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #nameServer地址,分号分割 namesrvAddr=mqnameserver1:9876;mqnameserver2:9876 #brokerIP #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=false #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=false #Broker 对外服务的监听端口 listenPort=10911 #存储路径 storePathRootDir=/home/tomcat/rocketmq/store #消费队列存储路径存储路径 storePathCommitLog=/home/tomcat/rocketmq/store/commitlog #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #刷新commitlog间隔时间 flushIntervalCommitLog=1000 flushCommitLogTimed=false #文件保存时间 默认为48小时 fileReservedTime=72 |
配置文件:broker-b.properties 如下:
#所属集群名字 自定义 brokerClusterName=DefaultCluster #broker名字,不同配置文件不同(主节点和从节点一致) brokerName=broker-b #0表示Master 大于0表示Slave brokerId=0 #删除文件时间点 默认为0点 deleteWhen=04 #Broker 的角色 brokerRole=ASYNC_MASTER # 刷盘方式:ASYNC_FLUSH 异步刷盘 SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #nameServer地址,分号分割 namesrvAddr=mqnameserver1:9876;mqnameserver2:9876 #brokerIP #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=false #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=false #Broker 对外服务的监听端口 listenPort=10911 #存储路径 storePathRootDir=/home/tomcat/rocketmq/store #消费队列存储路径存储路径 storePathCommitLog=/home/tomcat/rocketmq/store/commitlog #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #刷新commitlog间隔时间 flushIntervalCommitLog=1000 flushCommitLogTimed=false #文件保存时间 默认为48小时 fileReservedTime=72 |
配置文件:broker-b-s.properties 如下:
#所属集群名字 自定义 brokerClusterName=DefaultCluster #broker名字,不同配置文件不同(主节点和从节点一致) brokerName=broker-b #0表示Master 大于0表示Slave brokerId=1 #删除文件时间点 默认为0点 deleteWhen=04 #Broker 的角色 brokerRole=SLAVE # 刷盘方式:ASYNC_FLUSH 异步刷盘 SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #nameServer地址,分号分割 namesrvAddr=mqnameserver1:9876;mqnameserver2:9876 #brokerIP #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=false #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=false #Broker 对外服务的监听端口 listenPort=10911 #存储路径 storePathRootDir=/home/tomcat/rocketmq/store #消费队列存储路径存储路径 storePathCommitLog=/home/tomcat/rocketmq/store/commitlog #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #刷新commitlog间隔时间 flushIntervalCommitLog=1000 flushCommitLogTimed=false #文件保存时间 默认为48小时 fileReservedTime=72 |
- 配置过程中需要注意:
(1)brokerId=0表示是master,大于0则表示是slave;
(2)brokerRole=,两个主机设置为:ASYNC_MASTER,两个从机为:SLAVE,一定不要弄错;
- 修改日志配置文件
在创建的软连接文件夹rocketmq下创建一个logs目录
$ mkdir /usr/local/rocketmq/logs |
然后执行
$ cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml |
进行日志文件的替换,sed是linux的替换命令。四台机器同样操作。
2、修改启动脚本,设置JVM大小
broker的调优
$ vi ~/rocketmq/bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g" |
nameserver的调优
$ vi ~/rocketmq/bin/runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" |
10. 启动
启动时,先启动两台nameserver,后启动master的broker,最后启动两台slave的broker。启动命令如下:
# nameserver $ nohup sh /home/tomcat/rocketmq/bin/mqnamesrv > /home/tomcat/logs/mqnamesrv-`date +%Y"-"%m"-"%d`.log 2>&1 & # broker-mqnameserver1: $ nohup sh /home/tomcat/rocketmq/bin/mqbroker -c ~/rocketmq/conf/2m-2s-async/broker-a.properties > /home/tomcat/logs/broker-a-`date +%Y"-"%m"-"%d`.log 2>&1 & # broker-mqnameserver2: $ nohup sh /home/tomcat/rocketmq/bin/mqbroker -c ~/rocketmq/conf/2m-2s-async/broker-b.properties > /home/tomcat/logs/broker-b-`date +%Y"-"%m"-"%d`.log 2>&1 & # broker-mqbroker1: $ nohup sh /home/tomcat/rocketmq/bin/mqbroker -c ~/rocketmq/conf/2m-2s-async/broker-a-s.properties > /home/tomcat/logs/broker-a-s-`date +%Y"-"%m"-"%d`.log 2>&1 & # broker-mqbroker2: $ nohup sh /home/tomcat/rocketmq/bin/mqbroker -c ~/rocketmq/conf/2m-2s-async/broker-b-s.properties > /home/tomcat/logs/broker-b-s-`date +%Y"-"%m"-"%d`.log 2>&1 & |
11. 日志查看:
RocketMQ日志在 rocketmq/logs 文件夹下,查看命令如下:
# 查看namesrv日志 $ tail -f ~/rocketmq/logs/rocketmqlogs/namesrv.log # 查看broker日志 $ tail -f ~/rocketmq/logs/rocketmqlogs/broker.log |
12. RocketMQ停止服务
RocketMQ停止与启动时顺序相反,先停止broker,再停止nameserver,相关命令如下:
# broker stop $ ./mqshutdown broker # nameserver stop $ ./mqshutdown namesrv |
13、查看配置
RockeMQ查看:./mqadmin getBrokerConfig -b IP:10911 -n IP:9876,查看brokerID和BrokerRole。
14、优化文章:
https://cloud.tencent.com/developer/article/1496414
No Leanote account ? Sign up now.