单机部署参照:https://www.jianshu.com/p/44961760cf36,本文将基于单机部署完善
主从模式选型
考虑我们公司对数据零丢失的硬性要求,选择多Master多Slave模式(同步复制、异步刷盘)。
2主2从模式(同步复制)
- rocketmq安装目录:/usr/local/rocketmq-all-4.7.1-bin-release
- 默认配置路径:/usr/local/rocketmq-all-4.7.1-bin-release/conf/2m-2s-sync
- 配置文件说明(建议同一集群的主与从部署在不同的物理机上面):
- broker-a.properties:集群A的master配置
- broker-a-s.properties:集群A的slave配置
- broker-b.properties:集群B的master配置
- broker-b-s.properties:集群B的slave配置
- 每个配置文件中添加如下配置:
#线上关闭自动创建topic autoCreateTopicEnable=false #开启Slave读权限(分担master 压力) slaveReadEnable=true #发送消息线程等待时间,默认200ms waitTimeMillsInSendQueue=1000 # nameServer地址,分号分割 namesrvAddr=nameserverIP1:9876;namerserverIP2:9876 # 本机ip地址,默认系统自动识别,但是某些多网卡机器会存在识别错误的情况,这种情况下可以人工配置。 brokerIP1=本机外网IP # 存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步 brokerIP2=本机内网IP #开启临时存储池 #transientStorePoolEnable=true #关闭堆内存数据传输 #transferMsgByHeap=false #开启文件预热 #warmMapedFileEnable=true #发送消息的最大线程数,默认1 #sendMessageThreadPoolNums=16 #使用可重入锁 #useReentrantLockWhenPutMessage=true #同一台机器部署多个broker,端口号要不同,且端口号之间要相距大些 listenPort=10911 #存储路径 storePathRootDir=/data/rocket/app1/store storePathCommitLog=/data/rocket/app1/store/commitlog
- 自定义日志输出(如果不是同台机器部署多个应用,默认日志输出即可)
cd /usr/local/rocketmq-all-4.7.1-bin-release/conf # 替换日志输出目录(此处使用LogHomeRoot环境变量自定义目录) sed -i "s/user\.home/LogHomeRoot/g" logback_broker.xml
启动与停止
- NameServer
cd /usr/local/rocketmq-all-4.7.1-bin-release # 启动 nohup sh bin/mqnamesrv > ns.log 2>&1 & # 停止 ./bin/mqshutdown namesrv
- Broker
cd /usr/local/rocketmq-all-4.7.1-bin-release # 启动(需设置日志环境变量,且需要同时执行) LogHomeRoot=/data/rocket/app1 nohup sh bin/mqbroker -c conf/2m-2s-sync/xxx.properties > bk_app1.log 2>&1 & # 停止 ./bin/mqshutdown broker
网友评论