環境:兩臺虛擬機(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