搭建rockmq集羣(2m-2s)

環境:兩臺虛擬機(192.168.1.136  192.168.1.137),分別爲1G內存

  部署角色
192.168.1.136 broker-a、broker-b-s、nameserver
192.168.1.137 broker-b、broker-a-s、nameserver

ps:需要有基本java環境、關閉防火牆

1. 下載rocketmq

 rocketmq官網地址:http://rocketmq.apache.org

解壓rocketmq  (ps:可以在本地解壓後傳到虛擬機上,也可以在虛擬機上直接解壓,此時需要安裝unzip命令)

2. 創建存儲目錄


[root@baibu-base-dev-hw-13 ~]# cd /data/server/rocketmq
[root@baibu-base-dev-hw-13 ~]# wget
http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
[root@baibu-base-dev-hw-13 rocketmq]# unzip rocketmq-all-4.2.0-bin-release.zip
[root@baibu-base-dev-hw-13 rocketmq]# ls
benchmark bin conf lib LICENSE logs NOTICE README.md rocketmq-all-4.2.0-bin-release.zip
#創建存儲路徑
[root@baibu-base-dev-hw-13 rocketmq]# mkdir -p store/commitlog
[root@baibu-base-dev-hw-13 rocketmq]# mkdir -p store/consumequeue
[root@baibu-base-dev-hw-13 rocketmq]# mkdir -p store/index
[root@baibu-base-dev-hw-13 rocketmq]# ls /data/server/rocketmq/store
commitlog consumequeue index

 

3.配置broker

進入{brokerHome}/conf/2m-2s-sync

192.168.1.136 配置broker-a.properties,如下r

#所屬集羣名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣 例如:在a.properties 文件中寫 broker-a 在b.properties 文件中寫 broker-b
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,這裏nameserver是單臺,如果nameserver是多臺集羣的話,就用分號分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=1.1.1.13:9876;
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數。由於是4個broker節點,所以設置爲4
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啓,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10911
haListenPort=10912
deleteWhen=04
fileReservedTime=48
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/data/server/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/data/server/rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/data/server/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/data/server/rocketmq/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/data/server/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/data/server/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#brokerRole=MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#- brokerIP1一定要配置,要不會報錯
brokerIP1=192.168.1.136

還是該節點,配置slave,即broker-b-s.properties,如下:

brokerClusterName=rocketmq-cluster
brokerName=broker-b
brokerId=1
#nameServer地址,這裏nameserver是單臺,如果nameserver是多臺集羣的話,就用分號分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=1.1.1.13:9876;
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數。由於是4個broker節點,所以設置爲4
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,建議線下開啓,線上關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
#listenPort=10911
listenPort=10923
haListenPort=10924
deleteWhen=04
fileReservedTime=48
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/data/server/rocketmq/store-s
#commitLog 存儲路徑
storePathCommitLog=/data/server/rocketmq/store-s/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/data/server/rocketmq/store-s/consumequeue
#消息索引存儲路徑
storePathIndex=/data/server/rocketmq/store-s/index
#checkpoint 文件存儲路徑
storeCheckpoint=/data/server/rocketmq/store-s/checkpoint
#abort 文件存儲路徑
abortFile=/data/server/rocketmq/store-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
#- 可不配
brokerIP1=

同理在192.168.1.137做同樣操作

 

4. 修改日誌文件【2臺機器同樣操作】

root@baibu-base-dev-hw-13 rocketmq]# mkdir /data/server/rocketmq/logs
[root@baibu-base-dev-hw-13 rocketmq]# cd /data/server/rocketmq/conf/
[root@baibu-base-dev-hw-13 conf]# sed -i 's#${user.home}#/data/server/rocketmq#' *.xml

5. 啓動參數設置

linux中nameserver的啓動文件爲 /data/server/rocketmq/bin/mqnamesrv 

broker啓動文件爲/data/server/rocketmq/bin/mqnamesrv/mqbroker

mqnamesrv 和mqbroker啓動文件分別調用了runserver.sh 和runbroker.sh文件【這兩個文件分別設置了nameserver和broker的啓動內存】,默認nameserver啓動內存爲4G,最大內存4G,新生代2G,broker啓動內訓8G,新生代4G

在1G內存下,修改如下:

runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

6.啓動

進入bin路徑:

啓動nameserver:命令爲sh mqnamesrv &(兩臺都執行)

啓動master:在136執行sh mqbroker -c ../conf/2m-2s-sync/broker-a.properties  &(同理在137執行,配置文件爲broker-b.properties)

啓動slave:在136執行sh mqbroker -c  ../conf/2m-2s-sync/broker-b-s.properties &(同理在137執行)

 

7 查看進程:
jps


[root@baibu-base-dev-hw-13 bin]# jps
127123 NamesrvStartup
1162 WrapperSimpleApp
127405 BrokerStartup
127246 BrokerStartup
44847 Jpss

則搭建完成

 

【注意】:

啓動順序:先啓動NameServer,再啓動BrokerServer
停止順序:先停止BrokerServer,再停止NameServer

【關閉命令】:

sh mqshutdown broker

sh mqshutdown namsrv

1、默認不配置brokerIP1和brokerIP2時,都會根據當前網卡選擇一個IP使用,而當你的機器有多塊網卡時,很有可能會有問題,導致連不上broker。
【 brokerIP1 當前broker監聽的IP
brokerIP2 存在broker主從時,在broker主節點上配置了brokerIP2的話,broker從節點會連接主節點配置的brokerIP2來同步。】
解決方法:
在配置文件增加 brokerIP1=本機內網

參考:https://blog.csdn.net/qq_40168110/article/details/88684287

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章