rocketMq叢集master模式搭建

QH.Thomas 發表於 2022-01-26

首先說明,本文是講述使用vmware虛擬機器搭建3臺伺服器,相當於3臺linux伺服器,並且vmware模擬的也是linux系統。其中在vmware設定了靜態ip,為了方便操作,能夠使用xshell連線,具體如何使用xshell連線vmware的,請移步 這篇文章 vmware虛擬機器設定靜態ip並且通過xshell連線教程(本人已經實現)

好了,下面進入下文:

1:準備rocketMq安裝包 此處已整理好,請直接通過我的百度網盤進行下載 :

連結:https://pan.baidu.com/s/1MeJB3uZyiDo-jwUBPjR9JA
提取碼:8dx9

 

2:本文3臺伺服器ip分別為:192.168.242.10  192.168.242.11  192.168.242.12 下面的操作步驟需要分別在三臺伺服器操作

 

3:分別在10,11,12三臺伺服器的資料夾: /usr/local 新建資料夾 rocketmq。所以新建好資料夾後的完整是:/usr/local/rokcetmq

4:分別在三臺伺服器上傳下載好的rocketMq。如下圖:(注意:此處我是省了解壓rocket.zip 可通過 unzip rocket.zip命令進行解壓)

rocketMq叢集master模式搭建

 

5:修改環境變數(記得三臺伺服器):vi /etc/profile

內容:export ROCKETMQ_HOME=/usr/local/rocketmq

重新整理環境變數,起效:source /etc/profile

 

6:修改rocketmq的配置檔案:/usr/local/rocketmq/conf/2m-noslave/broker-a.properties和/usr/local/rocketmq/conf/2m-noslave/broker-b.properties

rocketMq叢集master模式搭建

 

 

 增加內容如下:主要修改的配置資訊是:namesrvAddr,brokerIP1,brokerId

 

broker-a.properties:

#此處變數本來就有,只需要自定義後面的名字就好,此處我是為了區分ip,所以定義:Rocket-10
brokerClusterName=RockMq-10 brokerName=broker-a-12 # 0 表示 Master,>0 表示 Slave 此處如果在192.168.242.10伺服器的rocketmq作為master,那麼此值取0,其餘伺服器取1(大於0的整數) brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=ASYNC_MASTER flushDiskType=ASYNC_FLUSH #在傳送訊息時,自動建立伺服器不存在的topic,預設建立的佇列數 defaultTopicQueueNums=4 #是否允許Broker自動建立Topic,建議線下開啟,線上關閉 autoCreateTopicEnable=true #是否允許Broker自動建立訂閱組,建議線下開啟,線上關閉 autoCreateSubscriptionGroup=true # 檔案保留時間,預設 72 小時。根據業務情況調整 fileReservedTime=168 # nameServer地址,分號分割,這裡寫自己需要做叢集的三臺伺服器的地址 namesrvAddr=192.168.242.10:9876;192.168.242.11:9876;192.168.242.12:9876 # Details:Should be configured if having multiple addresses; Default value:InetAddress for network interface # 本機ip地址,預設系統自動識別,但是某些多網路卡機器會存在識別錯誤的情況,這種情況 #下可以人工配置。 brokerIP1=192.168.242.10

 

 broker-b.properties:

brokerClusterName=RockMq-10
brokerName=broker-b-10
# 0 表示 Master,>0 表示 Slave
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH


#在傳送訊息時,自動建立伺服器不存在的topic,預設建立的佇列數
defaultTopicQueueNums=4

#是否允許Broker自動建立Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true

#是否允許Broker自動建立訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true

# 檔案保留時間,預設 72 小時。根據業務情況調整
fileReservedTime=168

# nameServer地址,分號分割,這裡寫自己需要做叢集的兩臺伺服器的地址
namesrvAddr=192.168.242.10:9876;192.168.242.11:9876;192.168.242.12:9876

# Details:Should be configured if having multiple addresses; Default value:InetAddress for network interface
# 本機ip地址,預設系統自動識別,但是某些多網路卡機器會存在識別錯誤的情況,這種情況
#下可以人工配置。
brokerIP1=192.168.242.10

 

特別注意:brokerIP1這個指定ip的,一定是當前linux的ip

7:在10,11,12伺服器修改rocketmq的啟動指令碼的jvm引數(對了,記得在linux伺服器部署jdk1.7以上的版本,博主使用的是jdk1.8。jdk1.8的部署教程請看:CentOS7安裝JDK1.8圖文教程

vim /usr/local/rocketmq/bin/runbroker.sh

這是未修改前的:不修改會啟動不了,會報jvm記憶體沒這麼大

rocketMq叢集master模式搭建

 

 所以修改後如下:(大家自行決定這個值)

rocketMq叢集master模式搭建

 

 

8:在10,11,12三臺伺服器啟動叢集:nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties  >/dev/null 2>&1 &

 

9:看看是否啟動成功:輸入jps命令,能看到namesrv和broker證明啟動成功(此處我沒有啟動叢集,因為是沒有連線同一網路,所以vmware裡面的linxu系統連線不上)

rocketMq叢集master模式搭建

 

 

10:關閉rocketmq

cd /usr/local/rocketmq/bin

關閉namesrv服務:sh mqshutdown namesrv
關閉broker服務:sh mqshutdown broker

>>>>>如果發現無許可權操作檔案,請執行命令:

chmod +777 ./mqnamesrv
chmod +777 ./mqbroker

 

11-----擴充(使用rocketmq-dashboard,頁面檢視rocket叢集)

  rocketmq-dashboard下載:

連結:https://pan.baidu.com/s/1AQrfgSW8a5VuIVyq_FOfbA
提取碼:dnjw

 

12、下載後,在idea匯入該專案,在maven欄,跳過test測試,進行:clean、compile

 

rocketMq叢集master模式搭建

 

 

13:然後在配置檔案修改rocketMq的連線ip資訊:(這裡是我的vmware虛擬機器裡面的三臺rocketmq的叢集配置資訊)

rocketMq叢集master模式搭建

 

 

 

 

14:啟動方式一:本地啟動(不用說了吧)

   啟動成功後:http://localhost:8888/

  這裡的埠看properties配置檔案,在13步驟大家可以看到我的server.port=8888。大家也可自行配置

 

15、linux方式啟動打包的jar包:打包步驟在12,只要打包成功,就是沒問題的。可以看到下圖的jar包:rocketmq-dashboard-1.0.1-SNAPSHOT.jar

     linux啟動該jar包如下:  方式一: java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar  (這種方式只要關閉執行命令後模式,就會停止)

                                           方式二:nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar (後臺啟動,這種方式即便是退出linux系統,jar包都執行)

rocketMq叢集master模式搭建

 

 

16:現在已經啟動了三臺伺服器,並且使用xshell連線上(如果不會怎麼使用xshell連線虛擬機器的,請看我的另外一篇部落格):

rocketMq叢集master模式搭建

 

 

 

 17:啟動rocketmq-dashboard-1.0.1-SNAPSHOT.jar

      命令:sh start-api.sh

      start-api.sh的命令內容如下:

      

nohup java -Xms128m -Xmx256m  -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar > api.log 2>&1 &

  rocketMq叢集master模式搭建

 

 

 我們根據日誌:api.log檢視裡面的日誌輸出即可知道是否啟動成功:tail -fn200 api.log
此處我的rocketMq叢集還沒啟動,所以會報連線不上的錯誤,但是這已經證明jar包啟動成功,且埠:8888 那麼介面的訪問地址:http://ip:埠 =http://192.168.242.10:8888/

注意:如果把該地址放到瀏覽器提示無法訪問該網站,那就是防火牆的問題,沒有吧該埠:8888開放出去,請執行如下的命令其中之一:

  一:開放埠(這種方式我也試過,命令可以執行成功,但是訪問地址還是不行):firewall-cmd --add-port=8888/tcp --permanent

 

  rocketMq叢集master模式搭建

 

 

 

  二:關閉防火牆(在自己的vmware可以使用該方式,但是在真正的linux伺服器是萬萬不可---但是目前我使用該方式):systemctl stop firewalld

 

rocketMq叢集master模式搭建

 

 

 

 

rocketMq叢集master模式搭建

 

 

 

18:啟動rocketMq叢集:
  

在:192.168.242.10/192.168.242.11/192.168.242.12分別執行:
執行命令1:nohup sh mqnamesrv &
執行命令2:nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties  >/dev/null 2>&1 &

使用命令:jps可以知道是否啟動成功:圖二是成功的

注意:ROCKETMQ_HOME 是rocket在linux配置的環境變數
命令:vi /etc/profile

rocketMq叢集master模式搭建

 rocketMq叢集master模式搭建

 

 

 

  

   19:上面18步驟我只在192.168.242.10執行了,大家可以在介面的cluster(叢集)裡可以看到該伺服器上的叢集————————有點小激動是不是

rocketMq叢集master模式搭建

 

 

rocketMq叢集master模式搭建

 

 注意:此處我已經把三臺vmware的linux系統的防火牆已經關閉。systemctl stop firewalld