我们先看图,更好的理解
- 主从架构:Broker角色,Master提供读写,Slave只支持读
- Consumer不用配置,当Master不可用或者繁忙的时候,Consumer会自动切换到Slave节点进行能读取
- 架构讲解,4台机器
- 两个部署Broker-Master 和 NameServer
- 两个部署Broker-Slave 和 NameServer
- 4台机器, 2台部署NameServer, 4台都部署Broker, 双主双从 同步复制,异步刷盘
- jdk、maven、rocketmq上传和安装
- 机器列表
-
server1 ssh root@192.168.159.133 部署nameServer Broker-a server2 ssh root@192.168.159.130 部署nameServer Broker-a-s server3 ssh root@192.168.159.131 Broker-b server4 ssh root@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 & 全路径 /usr/local/software/rocketmq/distribution/target/apache-rocketmq
编辑并启动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
- 参考命令
-
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
本文作者为DBC,转载请注明。