RocketMQ 搭建双主双从集群

RocketMQ 搭建双主双从集群

4台机器,2台部署 NameServer,4台都部署 Broker,双主双从(同步复制,异步刷盘)

基础安装教程参考:https://www.cnblogs.com/jwen1994/p/12318575.html

机器列表

192.168.159.133   Broker-a      部署nameServer 
192.168.159.130   Broker-a-s   部署nameServer    
192.168.159.131   Broker-b
192.168.159.132   Broker-b-s

1、修改 RocketMQ 启动内存配置(4个机器都要修改,其中 runbroker.sh 修改4个,runserver.sh 修改2个)

vim runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

vim runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"


启动两个机器的 nameserver
nohup sh bin/mqnamesrv &

2、编辑并启动 rocketmq 命令

broker-a主节点
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties &

namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
brokerClusterName=XdclassCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH

defaultTopicQueueNums=4
#是否允许自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false

#存储路径,根据需求进行配置绝对路径,默认是家目录下面
#storePathRootDir= 
#storePathCommitLog
broker-a从节点
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties &

namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
brokerClusterName=XdclassCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

defaultTopicQueueNums=4
#是否允许自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false

#存储路径,根据需求进行配置绝对路径,默认是家目录下面
#storePathRootDir= 
#storePathCommitLog
 

broker-b主节点
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties &

namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
brokerClusterName=XdclassCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH

defaultTopicQueueNums=4
#是否允许自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false

#存储路径,根据需求进行配置绝对路径,默认是家目录下面
#storePathRootDir= 
#storePathCommitLog
 

broker-b从节点
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties &

namesrvAddr=192.168.159.133:9876;192.168.159.130:9876
brokerClusterName=XdclassCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

defaultTopicQueueNums=4
#是否允许自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false

#存储路径,根据需求进行配置绝对路径,默认是家目录下面
#storePathRootDir= 
#storePathCommitLog

注意:4台机器都需要关闭防火墙

CentOS 6.5关闭防火墙
servcie iptables stop 

centos7关闭防火墙 
systemctl stop firewalld
systemctl stop firewalld.service

双主双从搭建和控制台配置

注意:如果连接不了 broker,日志提示连接的端口少2位,记得检查防火墙是否关闭

使用管控台,安装在 server1 机器里面

修改事项
pom.xml  里面的rocketmq版本号

路径 /usr/local/software/rocketmq-externals-master/rocketmq-console/src/main/resources

application.properties里面的nameserver

增加 rocketmq.config.namesrvAddr=192.168.159.133:9876;192.168.159.130:9876

mvn install -Dmaven.test.skip=true

java -jar rocketmq-console-ng-1.0.0.jar

生产环境 RocketMQ 的使用流程和推荐配置

  • Topic 创建线上禁止开启自动创建
  • 一般是有专门的后台进行队列的 CRUD,应用上线需要申请队列名称
  • 生产环境推荐配置
    • NameServer 配置多个不同机器多个节点
    • 多 Master, 每个 Master 带有 Slave
    • 主从设置为 SYNC_MASTER 同步双写
    • Producer 用同步方式投递 Broker
    • 刷盘策略为 SYNC_FLUSH(性能好点则可以为 ASYNC_FLUSH)
  • 性能分析思路
    • CPU:top
    • 网卡:sar -n DEV 2 10、netstat -t、 iperf3
    • 磁盘:iostat -xdm 1
    • JVM:jstack、jinfo、MAT
原文地址:https://www.cnblogs.com/jwen1994/p/12385384.html