演示虛擬機環境:Centos64-1 (D:\linuxMore\centos6_64)
root / itcast : 固定IP 192.168.52.128
一,配置JDK環境
1,解壓jdk到指定的目錄
tar -xvf jdk-8u171-linux-x64.tar.gz -C /usr/local
cd /usr/local
mv jdk1.8.0_171 jdk1.8
2,配置環境變量
-
vi /etc/profile
-
在末尾行添加
#set java environment
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:${JAVA_HOME}/bin
-
source /etc/profile 使用剛才的配置生效,如果不起作用,重啟服務器 reboot
二,配置RocketMQ環境
上傳 文件到/usr/local/src下
解壓:
unzip rocketmq-all-4.5.2-bin-release.zip -C /opt
cd /opt
mv rocketmq-all-4.5.2-bin-release rocketmq
啟動nameserver
./mqnamesrv
[root@localhost bin]# ./mqnamesrv
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON
啟動broker
./mqbroker -n 192.168.52.128:9876
[root@localhost bin]# ./mqbroker
The broker[localhost.localdomain, 192.168.52.128:10911] boot success. serializeType=JSON
如果broker啟動報錯:修改 runbroker.sh文件中的內存參數即可
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
如果和docker 一起 需要修改配置文件:
conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUS
# 解決和docker 沖突的
brokerIP1=192.168.52.128
namesrvAddr=192.168.52.128:9876
三,配置集群環境
1) 配置主機名稱(未來就可以根據主機名找到對應的服務器了)
vim /etc/hosts
# nameserver
192.168.52.128 rocketmq-nameserver1
192.168.52.128 rocketmq-nameserver2
# broker
192.168.52.128 rocketmq-master1
192.168.52.128 rocketmq-slave2
192.168.52.128 rocketmq-master2
192.168.52.128 rocketmq-slave1
配置完畢后重啟網卡,應用配置(centos6和7的命令不太一樣,如果是7參考原筆記)
#CENTOS6
service network restart
#CENTOS7
systemctl retsart network
2) 關閉防火牆
#CENTOS6
# 關閉防火牆
service iptables stop firewalld.service
# 查看防火牆的狀態
service iptables status
# 禁止firewall開機啟動
chkconfig iptables off
#CENTOS7
systemctl stop firewalld
3) 配置jdk
詳見Linux安裝jdk
4) 配置服務器環境
在同一個虛擬機上配置集群環境:
•rocketmq: 配置broker-a的主和broker-b-s從
•rocketmq2:配置broker-b的主和broker-a-s從
將rocketmq 解壓至跟目錄 /opt/rocketmq-cluster
# 解壓
unzip rocketmq-all-4.5.2-bin-release.zip -d /opt/rocketmq-cluster
# 修改目錄名稱
mv rocketmq-all-4.5.2-bin-release rocketmq
#復制一個出來
cp rocketmq/ -R rocketmq2
5) 創建集群服務器的數據存儲目錄
主節點創建四個目錄/ 從節點四個目錄
#配置rocetmq
#a主
mkdir /opt/rocketmq-cluster/rocketmq/store
mkdir /opt/rocketmq-cluster/rocketmq/store/commitlog
mkdir /opt/rocketmq-cluster/rocketmq/store/consumequeue
mkdir /opt/rocketmq-cluster/rocketmq/store/index
mkdir /opt/rocketmq-cluster/rocketmq/store/abortfile
#b從
mkdir /opt/rocketmq-cluster/rocketmq/store-slave
mkdir /opt/rocketmq-cluster/rocketmq/store-slave/commitlog
mkdir /opt/rocketmq-cluster/rocketmq/store-slave/consumequeue
mkdir /opt/rocketmq-cluster/rocketmq/store-slave/index
mkdir /opt/rocketmq-cluster/rocketmq/store-slave/abortfile
#配置rocetmq2
#b主
mkdir /opt/rocketmq-cluster/rocketmq2/store
mkdir /opt/rocketmq-cluster/rocketmq2/store/commitlog
mkdir /opt/rocketmq-cluster/rocketmq2/store/consumequeue
mkdir /opt/rocketmq-cluster/rocketmq2/store/index
mkdir /opt/rocketmq-cluster/rocketmq2/store/abortfile
#a從
mkdir /opt/rocketmq-cluster/rocketmq2/store-slave
mkdir /opt/rocketmq-cluster/rocketmq2/store-slave/commitlog
mkdir /opt/rocketmq-cluster/rocketmq2/store-slave/consumequeue
mkdir /opt/rocketmq-cluster/rocketmq2/store-slave/index
mkdir /opt/rocketmq-cluster/rocketmq2/store-slave/abortfile
注意master與slave如果在同一個虛擬機中部署,需要將存儲目錄區分開
6) 修改配置
(不同的節點,應該修改不同的配置,文件夾也應該不一樣)
兩個命名服務器:
192.168.52.128:9876
192.168.52.128:5432
broker集群:
192.168.52.128:11011 a主
192.168.52.128:11111 a從
192.168.52.128:10811 b主
192.168.52.128:10911 b從
修改rocketmq的相關配置
6.1 修改a的master
>cd /opt/rocketmq-cluster/rocketmq/conf/2m-2s-sync
>vim broker-a.proerties
此時broker-a的端口為:11011
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:5432
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=11011
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=48
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/opt/rocketmq-cluster/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/opt/rocketmq-cluster/rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/opt/rocketmq-cluster/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/opt/rocketmq-cluster/rocketmq/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/opt/rocketmq-cluster/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/opt/rocketmq-cluster/rocketmq/store/abortfile
#限制的消息大小
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
6.2 修改b的slave
>cd /opt/rocketmq-cluster/rocketmq/conf/2m-2s-sync
>vim broker-b-s.proerties
此時broker-b-s從的端口為:10911
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:5432
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10911
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=48
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/opt/rocketmq-cluster/rocketmq/store-slave
#commitLog 存儲路徑
storePathCommitLog=/opt/rocketmq-cluster/rocketmq/store-slave/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/opt/rocketmq-cluster/rocketmq/store-slave/consumequeue
#消息索引存儲路徑
storePathIndex=/opt/rocketmq-cluster/rocketmq/store-slave/index
#checkpoint 文件存儲路徑
storeCheckpoint=/opt/rocketmq-cluster/rocketmq/store-slave/checkpoint
#abort 文件存儲路徑
abortFile=/opt/rocketmq-cluster/rocketmq/store-slave/abortfile
#限制的消息大小
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=SYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
檢查啟動內存 (nameserver 和broker 均需要修改)
vim /opt/rocketmq-cluster/rocketmq/bin/runbroker.sh
vim /opt/rocketmq-cluster/rocketmq/bin/runserver.sh
# 開發環境配置 JVM Configuration
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
rocketmq的nameserver默認端口為9876,不用修改。
#
修改rocketmq2的相關配置
6.3 修改b的master
>cd /opt/rocketmq-cluster/rocketmq2/conf/2m-2s-sync
>vim broker-b.proerties
此時broker-b的端口為:10811
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:5432
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10811
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=48
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/opt/rocketmq-cluster/rocketmq2/store
#commitLog 存儲路徑
storePathCommitLog=/opt/rocketmq-cluster/rocketmq2/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/opt/rocketmq-cluster/rocketmq2/store/consumequeue
#消息索引存儲路徑
storePathIndex=/opt/rocketmq-cluster/rocketmq2/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/opt/rocketmq-cluster/rocketmq2/store/checkpoint
#abort 文件存儲路徑
abortFile=/opt/rocketmq-cluster/rocketmq2/store/abortfile
#限制的消息大小
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
6.4 修改b的slave
>cd /opt/rocketmq-cluster/rocketmq2/conf/2m-2s-sync
>vim broker-a-s.proerties
此時broker-a-s從的端口為:11111
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:5432
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=11111
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=48
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/opt/rocketmq-cluster/rocketmq2/store-slave
#commitLog 存儲路徑
storePathCommitLog=/opt/rocketmq-cluster/rocketmq2/store-slave/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/opt/rocketmq-cluster/rocketmq2/store-slave/consumequeue
#消息索引存儲路徑
storePathIndex=/opt/rocketmq-cluster/rocketmq2/store-slave/index
#checkpoint 文件存儲路徑
storeCheckpoint=/opt/rocketmq-cluster/rocketmq2/store-slave/checkpoint
#abort 文件存儲路徑
abortFile=/opt/rocketmq-cluster/rocketmq2/store-slave/abortfile
#限制的消息大小
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=SYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
檢查啟動內存 (nameserver 和broker 均需要修改)
vim /opt/rocketmq-cluster/rocketmq2/bin/runbroker.sh
vim /opt/rocketmq-cluster/rocketmq2/bin/runserver.sh
# 開發環境配置 JVM Configuration
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
修改rocketmq2的nameserver 的端口 為5432:
conf目錄下新增:
vi namesrv.properties
添加內容為:
listenPort=5432
先啟動nameserver:
# 進入/opt/rocketmq-cluster/rocketmq/bin目錄
nohup ./mqnamesrv &
# 進入/opt/rocketmq-cluster/rocketmq2/bin目錄
nohup ./mqnamesrv -c ../conf/namesrv.properties &
再啟動brokerserver:
# 進入/opt/rocketmq-cluster/rocketmq/bin目錄
nohup ./mqbroker -c ../conf/2m-2s-sync/broker-a.properties &
nohup ./mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties &
# 進入/opt/rocketmq-cluster/rocketmq2/bin目錄
nohup ./mqbroker -c ../conf/2m-2s-sync/broker-b.properties &
nohup ./mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties &
nohup和&的區別
& : 指在后台運行
nohup : 不掛斷的運行,注意並沒有后台運行的功能,,就是指,用nohup運行命令可以使命令永久的執行下去,和用戶終端沒有關系,例如我們斷開SSH連接都不會影響他的運行,注意了nohup沒有后台運行的意思;&才是后台運行
集群啟動腳本:rocketmq-cluster-start.sh
#!/bin/bash
#啟動nameserver
sh /opt/rocketmq-cluster/rocketmq/bin/mqnamesrv &
sh /opt/rocketmq-cluster/rocketmq2/bin/mqnamesrv -c /opt/rocketmq-cluster/rocketmq2/conf/namesrv.properties &
#啟動brokerserver
sh /opt/rocketmq-cluster/rocketmq/bin/mqbroker -c /opt/rocketmq-cluster/rocketmq/conf/2m-2s-sync/broker-a.properties &
sh /opt/rocketmq-cluster/rocketmq/bin/mqbroker -c /opt/rocketmq-cluster/rocketmq/conf/2m-2s-sync/broker-b-s.properties &
sh /opt/rocketmq-cluster/rocketmq2/bin/mqbroker -c /opt/rocketmq-cluster/rocketmq2/conf/2m-2s-sync/broker-b.properties &
sh /opt/rocketmq-cluster/rocketmq2/bin/mqbroker -c /opt/rocketmq-cluster/rocketmq2/conf/2m-2s-sync/broker-a-s.properties &
集群啟動腳本:rocketmq-cluster-stop.sh
#!/bin/bash
#關閉nameserver
sh /opt/rocketmq-cluster/rocketmq/bin/mqshutdown namesrv &
#關閉brokerserver
sh /opt/rocketmq-cluster/rocketmq/bin/mqshutdown broker &
四,配置rocketmq-console
rocketmq-console-2.0.0.jar 為打包好的 springboot應用程序
application.properties 為外部配置文件,根據自己的需求進行修改
執行如下命令啟動即可:
java -jar rocketmq-console-2.0.0.jar --spring.config.location=application.properties
已做成腳本:直接啟動./start.sh即可