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