Linux部署RocketMQ叢集
Linux部署RocketMQ叢集
1. Linux啟動RocketMQ
- 進入rocketmq環境變數的路徑:bin目錄
cd /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin
- 在bin目錄下啟動Name Server
nohup sh mqnamesrv
- 在bin目錄下啟動Broker
nohup sh mqbroker
注:若無法啟動,改runbroker.sh和runserver.sh中的啟動記憶體,要小於虛擬機器記憶體,兩者啟動記憶體大小一致
- 檢視兩個程序是否啟動
jps
提示:3601 Jps
3494 NamesrvStartup
3530 BrokerStartup
- 關掉伺服器:需先關broker,再關nameserver
sh mqshutdown broker
提示:The mqbroker(36695) is running…
Send shutdown request to mqbroker(36695) OK
sh mqshutdown namesrv
提示:The mqnamesrv(36664) is running…
Send shutdown request to mqnamesrv(36664) OK
2. Linux部署雙master模式叢集
- 修改兩臺機子的hosts檔案:
vi /ect/hosts
192.168.9.157 rocketmq-nameserver1
192.168.9.157 rocketmq-master1
192.168.9.150 rocketmq-nameserver2
192.168.9.150 rocketmq-master2
注:修改前需先關閉兩臺機子防火牆
2. 重啟網絡卡
service network restart
- 兩臺機互相ping一下,例:
ping 192.168.9.150 ping rocketmq-nameserver2 ping rocketmq-master2
- 解壓rocketmq到指定的資料夾
tar -zxvf rocketmq-all-4.3.2.tar.gz -C /usr/local
修改檔名為rocketmq: mv rocketmq-all-4.3.2 rocketmq
建立軟連線(可有可無): ln -s rocketmq rocketmq
- 根據需要,建立資料儲存路徑(兩臺機器都要建立),可跳過
mkdir rocketmq/data //儲存路徑
mkdir rocketmq/data/commitlog //commitLog 儲存路徑
mkdir rocketmq/data/consumerqueue //消費佇列儲存路徑儲存路徑
mkdir rocketmq/data/index //訊息索引儲存路徑
- 兩臺機分別進入/usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-noslave目錄,增加程式碼(注意路徑是:/conf/2m-noslave)
主機1修改broker-a.properties檔案:
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;
主機2修改broker-b.properties檔案 :
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;
注:根據需要可加其他配置,如下
#所屬叢集名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置檔案填寫的不一樣
brokerName=broker-a|broker-b
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在傳送訊息時,自動建立伺服器不存在的topic,預設建立的佇列數
defaultTopicQueueNums=4
#是否允許 Broker 自動建立Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動建立訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽埠
listenPort=10911
#刪除檔案時間點,預設凌晨 0點
deleteWhen=00
#檔案保留時間,預設 48 小時
fileReservedTime=120
#commitLog每個檔案的大小預設1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個檔案預設存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理檔案磁碟空間
diskMaxUsedSpaceRatio=88
#儲存路徑
storePathRootDir=/opt/rocketmq/data
#commitLog 儲存路徑
storePathCommitLog=/opt/rocketmq/data/commitlog
#消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/opt/rocketmq/data/consumequeue
#訊息索引儲存路徑
storePathIndex=/opt/rocketmq/data/index
#checkpoint 檔案儲存路徑
storeCheckpoint=/opt/rocketmq/data/checkpoint
#abort 檔案儲存路徑
abortFile=/opt/rocketmq/data/abort
#限制的訊息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 非同步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 非同步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發訊息執行緒池數量
#sendMessageThreadPoolNums=128
#拉訊息執行緒池數量
#pullMessageThreadPoolNums=128
- 根據需要,修改日誌配置檔案(兩臺機器同樣操作),可跳過
建立一個logs目錄: mkdir /opt/rocketmq/logs
然後執行以下程式碼進行日誌檔案的替換,sed是linux的替換命令。
cd /opt/rocketmq/conf && sed -i 's#${user.home}#/opt/rocketmq#g' *.xml
-
根據需要,修改啟動指令碼引數,JVM調優(兩臺機器同樣操作),可跳過
由於將nameServer和broker放在了同一臺機器上,所以根據實際情況可分別對nameServer和broker進行jvm的效能調優,生產環境預設即可不需修改。
比如我的虛擬機器記憶體只有1G,假設nameserver和broker預設啟動記憶體為1G的話,那麼我的虛擬機器會因為記憶體不夠而無法同時啟動nameserver和broker,此時就需要把兩個的啟動記憶體改小一點。
a)broker的調優
vim /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin/runbroker.sh
修改 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"中的啟動記憶體
b)nameserver的調優
vim /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin/runserver.sh
修改 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"中的啟動記憶體
- 返回bin目錄分別啟動兩臺機子的nameserver( 兩臺機器同樣操作 )
nohup sh mqnamesrv &
可用jps
命令檢視是否有nameserver程序
- 在bin目錄分別啟動兩臺機子broker:
主機1(master1):注意主要路徑是 /conf/2m-noslave/broker-a.properties
nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
主機2(master2):注意主要路徑是 /conf/2m-noslave/broker-b.properties
nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
可用jps
命令檢視是否有broker程序
注:先啟動兩臺機器的NameServer,再啟動兩臺機器的Borker,關機的時候順序相反,先關閉兩臺機器的Broker,再關閉兩臺機器的Nameserver。
- 在rocketmq的bin目錄下檢視叢集情況:
sh mqadmin clusterList -n "192.168.9.157:9876;192.168.9.150:9876"
注:也可在Windows端開啟管控臺,啟動步驟在下文第4點
- 停止broker命令
sh mqshutdown broker
- 停止nameserver命令
sh mqshutdown namesrv
3. Linux部署雙master雙slave非同步複製叢集(精簡版)
- 修改四臺機子的hosts檔案:
vi /ect/hosts
192.168.9.157 rocketmq-nameserver1
192.168.9.157 rocketmq-master1
192.168.9.150 rocketmq-nameserver2
192.168.9.150 rocketmq-master2
192.168.9.154 rocketmq-nameserver3
192.168.9.154 rocketmq-master1-slave
192.168.9.155 rocketmq-nameserver4
192.168.9.155 rocketmq-master2-slave
- 重啟網絡卡
service network restart
- 互相ping一下,例:
ping 192.168.9.150
ping rocketmq-nameserver2
ping rocketmq-master2
- 四臺機進入/usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async目錄,增加一行程式碼
主機1修改broker-a.properties檔案
主機2修改broker-b.properties檔案
從機1修改broker-a-s.properties檔案
從機2修改broker-b-s.properties檔案
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
- 在bin目錄分別啟動四臺機子的nameserver
nohup sh mqnamesrv &
- 在bin目錄分別啟動四臺機子broker:
主機1:
nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
主機2:
nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 &
從機1:
nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &
從機2:
nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 &
- 在rocketmq的bin目錄下檢視叢集情況:
sh mqadmin clusterList -n "192.168.9.157:9876;192.168.9.150:9876;192.168.9.154:9876;192.168.9.155:987"
注:可在Windows端開啟管控臺,步驟下文有,需改application.properties中的namesrvAddr
4. Windows 啟動 RocketMQ 管控臺
-
開啟下載好的檔案,先進入 E:\rocketmq-externals-master\rocketmq-console\src\main\resources,修改application.properties中的namesrvAddr和server.port配置,例如:
server.port=8082 //此處配置管控臺端口,瀏覽器訪問就是用這個埠
rocketmq.config.namesrvAddr=192.168.0.158:9876;192.168.0.179:9876
- Cmd命令框執行進入E:\rocketmq-externals-master\rocketmq-console,編譯生成
mvn clean package -Dmaven.test.skip=true
- 編譯成功後,Cmd命令框執行進入E:\rocketmq-externals-master\rocketmq-console\target,啟動‘rocketmq-console-ng-1.0.0.jar’。
java -jar rocketmq-console-ng-1.0.0.jar
- 瀏覽器中輸入‘127.0.0.1:配置埠’,成功後即可檢視。
localhost:8082
埠在E:\rocketmq-externals-master\rocketmq-console\src\main\resources中的‘application.properties’檔案可看,如server.port=8082