1. 程式人生 > >RocketMQ之雙Master叢集搭建筆記記錄

RocketMQ之雙Master叢集搭建筆記記錄

一:RocketMQ雙master叢集部署

  1. 伺服器環境(我採用的虛擬機器,centos6 .5【特別注意:安裝的虛擬機器centos系統一定得是64位的,32位的會啟動不起來。即便起來了也會有很多問題,深坑勿踩】)
     ip       使用者名稱    密碼        角色     模式

192.168.197.101   root        nameServer1,brokerServer1   Master1

192.168.197.101   root         nameServer1,brokerServer1   Master2
2. Hosts新增資訊
對兩臺機器同時執行vi /etc/hosts  輸入如下圖所示的資訊
這裡我們是將nameServer和broker部署在同一臺機器上的,同樣也可以分開部署。
這裡寫圖片描述


這裡寫圖片描述

備註:想知道配置的host是否起作用了,很簡單,可以在101機器上用ping rocketmq-nameserver2來看是否能ping通
3.上傳解壓MQ(兩臺機器)
我的檔案是上傳到如下圖所示的目錄:
這裡寫圖片描述
然後進行解壓:
Linux命令:

tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local(解壓到/usr/local下)
cd ..(切換到解壓後的目錄)
mv alibaba-rocketmq alibaba-rocketmq-3.2.6(修改下加壓後的MQ名稱,方便自己知道是什麼版本的,當然也可以不修改)
ln -s alibaba-rocketmq
-3.2.6 rocketmq(建立一個軟連結,以後就在rocketmq中操作)

這裡寫圖片描述

4.建立儲存路徑(兩臺機器)
我的建立路徑就是放在軟連結下的。

mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index

這裡寫圖片描述

5.修改rocketmq的配置檔案(兩臺機器)
配置檔案在conf下。
這裡寫圖片描述
因為當前說的是雙master叢集,所以修改2m-noslave資料夾下的配置檔案即可。因為有兩個master主節點,所以主節點1啟動依賴broker-a.properties,主節點2啟動依賴broker-b.properties,如果是三個Master,那麼還會有一個broker-c.properties,以此類推。
這裡寫圖片描述


這些配置檔案預設有一些配置在裡面,實際運用中這些是完全不夠的,一般可以全刪掉,重新配置。

#所屬叢集名字
brokerClusterName=rocketmq-cluster
#broker名字(自己隨意起,別一樣即可),注意此處不同的配置檔案填寫的不一樣(比如broker-a.properties 中填寫broker-a,broker-b.properties填寫broker-b即可。)
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=/usr/local/rocketmq/store
#commitLog 儲存路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#訊息索引儲存路徑
storePathIndex=/usr/local/rocketmq/store/index
#限制的訊息大小
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

6.修改日誌配置檔案(兩臺機器)
在建立的軟連線資料夾rocketmq下建立一個logs目錄 mkdir /usr/local/rocketmq/logs
然後執行cd /usr/local/rocketmq/conf && sed -i ‘s#${user.home}#/usr/local/rocketmq/#g’ *.xml進行日誌檔案的替換,sed是linux的替換命令。兩臺機器同樣操作

mkdir /usr/local/rocketmq/logs
cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq/#g' *.xml

7.修改啟動指令碼引數(兩臺機器)
因為我們之前將nameServer和broker放在了同一臺機器上,所以需要分別對nameServer和broker進行jvm的效能調優。生產環境預設即可不要修改。(因為我使用的是虛擬機器,記憶體分配的都不大,而rocketmq預設的配置應該是4g。虛擬機器測試可以修改小一點【但是儘量別小於1G,否則可能會起不來,報分配的記憶體太小了】,生產上使用預設的配置即可或者更大點)
1)broker的調優
vi /usr/local/rocketmq/bin/runbroker.sh
JAVA_OPT=”JAVAOPTserverXms1gXmx1gXmn512mXX:PermSize=128mXX:MaxPermSize=320m2nameserver調vi/usr/local/rocketmq/bin/runserver.shJAVAOPT={JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m”
這裡寫圖片描述

8.啟動NameServer(兩臺機器)
先啟動兩臺機器的NameServer,再啟動兩臺機器的Borker,關機的時候順序相反,先關閉兩臺機器的Broker,再關閉兩臺機器的Nameserve。
這裡寫圖片描述
mqadnin是管理員命令,mqfiltersrv是rocketmq的單獨元件,mqnamesrv是NameServer,mqbroker是Broker。

cd /usr/local/rocketmq/bin
nohup sh mqnamesrv & (nohup命令是起一個守護執行緒)

由於rocketmq是java寫的,所以用jps命令即可看到程序。(如果有則說明啟動成功,沒有說明失敗,可以看nohup.out檔案的日誌資訊)
這裡寫圖片描述

備註:如果啟動失敗,出現什麼Please set the JAVA_HOME variable in your environment, We need java(x64)!的錯誤,那是因為openjdk,這個在平時用的時候,不配JAVA_HOME也是可以用的,但是因為rocketmq是純java編的,所以必須配置JAVA_HOME。 具體配置就是在/etc/profile中,怎麼配置如果不會找度娘。

9.啟動BrokerServer服務(兩臺機器)
啟動BrokerServer A 192.168.197.101

cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &

啟動BrokerServer B 192.168.197.102

cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &

啟動無錯誤的話,用jps可以看到如下:
這裡寫圖片描述
備註:jps顯示有,只說明啟動了。但不代表啟動沒報錯,具體需要看啟動的日誌

特別說明:broker啟動經常出現的問題就是jps命令啟動成功了,但是如果看日誌會報錯,大致如下:
這裡寫圖片描述
一般這個情況在配置檔案沒啥問題的情況下,就是虛擬機器的防火牆開啟了,關閉即可。

最終成功的日誌如下:
這裡寫圖片描述

                         至此叢集配置完畢。

二.rocketMQ管控臺
下載個rocketmq-console.war 3.2.6 管控臺war包解壓安裝部署到tomcat即可。只需要修改下配置檔案即可。
這裡寫圖片描述

這裡寫圖片描述
啟動tomcat,然後訪問即可: ip:埠/部署專案名稱

這裡寫圖片描述

至於這個管控臺如何使用,自行百度或參考API文件。