一、RocketMQ的下載
http://rocketmq.apache.org/dowloading/releases/
二、RocketMQ環境搭建
搭建一個單機版的RocketMQ沒有太大的實用價值,所以在這裏搭建一個雙主 、 雙從 、 無單點故障的高可用 RocketMQ集羣 。
材料準備
兩臺物理機(這裏我採用了兩臺虛擬機)
主機地址:
192.168.223.41 node01
192.168.223.42 node02
配置步驟
1.解壓文件
unzip rocketmq-all-4.3.2-bin-release.zip -d ./rocketmq-all-4.3.2-bin
2.啓動兩機器的nameserver
[root@node01 rocketmq-all-4.3.2-bin-release]# nohup sh bin/mqnamesrv &
[root@node02 rocketmq-all-4.3.2-bin-release]# nohup sh bin/mqnamesrv &
3.broker配置文件
雙master配置:
[root@node01]#vim /rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/broker-a.properties
namesrvAddr=192.168.223.41:9876;192.168.223.42:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-a
[root@node02]#vim /rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/broker-b.properties
namesrvAddr=192.168.223.41:9876;192.168.223.42:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-b
雙slave配置:
[root@node01]#vim /rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/broker-b-s.properties
namesrvAddr=192.168.223.41:9876;192.168.223.42:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-b
[root@node02]#vim /rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/broker-a-s.properties
namesrvAddr=192.168.223.41:9876;192.168.223.42:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=11011
storePathRootDir=/home/rocketmq/store-a
4.啓動4個broker:
命令:nohup sh ./bin/mqbroker –c config_file &
[root@node01 rocketmq-all-4.3.2-bin-release]# nohup sh ./bin/mqbroker -c ./conf/2m-2s-sync/broker-a.properties &
[root@node01 rocketmq-all-4.3.2-bin-release]# nohup sh ./bin/mqbroker -c ./conf/2m-2s-sync/broker-b-s.properties &
[root@node02 rocketmq-all-4.3.2-bin-release]# nohup sh ./bin/mqbroker -c ./conf/2m-2s-sync/broker-b.properties &
[root@node02 rocketmq-all-4.3.2-bin-release]# nohup sh ./bin/mqbroker -c ./conf/2m-2s-sync/broker-a-s.properties &
jps查看效果如下:
5.查看集羣狀態
可採用圖形化界面管理
https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console
圖形化界面配置過程參考:
https://yq.aliyun.com/articles/486069?spm=5176.10695662.1996646101.searchclickresult.37e0a3dbrOPWp6
三、相關配置參數介紹
- namesrvAddr= 192.168.100.131:9876; 192.168.100.132:9876
NamerServer 的地址,可以是多個 。 - brokerClusterName=DefaultCluster
Cluster 的地址,如果集羣機器數比較多,可以分成多個 Cluster,每個 Cluster 供一個業 務 羣使用 。 - brokerName=broker- a
Broker 的名稱, Master 和 Slave 通過使用相同的 Broker 名稱來表明相互關係,以說明某個 Slave 是哪個 Master 的 Slave。 - brokerid=0
一個 Master Barker可以有多個 Slave, 0表示 Master,大於 0表示不同 Slave 的 ID。 - fileReservedTime=48
在磁盤上保存消息的時長,單位是小時,自動刪除超時的消息 。 - deleteWhen=04
與 fileReservedTim巳參數呼應,表明在幾點做消息刪除動作,默認值 04表 示凌晨 4點。 - brokerRole=SYNC MASTER
brokerRole 有 3 種: SYNC MASTER、 ASYNC MASTER、 SLAVE。
前兩個是master,第三個是slave。 Master的前綴代表主從複製方式,異步複製和同步 複製 - flushDiskType=ASYNC FLUSH
flushDiskType表示刷盤策略,分爲SYNC_FLUSH和ASYNC_FLUSH兩 種,分別代表同步刷 盤和異步刷盤。 同步刷盤情況下,消息真正寫人磁盤後再 返回成功狀態;異步刷盤情況 下,消息寫入 page_cache 後就返回成功狀態 。 - listenPort=l0911
Broker監聽的端口 號,如果一臺機器上啓動了多個 Broker, 則要設置不同 的端口號, 避免衝突 。 - storePathRootDir=/home/rocketmq/store - a
存儲消息以及一些配置信息的根目錄 。
四、配置過程踩過的一些坑
坑1:
下載不同版本rocketmq時,要注意其要求的jdk版本
原因,高版本rocketmq中有MaxMetaspaceSize參數,MaxMetaspaceSize爲Java8中新引入的參數
坑2:
啓動mqnamesev時候報:
Java HotSpot 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006c0000000, 2147483648, 0) failed; error=‘Cannot allocate memory’ (errno=12)
則需要調整rocketMQ的內存
vim bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=320m"
-Xms 的值一定要比 -Xmx 要小不讓,也會報錯:
Initial heap size set to a larger value than the maximum heap size
啓動mqbroker時報,則修改:
vim bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"