rocketMQ安裝部署詳細解析


轉載:https://www.cnblogs.com/tudachui/p/10998984.html
 
一、簡介rocketMQ

RocektMQ是阿里巴巴在2012年開源的一個純java、分布式、隊列模型的第三代消息中間件,不僅在傳統高頻交易鏈路有着低延遲的出色表現,在實時計算等大數據領域也有着不錯的吞吐。
2016年11月11號,雙十一大促見證了RocketMQ低延遲存儲架構的成功試水,99.996%的延遲落在了10ms以內,極個別由於GC引發的停頓在50ms以內,其高性能、低延時和高可靠的特性承載了近年來雙十一17萬筆/秒的交易峰值,在整個生產鏈路上都有着穩定和出色的表現。其在同年捐贈給Apache后正式進入孵化期。並於2017年9月RocketMQ正式從Apache社區正式畢業,成為Apache頂級項目。

二、相關術語

1. Producer
消息生產者,負責產生消息,一般由業務系統負責產生消息。
Producer Group
一類Producer的集合名稱,這類Producer通常發送一類消息,且發送邏輯一致。
 
2. Consumer
消息消費者,負責消費消息,一般是后台系統負責異步消費。
Push Consumer
Consumer的一種,應用通常向Consumer對象注冊一個Listener接口,一旦收到消息,Consumer對象立 刻回調Listener接口方法。
Pull Consumer
Consumer的一種,應用通常主動調用Consumer的拉消息方法從Broker拉消息,主動權由應用控制。
Consumer Group
一類Consumer的集合名稱,這類Consumer通常消費一類消息,且消費邏輯一致。
 
3. Broker
消息中轉角色,負責存儲消息,轉發消息,一般也稱為Server。
Master
Broker中的主節點。
Slave
Broker中的副節點。
 
4. Nameserver
專為RocketMQ設計的輕量級名稱服務。集群中Nameserver互相獨立,彼此沒有通信關系,單台Nameserver掛掉,不影響其他Nameserver,即使全部掛掉,也不影響業務系統使用。而且Nameserver不會有頻繁的讀寫,所以性能開銷非常小,穩定性很高。
 
5. 廣播消費
一條消息被多個Consumer消費,即使這些Consumer屬於同一個Consumer Group,消息也會被Consumer Group中的每個Consumer都消費一次,廣播消費中的Consumer Group概念可以認為在消息划分方面無意義。
 
6. 集群消費
一個Consumer Group中的Consumer實例平均分攤消費消息。例如某個Topic有9條消息,其中一個Consumer Group有3個實例(可能是3個進程,或者3台機器),那么每個實例只消費其中的3條消息。
 
7. 順序消息
消費消息的順序要同發送消息的順序一致,在RocketMQ中,主要指的是局部順序,即一類消息為滿足順序性,必須Producer單線程順序發送,且發送到同一個隊列,這樣Consumer就可以按照Producer發送的順序去消費消息。
 
8. 普通順序消息
順序消息的一種,正常情況下可以保證完全的順序消息,但是一旦發生通信異常,Broker重啟,由於隊列總數發生變化,哈希取模后定位的隊列會變化,產生短暫的消息順序不一致。如果業務能容忍在集群異常情況(如某個Broker宕機或者重啟)下,消息短暫的亂序,使用普通順序方式比較合適。
 
9. 嚴格順序消息
順序消息的一種,無論正常異常情況都能保證順序,但是犧牲了分布式Failover特性,即Broker集群中只要有一台機器不可用,則整個集群都不可用,服務可用性大大降低。如果服務器部署為同步雙寫模式,此缺陷可通過備機自動切換為主避免,不過仍然會存在幾分鍾的服務不可用。
 
10. Message Queue
在RocketMQ中,所有消息隊列都是持久化,長度無限的數據結構,所謂長度無限是指隊列中的每個存儲單元都是定長,訪問其中的存儲單元使用Offset來訪問,offset為java long類型,64位,理論上在100年內不會溢出,所以認為是長度無限,另外隊列中只保存最近幾天的數據,之前的數據會按照過期時間來刪除。也可以認為Message Queue是一個長度無限的數組,offset就是下標。
 
11. 異步復制
消息寫入master節點,再由master節點異步復制到slave節點,類似mysql中的master-slave機制。
 
12. 同步雙寫
消息同時寫入master節點和slave節點。
 
13. 異步刷盤
Broker的一種持久化策略,消息寫入pagecache后,直接返回。由異步線程負責將pagecache寫入硬盤。
 
14. 同步刷盤
Broker的一種持久化策略,消息寫入pagecache后,由同步線程將pagecache寫入硬盤后,再返回。

三、RocketMQ集群部署模式

RocketMQ作為消息中間件,其主要功能為消息的Publish/Subscribe。而Broker擔任的消息轉發和存儲功能,其部署方式有很多種:
1. 單Master
優點:除了配置簡單沒什么優點。
缺點:不可靠,該機器重啟或宕機,將導致整個服務不可用。
2. 多Master
優點:配置簡單,性能最高。
缺點:可能會有少量消息丟失,單台機器重啟或宕機期間,該機器下未被消費的消息在機器恢復前不可訂閱,影響消息實時性。
3. 異步多Master多Slave
每個Master配一個Slave,有多對Master-Slave,集群采用異步復制方式,主備有短暫消息延遲,毫秒級。
優點:性能同多Master幾乎一樣,實時性高,主備間切換對應用透明,不需人工干預。
缺點:Master宕機或磁盤損壞時會有少量消息丟失。
4. 同步多Master多Slave
每個Master配一個Slave,有多對Master-Slave,集群采用同步雙寫方式,主備都寫成功,向應用返回成功。
優點:服務可用性與數據可用性非常高。
缺點:性能比異步集群略低,當前版本主宕備不能自動切換為主。
 
四、RocketMQ集群特性分析
RocketMQ部署架構圖如下所示:
Nameserver
Nameserver的開發旨在輕量級,多台Nameserver互相獨立,彼此間互不通信,這樣的設計,保證了單台Nameserver宕機,不影響Nameserver。nameserver不會有頻繁的讀寫,所以性能開銷非常小,穩定性很高。
Broker與Nameserver關系
連接:
每個Broker與系統中所有的Nameserver保持長連接。
心跳間隔:
每隔30秒(此時間無法更改)向所有Nameserver發送心跳,心跳包含了自身的topic配置信息。
心跳超時:
Nameserver每隔10秒鍾(此時間無法更改),掃描所有還存活的Broker連接,若某個連接2分鍾內(當前時間與最后更新時間差值超過2分鍾,此時間無法更改)沒有發送心跳數據,則斷開連接。
斷開:
一旦連接斷開,Nameserver會立即更新topic與隊列的對應關系,但不會通知生產者和消費者。
負載均衡:
一個topic分布在多個Broker上,一個broker可以配置多個topic,它們是多對多的關系。如果某個topic消息量很大,應該給它多配置幾個隊列,並且盡量多分布在不同broker上,減輕某個broker的壓力。topic消息量都比較均勻的情況下,如果某個broker上的隊列越多,則該broker壓力越大。
可用性:
由於消息分布在各個broker上,一旦某個broker宕機,則該broker上的消息讀寫都會受到影響。所以rocketmq提供了master/slave的結構,salve定時從master同步數據,如果master宕機,則slave提供消費服務,但是不能寫入消息,此過程對應用透明,由rocketmq內部解決。
兩個關鍵點:
1. 一旦某個broker master宕機,生產者和消費者多久才能發現?受限於rocketmq的網絡連接機制,默認情況下,最多需要30秒,但這個時間可由應用設定參數來縮短時間。這個時間段內,發往該broker的消息都是失敗的,而且該broker的消息無法消費,因為此時消費者不知道該broker已經掛掉。
2. 消費者得到master宕機通知后,轉向slave消費,但是slave不能保證master的消息100%都同步過來了,因此會有少量的消息丟失。但是消息最終不會丟的,一旦master恢復,未同步過去的消息會被消費掉。
可靠性:
所有發往broker的消息,有同步刷盤和異步刷盤機制,總的來說,可靠性非常高。
同步刷盤時,消息寫入物理文件才會返回成功,因此非常可靠。
異步刷盤時,只有機器宕機,才會產生消息丟失,broker掛掉可能會發生,但是機器宕機崩潰是很少發生的,除非突然斷電。
 
 Consumer
與Nameserver關系
連接:
單個消費者和一台nameserver保持長連接。定時查詢topic配置信息,如果該nameserver掛掉,消費者會自動連接下一個nameserver,直到有可用連接為止,並能自動重連。
心跳:
與nameserver沒有心跳。
輪詢時間:
默認情況下,消費者每隔30秒從nameserver獲取所有topic的最新隊列情況,這意味着某個broker如果宕機,客戶端最多要30秒才能感知。該時間由DefaultMQPushConsumer的pollNameServerInteval參數決定,可手動配置。
 
與Broker關系
連接:
單個消費者和該消費者關聯的所有broker保持長連接。
心跳:
默認情況下,消費者每隔30秒向所有broker發送心跳,該時間由DefaultMQPushConsumer的heartbeatBrokerInterval參數決定,可手動配置。broker每隔10秒鍾(此時間無法更改),掃描所有還存活的連接,若某個連接2分鍾內(當前時間與最后更新時間差值超過2分鍾,此時間無法更改)沒有發送心跳數據,則關閉連接,並向該消費者分組的所有消費者發出通知,分組內消費者重新分配隊列繼續消費。
斷開:
消費者掛掉;心跳超時導致broker主動關閉連接。
動作:
一旦連接斷開,broker會立即感知到,並向該消費者分組的所有消費者發出通知,分組內消費者重新分配隊列繼續消費。
負載均衡:
集群消費模式下,一個消費者集群多台機器共同消費一個topic的多個隊列,一個隊列只會被一個消費者消費。如果某個消費者掛掉,分組內其它消費者會接替掛掉的消費者繼續消費。
消費機制
本地隊列:
消費者不間斷的從broker拉取消息,消息拉取到本地隊列,然后本地消費線程消費本地消息隊列,只是一個異步過程,拉取線程不會等待本地消費線程,這種模式實時性非常高。對消費者對本地隊列有一個保護,因此本地消息隊列不能無限大,否則可能會占用大量內存,本地隊列大小由DefaultMQPushConsumer的pullThresholdForQueue屬性控制,默認1000,可手動設置。
輪詢間隔:
消息拉取線程拉取間隔時間由DefaultMQPushConsumer的pullInterval屬性控制,默認為0,可手動設置。
消息消費數量:
監聽器每次接受本地隊列的消息數量是由參數DefaultMQPushConsumer的consumeMessageBatchMaxSize屬性控制,默認為1,可手動設置。
消費進度存儲:
每隔一段時間將各個隊列的消費進度存儲到對應的broker上,該時間由DefaultMQPushConsumer的persistConsumerOffsetInterval屬性控制,默認為5秒,可手動設置。
 
 Producer
與Nameserver關系
連接:
單個生產者者和一台nameserver保持長連接,定時查詢topic配置信息,如果該nameserver掛掉,生產者會自動連接下一個nameserver,直到有可用連接為止,並能自動重連。
心跳:
與nameserver沒有心跳。
 
與Broker關系
連接:
單個生產者和該生產者關聯的所有broker保持長連接。
心跳:
默認情況下,生產者每隔30秒向所有broker發送心跳,該時間由DefaultMQProducer的heartbeatBrokerInterval參數決定,可手動配置。broker每隔10秒鍾(此時間無法更改),掃描所有還存活的連接,若某個連接2分鍾內(當前時間與最后更新時間差值超過2分鍾,此時間無法更改)沒有發送心跳數據,則關閉連接。
斷開:
移除Broker上的生產者信息。
負載均衡:
生產者時間沒有關系,每個生產者向隊列輪流發送消息。
以上論述了RocketMQ各組件特性和關系,除此之外,在允許可自動創建Topic的配置下,Producer負責創建Topic消息和發送消息,發送消息支持三種方式,異步、同步和onway方式。就總體的消息傳輸層面來說,RocketMQ有集群模式和廣播模式,默認是集群模式,集群模式以其原生的Consumer Group(消費組)實現了負載均衡,廣播模式下,Consumer Group下的每個Consumer實例則要消費全部的消息數據。就業務適用層面來說,rocketMQ可以根據業務需求,實現Order Message(訂單消息)、Broadcasting(廣播消息)、Scheduled Message(延遲消息)、Batch(同Topic批量消息發送)、Filter(基本消息過濾和高級消息過濾)、OpenMessaging(流式消息發送)等。

五、RocketMQ分布式部署實踐案例詳述

此處就RocketMQ的多Master多Slave的模式在Linux服務器部署案例進行詳細的說明,如系統部署結構圖所示。
1. 本次部署環境
Linux服務器192.168.162.235、192.168.162.236兩台(下文均簡稱235、236),詳細部署環境示意表如下:

 

 
2. 編輯Hosts
分別修改235 和236 的hosts 文件
sudo vim /etc/hosts
      IP                NAME
192.168.162.235      nameserver1
192.168.162.235      master1
192.168.162.235      master2-slave
192.168.162.236      nameserver2
192.168.162.236      master2
192.168.162.236      master1-slave
注:修改hosts 文件需獲得sudo 權限,本機用戶是rocketMQ非root用戶, 故申請了堡壘機權限(即獲得root權限)。
 
3. 下載官方源碼
下載官方RocketMQ壓縮包,下載地址:http://rocketmq.apache.org/release_notes/release-notes-4.2.0/,並選擇Download the 4.2.0 release 選項的 rocketmq-all-4.2.0-bin-release.zip下載。(其他如source為需要自己編譯的版本)
 
4. 上傳到Linux並解壓
分別上傳rocketmq-all-4.2.0-bin-release.zip到235和236服務器的/home/rocketMQ/ZHF/rocketMQ-2m2s/目錄下:
cd /home/rocketMQ/ZHF/rocketMQ-2m2s/tar –zxvf rocketmq-all-4.2.0-bin-release.zip
 
5.  創建持久化存儲目錄
Master目錄設置:
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/commitlog
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/consumequeue
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/index
Slave目錄設置:
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/commitlog
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/consumequeue
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/index
 
6. RocketMQ配置文件
235服務器設置:
sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a.properties
sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b-s.properties
236服務器設置:
sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b.properties
sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a-s.properties
 
broker-a.properties文件配置
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
 
#brokerClusterName=DefaultCluster
#brokerName=broker-a
#brokerId=0
#deleteWhen=04
#fileReservedTime=48
#brokerRole=ASYNC_MASTER
#flushDiskType=ASYNC_FLUSH
 
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=nameserver1:9876;nameserver2: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=/home/rocketMQ/ZHF/rocketMQ-2m2s/store
#commitLog 存儲路徑
storePathCommitLog=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/consumequeue
#消息索引存儲路徑
storePathIndex=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/checkpoint
#abort 文件存儲路徑
abortFile=/home/rocketMQ/ZHF/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.162.235
 
broker-a-s.properties文件配置

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#brokerClusterName=DefaultCluster
#brokerName=broker-b
#brokerId=1
#deleteWhen=04
#fileReservedTime=48
#brokerRole=SLAVE
#flushDiskType=ASYNC_FLUSH
 
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=nameserver1:9876;nameserver2: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=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s
#commitLog 存儲路徑
storePathCommitLog=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/consumequeue
#消息索引存儲路徑
storePathIndex=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/index
#checkpoint 文件存儲路徑
storeCheckpoint=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/checkpoint
#abort 文件存儲路徑
abortFile=/home/rocketMQ/ZHF/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.162.235
 
broker-b.properties文件配置
參考broker-a.properties
broker-b-s.properties文件配置
參考broker-a-s.properties
 
7. 啟動參數設置
RocketMQ啟動文件位於/home/rocketMQ/ZHF/rocketMQ-2m2s/bin/目錄下,Linux中nameserver啟動文件為:mqnamesrv,broker啟動文件為:mqbroker,mqnamesrv和mqbroker啟動文件分別調用了runserver.sh和runbroker.sh文件,這兩個文件分別設置了nameserver和broker的啟動內存,目前內存啟動參數分別為nameserver啟動內存4G,最大內存4G,新生代2G,broker啟動內存8G,最大內存8G,新生代4G。
 
8. 端口及防火牆設置
RokcetMQ啟動默認使用3個端口9875,10911,10912,三個端口分別代表nameserver服務器端口,broker端口,broker HA端口。需注意的是在多Master多Slave模式下10911和10912是Master的使用端口,但Slave端口的設置與Master的端口不同,具體端口約束為:Slave - Master > 2,否則可能導致同一台服務器無法同時啟動Master和Slave。
如果服務器啟動了防火牆,為了端口不被屏蔽,需將Master和Slave對應端口加入到iptables表以開放對應端口號,添加完成后重啟防火牆。命令行開放端口操作如下:
分別打開235和236終端,在root用戶下執行命令:
開放端口:
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9876 -j ACCEPT
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10911 -j ACCEPT
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10912 -j ACCEPT
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10923 -j ACCEPT
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10924 -j ACCEPT
保存:
/etc/rc.d/init.d/iptables save
重啟:
/etc/init.d/iptables restart
查看端口開放情況:
/sbin/iptables -L -n
 
9. 啟動Nameserver
分別啟動235、236的Nameserver
cd /home/rocketMQ/ZHF/rocketMQ-2m2s/bin/nohup sh mqnamesrv &
 
10.啟動Broker
235上Master啟動:
nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a.properties
 
236上Master啟動:
nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b.properties
 
235上對應236Master的Slave啟動:
nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b-s.properti
 
236上對應235Master的Slave啟動:
nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a-s.properti
 
至此,Nameserver、Broker啟動完成,可以用jobs命令查看當前運行進程,如下是服務端相關shutdown,即在bin目錄下:
sh mqshutdown namesrvsh mqshutdown broker

六、RocketMQ監控平台部署
Apache版的RocketMQ管理界面部署工具可以從github上下載源碼,地址:https://github.com/apache/rocketmq-externals,部署流程如下:
1. 修改配置文件,關聯rocketMQ集群到管理界面
首先解壓並進入解壓后rockemq-externals-master目錄rocketmq-externals-master/rocketmq-externals-master/rocketmq-console/src/main/resources,修改目錄下application.properties配置文件內容如下圖:
 
2. 編譯rocketmq-console
mvn clean package -Dmaven.test.skip=true
編譯需用maven命令進行編譯,如下圖,顯示BIUD SUCCESS,則編譯成功,成功后會在rocketmq-externals-master/rocketmq-console/target目錄下產生一個rocketmq-console-ng-1.0.0.jar文件。
 
3.  將編譯好的rocketmq-console-ng-0.0.jar包上傳linux服務器
這里上傳服務器地址為192.168.162.235,路徑為:/home/rocketMQ/ZHF/
 
4. 運行jar包
java -jar target/rocketmq-console-ng-1.0.0.jar
運行顯示下圖則啟動成功:

 

5. 訪問管理界面

瀏覽器輸入http://192.168.162.235:8080/回車顯示監控界面如下:

 

原文:https://blog.csdn.net/tubunanhai/article/details/81738416

 

 

 

附:幾種常見MQ比較

 

 
分類:  CentOSOtherMQ


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM