RockerMQ簡介
RocektMQ是阿里巴巴在2012年開源的一個純java、分佈式、隊列模型的第三代消息中間件,不僅在傳統高頻交易鏈路有着低延遲的出色表現,在實時計算等大數據領域也有着不錯的吞吐。
2016年11月11號,雙十一大促見證了RocketMQ低延遲存儲架構的成功試水,99.996%的延遲落在了10ms以內,極個別由於GC引發的停頓在50ms以內,其高性能、低延時和高可靠的特性承載了近年來雙十一17萬筆/秒的交易峯值,在整個生產鏈路上都有着穩定和出色的表現。其在同年捐贈給Apache後正式進入孵化期。並於2017年9月RocketMQ正式從Apache社區正式畢業,成爲Apache頂級項目。
服務器配置表
ip地址 | 部署角色 | 模式 |
192.168.1.20 | Nameserver1,Brokerserver1 | Master1 |
192.168.1.20 | Nameserver1,Brokerserver1 | Master2-Slave |
192.168.1.21 | Nameserver2,Brokerserver2 | Master2 |
192.168.1.21 | Nameserver2,Brokerserver2 | Master1-Slave |
系統部署架構圖
分別修改20 和21的服務器hosts 文件
$sudo vim /etc/hosts IP NAME 192.168.1.20 nameserver1 192.168.1.20 master1 192.168.1.20 master1-slave1 192.168.1.21 nameserver2 192.168.1.21 master2 192.168.1.21 master2-slave2 下載官方源碼 下載地址 $unzip rocketmq-all-4.5.1-bin-release.zip -d /workspace/ 分別在20和21兩臺服務器上創建持久化存儲目錄 Msater 目錄設置 mkdir /data/rocketMQ-2m2s/store mkdir /hdata/rocketMQ-2m2s/store/commitlog mkdir /data/rocketMQ-2m2s/store/consumequeue mkdir /data/rocketMQ-2m2s/store/index Slave目錄設置 mkdir /data/rocketMQ-2m2s/store-s mkdir /hdata/rocketMQ-2m2s/store-s/commitlog mkdir /data/rocketMQ-2m2s/store-s/consumequeue mkdir /data/rocketMQ-2m2s/store-s/index
RocketMQ配置文件
20服務器配置
sudo vim /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-a.properties
sudo vim /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-b-s.properties
21服務器配置
sudo vim /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-b.properties
sudo vim /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-a-s.properties
20服務器 broker-a.properties配置文件
#所屬集羣名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=192.168.1.20:9876;192.168.1.21:9876 #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議線下開啓,線上關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議線下開啓,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10911 haListenPort=10912 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=18 #commitLog每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每個文件默認存30W條,根據業務情況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/data/rocketMQ-2m2s/store #commitLog 存儲路徑 storePathCommitLog=/data/rocketMQ-2m2s/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/data/rocketMQ-2m2s/store/consumequeue #消息索引存儲路徑 storePathIndex=/data/rocketMQ-2m2s/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/data/rocketMQ-2m2s/store/checkpoint #abort 文件存儲路徑 abortFile=/data/rocketMQ-2m2s/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步複製Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可爲空,系統默認自動識別,但多網卡時IP地址可能讀取錯誤 brokerIP1=192.168.1.20 |
21服務器 broker-a-s.properties配置文件
#所屬集羣名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分號分割 namesrvAddr=192.168.1.20:9876;192.168.1.21:9876 #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議線下開啓,線上關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議線下開啓,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10923 haListenPort=10924 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=18 #commitLog每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每個文件默認存30W條,根據業務情況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/data/rocketMQ-2m2s/store-s #commitLog 存儲路徑 storePathCommitLog=/data/rocketMQ-2m2s/store-s/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/data/rocketMQ-2m2s/store-s/consumequeue #消息索引存儲路徑 storePathIndex=/data/rocketMQ-2m2s/store-s/index #checkpoint 文件存儲路徑 storeCheckpoint=/data/rocketMQ-2m2s/store-s/checkpoint #abort 文件存儲路徑 abortFile=/data/rocketMQ-2m2s/store-s/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushConsumeQueueLeastPages=2#flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步複製Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SLAVE #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可爲空,系統默認自動識別,但多網卡時IP地址可能讀取錯誤 brokerIP1=192.168.1.21 |
21服務器 broker-b.properties配置文件
#所屬集羣名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=192.168.1.20:9876;192.168.1.21:9876 #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議線下開啓,線上關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議線下開啓,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10911 haListenPort=10912 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=18 #commitLog每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每個文件默認存30W條,根據業務情況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/data/rocketMQ-2m2s/store #commitLog 存儲路徑 storePathCommitLog=/data/rocketMQ-2m2s/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/datarocketMQ-2m2s/store/consumequeue #消息索引存儲路徑 storePathIndex=/data/rocketMQ-2m2s/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/data/rocketMQ-2m2s/store/checkpoint #abort 文件存儲路徑 abortFile=/data/rocketMQ-2m2s/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步複製Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可爲空,系統默認自動識別,但多網卡時IP地址可能讀取錯誤 brokerIP1=192.168.1.21 |
20服務器 broker-b-s.properties配置文件
#所屬集羣名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分號分割 namesrvAddr=192.168.1.20:9876;192.168.1.21:9876 #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議線下開啓,線上關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議線下開啓,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10923 haListenPort=10924 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=18 #commitLog每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每個文件默認存30W條,根據業務情況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/data/rocketMQ-2m2s/store-s #commitLog 存儲路徑 storePathCommitLog=/data/rocketMQ-2m2s/store-s/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/data/rocketMQ-2m2s/store-s/consumequeue #消息索引存儲路徑 storePathIndex=/data/rocketMQ-2m2s/store-s/index #checkpoint 文件存儲路徑 storeCheckpoint=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/checkpoint #abort 文件存儲路徑 abortFile=/data/rocketMQ-2m2s/store-s/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步複製Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SLAVE #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可爲空,系統默認自動識別,但多網卡時IP地址可能讀取錯誤 brokerIP1=192.168.1.20 |
啓動參數設置
RocketMQ啓動文件位於/workspace/rocketmq-all-4.5.1-bin-release/bin/目錄下,Linux中nameserver啓動文件爲:mqnamesrv,broker啓動文件爲:mqbroker,mqnamesrv和mqbroker啓動文件分別調用了runserver.sh和runbroker.sh文件,這兩個文件分別設置了nameserver和broker的啓動內存,目前內存啓動參數分別爲nameserver啓動內存4G,最大內存4G,新生代2G,broker啓動內存8G,最大內存8G,新生代4G。
啓動Nameserver
分別啓動20、21的Nameserver
cd /workspace/rocketmq-all-4.5.1-bin-release/bin/ nohup sh mqnamesrv & |
啓動Broker
20上Master啓動:
nohup sh mqbroker -c /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-a.properties & |
21上Master啓動:
nohup sh mqbroker -c /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-b.properties & |
20上Slave啓動:
nohup sh mqbroker -c /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-b-s.properties & |
21上Slave啓動:
nohup sh mqbroker -c /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-a-s.properties & |
至此,Nameserver、Broker啓動完成,可以用jobs命令查看當前運行進程,如下是服務端相關shutdown,即在bin目錄下:
sh mqshutdown namesrv sh mqshutdown broker |
RocketMQ監控平臺部署
Apache版的RocketMQ管理界面部署工具可以從github上下載源碼,地址:https://github.com/apache/rocketmq-externals,部署流程如下
修改配置文件,關聯rocketMQ集羣到管理界面
首先解壓並進入解壓後rockemq-externals-master目錄rocketmq-externals-master/rocketmq-externals-master/rocketmq-console/src/main/resources,修改目錄下application.properties配置文件
rocketmq.config.nameservAddr=192.168.1.20:9876,192.168.1.21:9876 rocketmq.config.dataPath=/data/rocketMQ-2m2s |
然後編譯打包成rocketmq-console-ng-1.0.0.jar 上傳到服務器
運行jar包
nohup java -jar rocketmq-console-ng-1.0.0.jar -Xms512m -Xmx512m -Xmn256m -XX:MaxMetaspaceSize=64m -XX:MetaspaceSize=64m > /dev/null & |
訪問管理界面
瀏覽器輸入:http://192.168.1.20:8080/回車顯示監控界面