網上很多搭建RocketMQ的教程,但是在樓主的瘋狂百度以及瘋狂采坑下,終於成功的搭建了一個RocketMQ的集群(LingZsj真的是太難了啊~.~)
廢話不多說開始搭建集群了
咋們搭建一個多master多slave模式(同步)的集群,這邊條件有限只有兩台服務器(所以我們的集群就是一個雙主雙從的集群架構模式了)
首先說明下這邊我直接寫Linux命令,目的很簡單就是為了能讓一個 從未搭建過RocketMQ的小白也能通過復制粘貼搭建出一個屬於自己的集群
ps:安裝JDK的運行環境是必須的應為RokcetMQ是利用java語言來寫的所以他必須依賴jdk來運行所以我們要先在兩台服務器上分別安裝jdk
cd /usr/local
mkdir javaJdk
cd javaJdk
#將下載好的jdk傳輸到服務器上
#傳輸好了解壓縮下
tar -zxvf jdk-8u271-linux-x64.tar.gz
#刪掉JDK壓縮包
rm -rf jdk-8u271-linux-x64.tar.gz
配置jdk的運行環境
vim /etc/profile
#jd環境配置部分
export JAVA_HOME=/usr/local/javaJdk/jdk1.8.0_271
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
#保存文件
esc
:
wq
重新加載一次文件
source /etc/profile
1.修改網卡環境
cd /etc/hosts (下面是host的配置文件部分,同樣的配置在第二台服務器也粘貼一次)
兩台服務器一下分別是兩台服務器的ip地址
# nameserver
xx.xxx.xx.xx1 rocketmq-nameserver1
xx.xxx.xx.xx2 rocketmq-nameserver2
# broker
xx.xxx.xx.xx1 rocketmq-master1
xx.xxx.xx.xx1 rocketmq-slave2
xx.xxx.xx.xx2 rocketmq-master2
xx.xxx.xx.xx2 rocketmq-slave1
2.重啟網卡(第二台服務器同樣)
systemctl restart network
ps;這邊說下的第一個坑了,由於該服務器上有一堆docker服務(服務未投入生產)所以重啟網卡后服務會出現連接不上的問題,問題不大重啟docker服務即可然后在重啟需要的容器(別傻乎乎的去重啟服務器)
希望(shutdown -r now 立即重啟) 這個命令你不會用到
3.關閉Linux服務器的防火牆(第二台同樣)
# 關閉防火牆
systemctl stop firewalld.service
# 查看防火牆的狀態
firewall-cmd --state
# 禁止firewall開機啟動
systemctl disable firewalld.service
或者為了安全,只開放特定的端口號,RocketMQ默認使用3個端口:9876 、10911 、11011 。如果防火牆沒有關閉的話,那么防火牆就必須開放這些端口:
# 開放name server默認端口
firewall-cmd --remove-port=9876/tcp --permanent
# 開放master默認端口
firewall-cmd --remove-port=10911/tcp --permanent
# 開放slave默認端口 (當前集群模式可不開啟)
firewall-cmd --remove-port=11011/tcp --permanent
# 重啟防火牆
firewall-cmd --reload
4.創建文件夾
cd /usr/local
#創建rocketmq文件夾
mkdir rocketmq
#進入到rocketmq文件夾內
cd rocketmq/
5.官網下載rockerMQ的安裝包(這邊下載二進制安裝包)
官網鏈接地址:http://rocketmq.apache.org/dowloading/releases/ ---這邊我下載的是4.4.0版本的
6.將下載的文件上傳到rocketmq文件夾上(服務2也需要)
7.解壓縮zip文件(服務2也需要)
unzip rocketmq-all-4.4.0-bin-release.zip
8.刪掉安裝包這邊(這步不建議你們跟我一樣寫,自己斟酌)
rm -rf rocketmq-all-4.4.0-bin-release.zip
9.創建集群需要的文件夾
#主節點文件的存儲路徑
mkdir /usr/local/rocketmq/mstore
mkdir /usr/local/rocketmq/mstore/commitlog
mkdir /usr/local/rocketmq/mstore/consumequeue
mkdir /usr/local/rocketmq/mstore/index
#從節點服務服務器的文件存儲路徑
mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
10.xx.xxx.xx.xx1服務器的broker-a.properties配置文件
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#配置外網連接地址
brokerIP1 = xx.xxx.xx.xx1
#在發送消息時,自動創建服務器不存在的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=/usr/local/rocketmq/mstore
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/mstore/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/mstore/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/mstore/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/mstore/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/mstore/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=SYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
11.xx.xxx.xx.xx1的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
#配置外網連接地址
brokerIP1 = xx.xxx.xx.xx1
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=11011
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 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
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/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
12.xx.xxx.xx.xx2服務器的broker-b,properties文件的配置
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#配置外網連接地址
brokerIP1 = xx.xxx.xx.xx2
#在發送消息時,自動創建服務器不存在的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=/usr/local/rocketmq/mstore
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/mstore/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/mstore/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/mstore/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/mstore/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/mstore/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=SYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
13.xx.xxx.xx.xx2中的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
#配置外網連接地址
brokerIP1 = xx.xxx.xx.xx2
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=11011
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 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
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/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
ps:這邊說下master節點的文件夾和slave文件的文件夾為什么要分別創建應為公用一個問件加master服務能起來但是slave服務時起不來的(不信可以去試試)
15.修改啟動腳本文件(兩台服務都修改)
cd /usr/local/rockermq/rocketmq-all-4.4.0-bin-release/bin
vi runbroker.sh
-------文件配置如下-------
# 開發環境配置 JVM Configuration
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
vi runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
啟動服務
進入到rocketmq的安裝包內
cd /usr/local/rockermq/rocketmq-all-4.4.0-bin-release/bin
ls
#首先分別啟動兩台服務器(xx.xxx.xx.xx1)的namesrv服務
nohup sh mqnamesrv & (&不能掉)
xx.xxx.xx.xx2的namesrv服務
nohup sh mqnamesrv & (&不能掉)
#啟動xx.xxx.xx.xx1的master節點服務
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-a.properties &
#啟動slave服務
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-b-s.properties &
#啟動xx.xxx.xx.xx2
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-b.properties &
#啟動slave服務
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-a-s.properties &
16.利用jps查看下(安裝了jdk就能用--下圖表示成功)
17.停止namesrv和broker服務
namesrv服務(停止)
sh mqshutdown namesrv
broker服務(停止)
sh mqshutdown broker
18.安裝rocketmq-console控制台
利用docker安裝控制台就好了
直接運行如下命令就好了
docker pull styletang/rocketmq-console-ng
安裝鏡像:
docker run -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=xx.xxx.xx.xx1:9876;xx.xxx.xx.xx2:9876 -Drocketmq.config.isVIPChannel=false" -p 9326:8080 -t styletang/rocketmq-console-ng
好了這就裝好了~~
上圖:(ok了)