RocketMQ 双主双从部署&优化
? rocketmq ? ? 双主双从 ? ? 优化 ?    303    0    0

Rocket MQ分为nameserver和broker,双主双从的意思为,两个nameserver和两个broker,同时还有两个broker-slave,作为两个broker的备份。

两个nameserver为双主,broker已master/slave方式交叉部署,这样,在事故发生后可以保证broker的数据完整性。

  1. RocketMQ使用软件版本为:4.3.2-release,需要将安装程序包上传至安装服务器上
  2. mv rocketmq-all-4.3.2-bin-release rocketmq-4.3.2
  3. 修改配置hosts文件,将涉及到的虚拟机IP和hostname写入每台涉及到的虚拟机中。
  4. 配置jdk1.8的环境变量(模板机自带)如果没有,上传jdk.18.0.144.tar.gz文件,使用root用户,执行tar xf jdk.18.0.144.tar.gz -C /usr/local/,然后配置JAVA环境
  5. 所有节点均需要创建数据文件夹,请使用以下命令:

$ 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
brokerIP1=x.x.x.x

#是否允许 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
brokerIP1=x.x.x.x

#是否允许 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
brokerIP1=x.x.x.x

#是否允许 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
brokerIP1=x.x.x.x

#是否允许 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. 配置过程中需要注意:

(1)brokerId=0表示是master,大于0则表示是slave;

(2)brokerRole=,两个主机设置为:ASYNC_MASTER,两个从机为:SLAVE,一定不要弄错;

  1. 修改日志配置文件

在创建的软连接文件夹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

 

 

觉得不错,点个赞?
Sign in to leave a comment.
No Leanote account ? Sign up now.
0 条评论
文章目录