2. RocketMQ 2Master和 2Slave模式部署
-
版本選擇
版本 部署使用者 部署目錄 rocketmq-all-4.6.1-bin-release rocketmq-console-ng-2.0.0.jar bybank /data/app rocketmq-console下載地址:https://github.com/apache/rocketmq-externals
- 描述資訊
每個 Master 配置一個 Slave,有多對Master-Slave,HA採用同步雙寫方式,主備都寫成功,嚮應用返回成功。
優點:資料與服務都無單點,Master宕機情況下,訊息無延遲,服務可用性與資料可用性都非常高。
缺點:效能比非同步複製模式略低,大約低10%左右,傳送單個訊息的RT會略高。目前主宕機後,備機不能自動切換為主機,後續會支援自動切換功能。### 先啟動 NameServer
### 在機器 A,啟動第一個 Master
### 在機器 B,啟動第二個 Master
### 在機器 C,啟動第一個 Slave
### 在機器 D,啟動第二個 Slave
以上 Broker 與 Slave 配對是通過指定相同的brokerName 引數來配對,Master的 BrokerId 必須是 0,Slave 的BrokerId 必須是大與 0 的數。
另外一個 Master 下面可以掛載多個 Slave,同一 Master 下的多個 Slave通過指定不同的 BrokerId來區分。 -
伺服器IP資訊
序號 IP地址 角色 模式 A 192.168.160.98 nameServer1,brokerServer1
Master1
B 192.168.160.99 nameServer2,brokerServer2
Master2
C 192.168.160.101 nameServer3,brokerServer3
Master1-slave1
D 192.168.160.102 nameServer3,brokerServer4
Master2-slave2
-
主機修改hostname【4臺伺服器】
# cat /etc/hosts 192.168.160.98 rocketmq-nameserver1
192.168.160.98 rocketmq-master1
192.168.160.99 rocketmq-nameserver2
192.168.160.99 rocketmq-master2
192.168.160.101 rocketmq-master1-slave1
192.168.160.102 rocketmq-master2-slave1 -
上傳解壓【4臺伺服器】
#cd /data/app;unzip rocketmq-all-4.6.1-bin-release # mv rocketmq-all-4.6.1-bin-release rocketmq-4.6.1 # ln -s rocketmq-4.6.1 rocketmq -
建立儲存路徑【4臺伺服器】
#mkdir /data/app/rocketmq/store
#mkdir /data/app/rocketmq/store/commitlog
#mkdir /data/app/rocketmq/store/consumequeue
#mkdir /data/app/rocketmq/store/index -
修改RocketMQ配置檔案【4臺機器】
【broker-a.properties檔案】#所屬叢集名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置檔案填寫的不一樣
brokerName=broker-a
#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
#刪除檔案時間點,預設凌晨 4點
deleteWhen=04
#檔案保留時間,預設 48 小時
fileReservedTime=120
#commitLog每個檔案的大小預設1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個檔案預設存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理檔案磁碟空間
diskMaxUsedSpaceRatio=88
#儲存路徑
storePathRootDir=/data/app/rocketmq/store
#commitLog 儲存路徑
storePathCommitLog=/data/app/rocketmq/store/commitlog
#消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/data/app/rocketmq/store/consumequeue
#訊息索引儲存路徑
storePathIndex=/data/app/rocketmq/store/index
#checkpoint 檔案儲存路徑
storeCheckpoint=/data/app/rocketmq/store/checkpoint
#abort 檔案儲存路徑
abortFile=/data/app/rocketmq/store/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
#強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統預設自動識別,但多網絡卡時IP地址可能讀取錯誤
brokerIP1=192.168.160.98
【broker-a-s.properties檔案】#所屬叢集名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置檔案填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在傳送訊息時,自動建立伺服器不存在的topic,預設建立的佇列數
#defaultTopicQueueNums=4
#是否允許 Broker 自動建立Topic,建議線下開啟,線上關閉
#autoCreateTopicEnable=true
#是否允許 Broker 自動建立訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽埠
listenPort=10911
#刪除檔案時間點,預設凌晨 4點
deleteWhen=04
#檔案保留時間,預設 48 小時
fileReservedTime=120
#commitLog每個檔案的大小預設1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個檔案預設存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理檔案磁碟空間
diskMaxUsedSpaceRatio=88
#儲存路徑
storePathRootDir=/data/app/rocketmq/store
#commitLog 儲存路徑
storePathCommitLog=/data/app/rocketmq/store/commitlog
#消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/data/app/rocketmq/store/consumequeue
#訊息索引儲存路徑
storePathIndex=/data/app/rocketmq/store/index
#checkpoint 檔案儲存路徑
storeCheckpoint=/data/app/rocketmq/store/checkpoint
#abort 檔案儲存路徑
abortFile=/data/app/rocketmq/store/abort
#限制的訊息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#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.160.101【broker-b.properties檔案】
#所屬叢集名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置檔案填寫的不一樣
brokerName=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
#刪除檔案時間點,預設凌晨 4點
deleteWhen=04
#檔案保留時間,預設 48 小時
fileReservedTime=120
#commitLog每個檔案的大小預設1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個檔案預設存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理檔案磁碟空間
diskMaxUsedSpaceRatio=88
#儲存路徑
storePathRootDir=/data/app/rocketmq/store
#commitLog 儲存路徑
storePathCommitLog=/data/app/rocketmq/store/commitlog
#消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/data/app/rocketmq/store/consumequeue
#訊息索引儲存路徑
storePathIndex=/data/app/rocketmq/store/index
#checkpoint 檔案儲存路徑
storeCheckpoint=/data/app/rocketmq/store/checkpoint
#abort 檔案儲存路徑
abortFile=/data/app/rocketmq/store/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
#強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統預設自動識別,但多網絡卡時IP地址可能讀取錯誤
brokerIP1=192.168.160.99【broker-b-s.properties檔案】
#所屬叢集名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置檔案填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在傳送訊息時,自動建立伺服器不存在的topic,預設建立的佇列數
#defaultTopicQueueNums=4
#是否允許 Broker 自動建立Topic,建議線下開啟,線上關閉
#autoCreateTopicEnable=true
#是否允許 Broker 自動建立訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽埠
listenPort=10911
#刪除檔案時間點,預設凌晨 4點
deleteWhen=04
#檔案保留時間,預設 48 小時
fileReservedTime=120
#commitLog每個檔案的大小預設1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個檔案預設存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理檔案磁碟空間
diskMaxUsedSpaceRatio=88
#儲存路徑
storePathRootDir=/data/app/rocketmq/store
#commitLog 儲存路徑
storePathCommitLog=/data/app/rocketmq/store/commitlog
#消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/data/app/rocketmq/store/consumequeue
#訊息索引儲存路徑
storePathIndex=/data/app/rocketmq/store/index
#checkpoint 檔案儲存路徑
storeCheckpoint=/data/app/rocketmq/store/checkpoint
#abort 檔案儲存路徑
abortFile=/data/app/rocketmq/store/abort
#限制的訊息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#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.160.102 -
修改啟動指令碼引數【4臺伺服器】
# vim/data/app/rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
XX:PermSize=128m -XX:MaxPermSize=320m"# vim /data/app/rocketmq/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
XX:PermSize=128m -XX:MaxPermSize=320m"描述: 根據伺服器資源調整JVM
-
啟動NameServer【4臺伺服器】
#cd /data/app/rocketmq/bin # sh mynamesrv & -
啟動BrokerServer【4臺伺服器】
【192.168.160.98】
nameserver啟動方式:cd/data/app/rocketmq/bin/;shmqnamesrv&
broker啟動方式:shmqbroker-c/data/app/rocketmq/conf/2m-2s-async/broker-a.properties>/dev/null2>&1&
【192.168.160.99】
nameserver啟動方式:cd/data/app/rocketmq/bin/;shmqnamesrv&
broker啟動方式:shmqbroker-c/data/app/rocketmq/conf/2m-2s-async/broker-b.properties>/dev/null2>&1&
【192.168.160.101】
broker啟動方式:shmqbroker-c/data/app/rocketmq/conf/2m-2s-async/broker-a-s.properties>/dev/null2>&1&
【192.168.160.102】
broker啟動方式:shmqbroker-c/data/app/rocketmq/conf/2m-2s-async/broker-b-s.properties>/dev/null2>&1& -
服務狀態查詢
-
rocketmq-console-ng 安裝
描述: 可以獨立服務,可以任意挑選一臺伺服器安裝
a. 官網下載rocketmq-console-ng安裝包
b. 在rocketmq-externals-master\rocketmq-console\src\main\resources下修改配置檔案application.properties
,配置
c.進入到 rocketmq-console 資料夾下,執行maven打包操作【打包可以使用jenkins測試打包服務192.168.138.191打包】#cd /存放路徑/rocketmq-console # /data/jenkins/tools/hudson.tasks.Maven_MavenInstallation/3.5.0/bin/mvn clean package -U -Dmaven.test.skip=true d. 找到包target/rocketmq-console-ng-2.0.0.jar下載下來,拷貝到192.168.160.98伺服器執行命令
# java -jar target/rocketmq-console-ng-2.0.0.jar & e. 網頁訪問
【安裝包下載】
console預設賬戶密碼:admin/admin