服務器環境(centos7.6)
- 192.168.191.111 rocketmq-nameserver1 rocketmq-master1
- 192.168.192.112 rocketmq-nameserver2 rocketmq-master2
- vim /etc/hosts追加如下內容:
192.168.191.111 rocketmq-nameserver1
192.168.191.111 rocketmq-master1
192.168.191.112 rocketmq-nameserver2
192.168.191.112 rocketmq-master2
關閉防火墻
- 輸入 systemctl status firewalld.service ,若,防火墻處于running狀態,則執行一下操作
- 輸入 systemctl stop firewalld.service ,關閉防火墻
- 輸入 systemctl disable firewalld.service ,禁用防火墻
下載rocketmq源碼(現在官方不提供編譯好得文件下載)
- 下載地址:https://github.com/apache/rocketmq/archive/rocketmq-all-4.4.0.zip
- 下載maven:http://mirrors.shu.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
- 下載jdk1.8:http://download.oracle.com/otn/java/jdk/8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-linux-x64.tar.gz
jdk安裝及環境變量配置
- cd /usr/local
- mkdir soft
- cd soft
- 把下載好的jdk通過xftp放入到/usr/local/soft下,通過解壓"tar zxvf jdk-8u192-linux-x64.tar.gz"
- vim /etc/profile文件,追加如下內容
JAVA_HOME=/usr/local/soft/jdk1.8.0_192
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
- 執行source /etc/profile,使環境變量生效,運行java命令,看jdk安裝是否成功
maven安裝及環境變量配置
- cd /usr/local/soft
- 把下載好的maven通過xftp放入到/usr/local/soft下,通過解壓"tar zxvf apache-maven-3.6.0-bin.tar.gz"
- vim /etc/profile文件,追加如下內容
#maven環境變量配置
MAVEN_HOME=/usr/local/soft/apache-maven-3.6.0
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME
export PATH
- 執行source /etc/profile,使環境變量生效,執行"mvn -v",看maven安裝是否成功
編譯rocketmq源碼
- cd /usr/local/soft
- mkdir rocketmq
- 把下載好的源碼包通過xftp放入到/usr/local/soft下,通過解壓"unzip rocketmq-all-4.4.0.zip -d rocketmq"
- cd rocketmq/rocketmq-rocketmq-all-4.4.0
- mvn -Prelease-all -DskipTests clean install -U,編譯成功會有“building success”
- 編譯好的文件在“/usr/local/soft/rocketmq/rocketmq-rocketmq-all-4.4.0/distribution/target”目錄下,有apache-rocketmq,有tar.gz,zip的編譯好文件
2m-noslave模式配置
- mkdir /usr/local/rocketmq/store
- mkdir /usr/local/rocketmq/store/commitlog
- mkdir /usr/local/rocketmq/store/consumequeue
- mkdir /usr/local/rocketmq/store/index
- cd /usr/local/rocketmq/conf/2m-noslave/
- vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
- cd /usr/local/rocketmq/conf/2m-noslave
- vim broker-a.properties
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
#0 表示 Master,>0 表示 Slave
brokerName=broker-a
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=/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=ASYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
- vim broker-b.properties
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
#0 表示 Master,>0 表示 Slave
brokerName=broker-b
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=/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=ASYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
-
vim /usr/local/rocketmq/bin/runserver.sh
image.png -
vim /usr/local/rocketmq/bin/runbrimage.png
oker.sh
啟動(兩臺機器執行)
- cd /usr/local/rocketmq/bin
- nohup sh mqnamesrv &
- jps查看nameserver是否啟動成功
- 也可以查看日志 tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
- 在第一臺服務器上執行:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
- 在第二臺服務器上執行:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
- 在兩臺機器上執行:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
rocketmq-console安裝
-
下載地址:https://github.com/apache/rocketmq-externals
,
image.png -
解壓以后,
image.png -
修改項目下的pom.xml文件,以及src/java/resources下的application.properites下的nameserver配置
image.png 運行mvn clean package -Dmaven.test.skip=true,如果編譯錯誤,請修改rocketmq-console項目下的pom.xml文件,一般需要修改rocket-tool的版本。
java -jar target/rocketmq-console-ng-1.0.0.jar
成功運行rockemq-console
image.png
啟動腳本(一鍵啟動)
大家是否覺得啟動比較復雜,需要啟動nameserver,broker,console,大家可以寫啟動腳本一鍵啟動,
- 免密碼登陸
192.168.191.111執行:ssh-keygen -t rsa,一路回車執行
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.191.111
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.191.112
ssh 192.168.191.112驗證免密碼登陸是否成功,同理,192.168.191.112同樣操作。 - 在兩臺服務器上分別,vim ~/.bashrc追加
JAVA_HOME=/usr/local/soft/jdk1.8.0_192
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
解決環境變量引發的問題
- 創建啟動腳本
cd /usr/local/rocketmq/script
vim rocketmq-manager.sh,內容如下
#!/bin/bash
if [[ $1 = 'start' ]];
then
#rocketmq的啟動
#啟動namesrv服務:
ssh 192.168.191.111 "nohup sh /usr/local/rocketmq/bin/mqnamesrv >/dev/null 2>&1 &"
ssh 192.168.191.112 "nohup sh /usr/local/rocketmq/bin/mqnamesrv >/dev/null 2>&1 &"
echo "============================啟動nameserver===================================="
sleep 3s
#啟動broker服務
ssh 192.168.191.111 "nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &"
ssh 192.168.191.112 "nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &"
echo "============================啟動broker========================================"
sleep 3s
#啟動rocketmq-console
ssh 192.168.191.111 "nohup java -jar /usr/local/soft/rocketmq-console-ng-1.0.0.jar >/dev/null 2>&1 &"
echo "========================啟動rocketmq-console=================================="
elif [[ $1 = 'stop' ]];
then
#關閉rocketmq-console
ssh 192.168.191.111 "sudo kill -9 $(ps -ef|grep rocketmq-console-ng-1.0.0.jar | grep java|awk '{print $2}' )"
echo "=======================關閉rocketmq-console==================================="
sleep 3s
#關閉broker服務
ssh 192.168.191.111 "nohup sh /usr/local/rocketmq/bin/mqshutdown broker"
ssh 192.168.191.112 "nohup sh /usr/local/rocketmq/bin/mqshutdown broker"
echo "==========================關閉broker=========================================="
sleep 3s
#關閉namesrv服務:
ssh root@192.168.191.111 "nohup sh /usr/local/rocketmq/bin/mqshutdown namesrv"
ssh root@192.168.191.112 "nohup sh /usr/local/rocketmq/bin/mqshutdown namesrv"
echo "=========================關閉nameserver========================================"
else
echo "參數只能輸入start|stop"
fi
- chmod +x rocketmq-manager.sh
啟動腳本命令就可以/usr/local/rocketmq/script/rocketmq-manager.sh start
關閉腳本就可以/usr/local/rocketmq/script/rocketmq-manager.sh stop
總結
終于達到我想要的效果,查看了官方文檔,官方對于環境搭建的文檔少之又少,對于搭建還是花了不少的時間,后續會出很多關于rocketmq的文章,請各位大佬多多關照。