RocketMq-01-整體部署與快速實戰
阿新 • • 發佈:2020-10-11
一、簡介
Apache RocketMQ是一個分散式訊息傳遞和流媒體平臺,具有低延遲,高效能和可靠性,萬億級容量和靈活的可伸縮性。 它由四個部分組成:nameserver,broker,生產者和使用者。 它們中的每一個都可以水平擴充套件,而沒有單個故障點。 如上面的螢幕截圖所示。nameserver:提供輕量級的服務發現和路由。 每個名稱伺服器記錄完整的路由資訊,提供相應的讀寫服務,並支援快速的儲存擴充套件。Broker:通過提供輕量級的TOPIC和QUEUE機制來儲存訊息。
二、叢集部署與配置
參考連結(官網Quick Start):
http://rocketmq.apache.org/docs/quick-start/
環境
JDK版本:1.8.0_221
rocketmq版本:
roqall4.3.2incubatingbinrelease.zip
執行環境
JDK版本:1.8.0_221
rocketmq版本:rocketmqall4.3.2
系統:centos 7
1.配置環境變數
vim /etc/profile 插入JDK和RocketMq環境變數
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#rocketmq
export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq‐all‐4.1.0‐incubating
export PATH=$ROCKETMQ_HOME/bin:$PATH
重新整理環境變數: source /etc/profile
2.修改broker配置
配置檔案地址:/usr/local/rocketmq/conf/broker.conf
#叢集名稱,可自定義
brokerClusterName=DefaultCluster
brokerName=broker‐a
brokerId=0
brokerIP1=192.168.241.198
//定義服務地址,主存地址
namesrvAddr=192.168.241.198:9876
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
autoCreateTopicEnable=true
#訊息儲存根路徑
storePathRootDir=/data/rocketmq/store
#日誌路徑
storePathCommitLog=/data/rocketmq/store/commitlog
3.啟動指令碼配置修改(可選)
機器記憶體不夠(一般針對虛擬機器),修改/usr/local/rocketmq/bin/runserver.sh與 /usr/local/rocketmq/bin/runbroker.sh中JAVA_OPT關於記憶體的設定
#修改此處的記憶體大小,預設為4g,一般我們的虛擬機器記憶體不會太大
#所以此處修改為256m,可以根據自己機器的配置合理設定
JAVA_OPT="${JAVA_OPT}‐server‐Xms256m‐Xmx256m‐Xmn128m‐XX:MetaspaceSi ze=64m‐XX:MaxMetaspaceSize=128m"
4.啟動namesrv
nohupshbin/mqnamesrv‐n192.168.241.198:9876&
5.啟動broker
nohupshbin/mqbroker‐n192.168.241.198:9876autoCreateTopicEnable=true &
指定配置檔案啟動
nohupshbin/mqbroker‐n192.168.241.198:9876‐cconf/broker.confautoCre ateTopicEnable=true&
6.rocketmq多機叢集部署
準備2個虛擬機器分別是虛擬機器centos-node-01與centos-node-02,分別部署2個NameServer,並在每臺機器上分別啟動一個Master和一個Slave,互為主備,在主目錄下的conf資料夾下提供了多種broker配置模式,分別有:2m-2s-async,2m-2s-sync,2m-noslave,可以以此為模版做如下配置:
以
2m-2s-sync同步為例
1.
配置192.168.241.198 Master和Slave
Master broker-m.conf配置如下:
namesrvAddr =192.168.241.198:9876;192.168.241.199:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
autoCreateTopicEnable=true
listenPort=10811
storePathRootDir=/root/rocketmq/store‐m
Slave broker-s.conf配置如下
namesrvAddr =192.168.241.198:9876;192.168.241.199:9876 //namesrv地址不配置預設localhost:9876
brokerClusterName=DefaultCluster //叢集名稱
brokerName=broker-a //broker名稱
brokerId=1 // 0是master,非0是slave
deleteWhen=04 //凌晨4點刪除訊息
fileReservedTime=48 //訊息儲存48小時
brokerRole=SLAVE //broker角色
flushDiskType=ASYNC_FLUSH //訊息持久化方式同步刷盤/非同步刷盤
autoCreateTopicEnable=true //傳送訊息時如果Topic不存在,則自動建立
listenPort=10911 //broker通訊埠
storePathRootDir=/root/rocketmq/store‐s //訊息持久化根目錄
2.
配置192.168.241.199 Master和Slave
Master broker-m.conf配置如下:
namesrvAddr =192.168.241.198:9876;192.168.241.199:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
autoCreateTopicEnable=true
listenPort=10811
storePathRootDir=/root/rocketmq/store‐m
Slave broker-s.conf配置如下
namesrvAddr =192.168.241.198:9876;192.168.241.199:9876 //namesrv地址不配置預設localhost:9876
brokerClusterName=DefaultCluster //叢集名稱
brokerName=broker-b //broker名稱
brokerId=1 // 0是master,非0是slave
deleteWhen=04 //凌晨4點刪除訊息
fileReservedTime=48 //訊息儲存48小時
brokerRole=SLAVE //broker角色
flushDiskType=ASYNC_FLUSH //訊息持久化方式同步刷盤/非同步刷盤
autoCreateTopicEnable=true //傳送訊息時如果Topic不存在,則自動建立
listenPort=10911 //broker通訊埠
storePathRootDir=/root/rocketmq/store‐s //訊息持久化根目錄
啟動mqnamesrv
nohup sh mqnamesrv &
啟動master
nohup sh bin/mqbroker ‐c conf/broker‐m.conf &
啟動slave
nohup sh bin/mqbroker ‐c conf/broker‐s.conf &
叢集啟動後檢視叢集監控狀態
sh mqadmin clusterlist ‐n 192.168.241.198:9876
測試
測試傳送端> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
測試消費端> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
7.控制檯搭建
1.github下載地址:
https://github.com/apache/rocketmq-externals 選擇分支:release-rocketmq-console-1.0.0
2.編輯application.properties配置檔案,修改啟動埠和對應的rocketMQ的namesrv地址
3.進入專案目錄下打包:maven clean package -Dmaven.test.skip=true
4.上傳jar包到對應伺服器上並啟動 :java -jarrocketmq-console-1.0.0.jar