RocketMQ的環境搭建與相關配置

一、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"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章