rocketMq叢集master模式搭建
首先說明,本文是講述使用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.10192.168.242.11192.168.242.12 下面的操作步驟需要分別在三臺伺服器操作
3:分別在10,11,12三臺伺服器的資料夾: /usr/local 新建資料夾 rocketmq。所以新建好資料夾後的完整是:/usr/local/rokcetmq
4:分別在三臺伺服器上傳下載好的rocketMq。如下圖:(注意:此處我是省了解壓rocket.zip 可通過 unzip rocket.zip命令進行解壓)
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
增加內容如下:主要修改的配置資訊是: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記憶體沒這麼大
所以修改後如下:(大家自行決定這個值)
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系統連線不上)
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叢集)