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