🎈 作者:互聯網-小啊宇
🎈 簡介: CSDN 運維領域創作者、阿里云專家博主。目前從事 Kubernetes運維相關工作,擅長Linux系統運維、開源監控軟件維護、Kubernetes容器技術、CI/CD持續集成、自動化運維、開源軟件部署維護等領域。
🎈 博客首頁:CSDN【互聯網-小阿宇】 、阿里云【互聯網-小阿宇】
🎈 歡迎小伙伴們點贊👍、收藏?、留言💬
RocketMQ雙主雙從同步集群部署
- 服務器環境:
- 雙主雙從同步集群部署:
- 一、安裝JDK環境
- 1.1 上傳安裝包
- 1.2 解壓安裝包
- 1.3 編寫環境變量文件
- 1.4 驗證JDK版本
- 二、安裝RocketMQ
- 1.1 解壓安裝包
- 1.2 【192.168.8.16】修改配置文件
- 1.3 【192.168.8.18】修改配置文件
- 1.4 關鍵配置詳解:
- 1.5 啟動兩臺服務器的nameServer
- 1.6 分別啟動兩臺服務器的broker的節點
- 1.6.1 【192.168.8.16】啟動a主節點、b從節點
- 1.6.2 【192.168.8.18】啟動b主節點、a從節點
- 1.7 啟動效果
- 1.8 常用啟停命令:
- 三、rocketmq-dashboard 控制臺部署
- 1.1 下載安裝包到電腦主機編寫application.yml配置文件
- 1.2 將rocketmq-dashboard-master打包
- 1.2.1 如果主機有java環境、maven環境的直接進行打包就行
- 1.2.2 linux安裝maven進行打包
- 1.3 啟動rocketmq-dashboard 控制臺
- 1.4 開啟鑒權登錄
服務器環境:
服務器IP | 操作系統 | 備注 |
---|---|---|
192.168.8.16 | Centos7.5 | JDK(1.8+)、RocketMQ(5.1.2) |
192.168.8.18 | Centos7.5 | JDK(1.8+)、RocketMQ(5.1.2) |
RocketMQ下載地址:
https://rocketmq.apache.org/download/
雙主雙從同步集群部署:
服務器IP | broker名稱 | 備注 |
---|---|---|
192.168.8.16 | broker-a | a主節點 |
192.168.8.16 | broker-b-s | b從節點 |
192.168.8.18 | broker-b | b主節點 |
192.168.8.18 | broker-a-s | a從節點 |
創建安裝目錄并存放安裝包目錄
mkdir /domain
關閉防火墻、沙盒
systemctl stop firewalld && systemctl disable firewalldvim /etc/selinux/config
#修改
ELINUX=disabled#重啟
reboot
一、安裝JDK環境
1.1 上傳安裝包
1.2 解壓安裝包
[root@localhost ~]# tar -zxf /domain/jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/jdk1.8.0_171 /usr/local/java
1.3 編寫環境變量文件
[root@localhost ~]# vim /etc/profile
#尾部添加
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
[root@localhost ~]# source /etc/profile
1.4 驗證JDK版本
[root@localhost ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
二、安裝RocketMQ
1.1 解壓安裝包
unzip /domain/rocketmq-all-5.1.2-bin-release.zip -d /domain/
1.2 【192.168.8.16】修改配置文件
- 修改運行內存可編輯runserver.sh與runbroker.sh(
需要的修改,不需要跳過
)
1、bin/runserver.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1g -Xmn128m -XX:metaspaceSize=120m -XX:MaxMetaspaceSize=320m"
2、bin/runnbroker.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1G -Xmn128m"
- 創建rocketMQ存儲目錄
mkdir /domain/rocketMQ
- 修改conf目錄中2m-2s-sync目錄中的配置文件
vim /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a.properties
# 所屬集群名字
brokerClusterName=test
# broker名字,注意此處不同的配置文件填寫的不一樣(按配置文件文件名來匹配)
brokerName=broker-a
# 0 表示Master, > 0 表示slave
brokerId=0
# 注冊中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在發送消息時,自動創建服務器不存在的Topic,默認創建的隊列數
defaultTopicQueueNums=4
# 是否允許Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
# 是否允許Broker自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
# Broker 對外服務的監聽端口
listenPort=10933
# 刪除文件時間點,默認是凌晨4點
deleteWhen=04
# 文件保留時間,默認48小時
fileReservedTime=120
# commitLog每個文件的大小默認1G
# 附加:消息實際存儲位置,和ConsumeQueue是mq的核心存儲概念,之前搭建2m環境的時候創建在store下面,用于數據存儲,consumequeue是一個邏輯的概念,消息過來之后,consumequeue并不是把消息所有保存起來,而是記錄一個數據的位置,記錄好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
# 存儲路徑
storePathRootDir=/domain/rocketMQ/store
# commitLog存儲路徑
storePathCommitLog=/domain/rocketMQ/commitlog
# 消費隊列存儲路徑
storePathConsumeQueue=/domain/rocketMQ/consumequeue
# 消息索引存儲路徑
storePathIndex=/domain/rocketMQ/index
# checkpoint 文件存儲路徑
storeCheckpoint=/domain/rocketMQ/checkpoint
# abort 文件存儲路徑
abortFile=/domain/rocketMQ/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
# 發消息線程池數量
sendMessageTreadPoolNums=128
# 拉消息線程池數量
pullMessageTreadPoolNums=128
- slave配置
cat /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b-s.properties
# 所屬集群名字
brokerClusterName=test
# broker名字,注意此處不同的配置文件填寫的不一樣(按配置文件文件名來匹配)
brokerName=broker-b-s
# 0 表示Master, > 0 表示slave
brokerId=1
# 注冊中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在發送消息時,自動創建服務器不存在的Topic,默認創建的隊列數
defaultTopicQueueNums=4
# 是否允許Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
# 是否允許Broker自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
# Broker 對外服務的監聽端口
listenPort=10900
# 刪除文件時間點,默認是凌晨4點
deleteWhen=04
# 文件保留時間,默認48小時
fileReservedTime=120
# commitLog每個文件的大小默認1G
# 附加:消息實際存儲位置,和ConsumeQueue是mq的核心存儲概念,之前搭建2m環境的時候創建在store下面,用于數據存儲,consumequeue是一個邏輯的概念,消息過來之后,consumequeue并不是把消息所有保存起來,而是記錄一個數據的位置,記錄好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
# 存儲路徑
storePathRootDir=/domain/rocketMQ/slave/store
# commitLog存儲路徑
storePathCommitLog=/domain/rocketMQ/slave/commitlog
# 消費隊列存儲路徑
storePathConsumeQueue=/domain/rocketMQ/slave/consumequeue
# 消息索引存儲路徑
storePathIndex=/domain/rocketMQ/slave/index
# checkpoint 文件存儲路徑
storeCheckpoint=/domain/rocketMQ/slave/checkpoint
# abort 文件存儲路徑
abortFile=/domain/rocketMQ/slave/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
# 發消息線程池數量
sendMessageTreadPoolNums=128
# 拉消息線程池數量
pullMessageTreadPoolNums=128
1.3 【192.168.8.18】修改配置文件
與192.168.8.16的區別在于修改的文件名不同,我把詳細配置一樣放在下面
- 修改運行內存可編輯runserver.sh與runbroker.sh(
需要的修改,不需要跳過
)
1、bin/runserver.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1g -Xmn128m -XX:metaspaceSize=120m -XX:MaxMetaspaceSize=320m"
2、bin/runnbroker.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1G -Xmn128m"
- 創建rocketMQ存儲目錄
mkdir /domain/rocketMQ
- 修改conf目錄中2m-2s-sync目錄中的配置文件
vim /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b.properties
# 所屬集群名字
brokerClusterName=test
# broker名字,注意此處不同的配置文件填寫的不一樣(按配置文件文件名來匹配)
brokerName=broker-b
# 0 表示Master, > 0 表示slave
brokerId=0
# 注冊中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在發送消息時,自動創建服務器不存在的Topic,默認創建的隊列數
defaultTopicQueueNums=4
# 是否允許Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
# 是否允許Broker自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
# Broker 對外服務的監聽端口
listenPort=10933
# 刪除文件時間點,默認是凌晨4點
deleteWhen=04
# 文件保留時間,默認48小時
fileReservedTime=120
# commitLog每個文件的大小默認1G
# 附加:消息實際存儲位置,和ConsumeQueue是mq的核心存儲概念,之前搭建2m環境的時候創建在store下面,用于數據存儲,consumequeue是一個邏輯的概念,消息過來之后,consumequeue并不是把消息所有保存起來,而是記錄一個數據的位置,記錄好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
# 存儲路徑
storePathRootDir=/domain/rocketMQ/store
# commitLog存儲路徑
storePathCommitLog=/domain/rocketMQ/commitlog
# 消費隊列存儲路徑
storePathConsumeQueue=/domain/rocketMQ/consumequeue
# 消息索引存儲路徑
storePathIndex=/domain/rocketMQ/index
# checkpoint 文件存儲路徑
storeCheckpoint=/domain/rocketMQ/checkpoint
# abort 文件存儲路徑
abortFile=/domain/rocketMQ/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
# 發消息線程池數量
sendMessageTreadPoolNums=128
# 拉消息線程池數量
pullMessageTreadPoolNums=128
- slave配置
cat /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a-s.properties
# 所屬集群名字
brokerClusterName=test
# broker名字,注意此處不同的配置文件填寫的不一樣(按配置文件文件名來匹配)
brokerName=broker-a-s
# 0 表示Master, > 0 表示slave
brokerId=1
# 注冊中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在發送消息時,自動創建服務器不存在的Topic,默認創建的隊列數
defaultTopicQueueNums=4
# 是否允許Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
# 是否允許Broker自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
# Broker 對外服務的監聽端口
listenPort=10900
# 刪除文件時間點,默認是凌晨4點
deleteWhen=04
# 文件保留時間,默認48小時
fileReservedTime=120
# commitLog每個文件的大小默認1G
# 附加:消息實際存儲位置,和ConsumeQueue是mq的核心存儲概念,之前搭建2m環境的時候創建在store下面,用于數據存儲,consumequeue是一個邏輯的概念,消息過來之后,consumequeue并不是把消息所有保存起來,而是記錄一個數據的位置,記錄好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
# 存儲路徑
storePathRootDir=/domain/rocketMQ/slave/store
# commitLog存儲路徑
storePathCommitLog=/domain/rocketMQ/slave/commitlog
# 消費隊列存儲路徑
storePathConsumeQueue=/domain/rocketMQ/slave/consumequeue
# 消息索引存儲路徑
storePathIndex=/domain/rocketMQ/slave/index
# checkpoint 文件存儲路徑
storeCheckpoint=/domain/rocketMQ/slave/checkpoint
# abort 文件存儲路徑
abortFile=/domain/rocketMQ/slave/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
# 發消息線程池數量
sendMessageTreadPoolNums=128
# 拉消息線程池數量
pullMessageTreadPoolNums=128
1.4 關鍵配置詳解:
brokerClusterName:只要是同一個集群里面的節點,都必須是這一個名稱,可以自定義
brokerName:broker的名稱,同一個broker的主從節點名稱保持一致。
brokerId:broker的id標識。0:主節點,大于0都是從節點
namesrvAddr:nameSrv的注冊中心地址,可以是集群模式,多個ip之間使用英文的;分隔
listenPort:監聽端口,同一個ip地址下,端口不能保持一致,需修改
brokerRole:broker的角色,ASYNC_MASTER 異步復制Master,SYNC_MASTER 同步雙寫Master,SLAVE從節點專用。
flushDiskType:數據刷盤方式。ASYNC_FLUSH 異步刷盤,SYNC_FLUSH 同步刷盤
storePathRootDir=/usr/local/rocketMQ/store 存儲路徑
storePathCommitLog=/usr/local/rocketMQ/commitlog commitLog存儲路徑
storePathConsumeQueue=/usr/local/rocketMQ/consumequeue 消費隊列存儲路徑
storePathIndex=/usr/local/rocketMQ/index消息索引存儲路徑
storeCheckpoint=/usr/local/rocketMQ/checkpoint checkpoint 文件存儲路徑
abortFile=/usr/local/rocketMQ/abort abort 文件存儲路徑
1.5 啟動兩臺服務器的nameServer
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqnamesrv -> namesrc.log 2>&1 &
1.6 分別啟動兩臺服務器的broker的節點
1.6.1 【192.168.8.16】啟動a主節點、b從節點
#a主節點
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a.properties -> broker-a.log 2>&1 &
#b從節點
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b-s.properties -> broker-b-s.log 2>&1 &
1.6.2 【192.168.8.18】啟動b主節點、a從節點
#b主節點
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b.properties -> broker-b.log 2>&1 &
#a從節點
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a-s.properties -> broker-a-s.log 2>&1 &
1.7 啟動效果
兩臺都一樣
1.8 常用啟停命令:
sh mqshutdown broker 停止brokersh mqshutdown namesrv 停止namesrv
三、rocketmq-dashboard 控制臺部署
下載地址:
https://github.com/apache/rocketmq-dashboard
1.1 下載安裝包到電腦主機編寫application.yml配置文件
文件位置:rocketmq-dashboard-master\src\main\resources\application.yml
右鍵使用記事本打開
修改以下內容為節點IP
namesrvAddrs:- 192.168.8.16:9876- 192.168.8.18:9876
編輯完成后保存退出!
1.2 將rocketmq-dashboard-master打包
1.2.1 如果主機有java環境、maven環境的直接進行打包就行
在pom.xml同級目錄操作命令
mvn clean package -Dmaven.test.skip=true
如果報錯,根據報錯原因進行解決:
- 有可能是maven的版本過低,進行升級即可
- 有可能用的自己的maven配置,部分依賴無法下載,通過指定項目本身pom.xml
mvn clean package -Dmaven.test.skip=true -f C:\Desktop\rocketmq-dashboard-master\rocketmq-dashboard-master\pom.xml
打包成功后將jar包上傳到服務器
1.2.2 linux安裝maven進行打包
Maven工具安裝:http://t.csdn.cn/IIZVH
將修改過application.yml配置的目錄上傳到服務器
[root@localhost rocketmq-dashboard-master]# pwd
/root/rocketmq-dashboard-master/rocketmq-dashboard-master
[root@localhost rocketmq-dashboard-master]# ls
docs frontend LICENSE NOTICE package-lock.json pom.xml README.md src style target
maven打包
mvn clean package -Dmaven.test.skip=true -f pom.xml
成功界面:
如果有報錯可能是因為maven版本太低,通過yum -y install maven安裝版本為Apache Maven 3.0.5,版本太低導致報錯,進行升級即可
1.3 啟動rocketmq-dashboard 控制臺
cd /root/rocketmq-dashboard-master/rocketmq-dashboard-master/target
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar -> dashboard.log 2>&1 &
查看日志成功啟動:
關閉防火墻
方式一:建議測試環境
1、關閉防火墻。
systemctl stop firewalld
方式二:生產環境使用
1、開放指定的端口號:firewall-cmd --zone=public --add-port=8080/tcp --permanent
2、重啟防火墻:firewall-cmd --reload
注意:使用方式二,就需要將nameServer 與 broker 的端口也需要開放出來。使用了那個端口就必須開放出來,否則會被防火墻給阻擋。
訪問rocketmq-dashboard 控制臺
訪問http://ip:8080
1.4 開啟鑒權登錄
對resource下的application.yml文件進行編輯
對resource下的user.properties修改
用戶名=密碼,角色:1、管理員 2、普通用戶
重新打包
cd <pom.xml同級目錄>
mvn clean package -Dmaven.test.skip=true -f pom.xml
運行rocketmq-dashboard 控制臺
cd /root/rocketmq-dashboard-master/rocketmq-dashboard-master/target
訪問rocketmq-dashboard 控制臺
訪問http://ip:8080