RocketMQ集群及搭建


Rocket描述:

RocketMQ:
producer:消息的發送者,寫信人;
consumer:消息的接收者;收信人;
broker:存儲和傳遞消息,郵局
nameserv:管理broker,相當於郵局的管理機構一樣!(數據無狀態,)
topic:區分消息的種類,一個producer可以給一個或多個topic發送短信,一個consumer可以接收一個或多個topic的消息;
Message queue:相當於消息的分區,用於並行發送和接收消息;

Rocket集群描述

集群描述:
nameserv/producer/consumer:啟動多個nameserv就是集群
1.nameservver是一個幾乎無狀態節點,可集群部署,節點直接無任何數據同步;
2.broker:
  2.1:分為master和slave節點;一個master可以有多個salver,但是一個slave只能有一個master;
  2.2:他們通過brokerName進行分組,brokerId=0代表master,brokerId=1代表salver;
  2.3:每個broker和nameserver建立長連接,定時注冊topic信息到所有的nameserver;
3.producer:producer和nameserver集群中的一個節點建立長連接(隨機),定期從nameserver中獲取topic路由信息,並向提供topic服務的master建立長連接,並定時向master節點發送心跳;producer完全無狀態可集群部署;
4.consumer:consumer和namesever集群中的任一節點建立長連接,定期從namserver中獲取topic路由信息,並向提過topic服務的maseter節點和slaver節點建立長連接,然后定時向master和slaver發送心跳,consumer可以master和slaver節點中都訂閱消息,訂閱規則由broker配置的規則決定;

三.集群搭建模式;
1.單master模式;不推薦使用,宕機玩完了!
2.多master模式:
3.多master多slaver(異步):單台master宕機后數據會有少量的丟失;
4.多master多slaver(同步):

四:集群的工作流程:

1.啟動namaserver:nameserver啟動后,監聽broker,producer和consumer是否上線,相當於一個路由中心;
2.啟動broker:broker和所有的nameserver建立長連接,定時發送心跳包,心跳包包含當前broker(ip+端口)以及topic儲藏信息;當注冊成功后,namserver就有了所有的broker和topic的映射關系;
3.創建topic:發送消息前需要先創建topic,需要指明當前topic要儲藏在那個broker上 去;
4.producer生產消息:先和nameserver建立長連接,看當前的topic是在那些broker上面去,輪詢從隊列列表中選擇一個隊列,然后與所在隊列的broker建立長連接從而向其發送信息;
5.consumer消費消息:跟其中的一台namsever建立長連接,獲取當前的topic在那些Broker上,然后和broker建立連接,消費信息!

五:Rocket集群搭建:

服務器環境:

序號 IP 角色 架構模式
1 192.168.237.14 nameserver/broker Master1/slave2
2 192.168.237.9 nameserver/broker Master2/slave1

 

 

1.host添加信息

 vim /etc/hosts
#nameserver
192.168.237.14 rocketmq-nameserver1
192.168.237.9 rocketmq-nameserver2
#broker
192.168.237.14 rocketmq-master1
192.168.237.14 rocketmq-slave2
192.168.237.9 rocketmq-master2
192.168.237.9 rocketmq-slave1
配置完場重啟網卡:
  systemctl restart network

2.防火牆關閉;

#查看防火牆狀態;
filewall-cmd --state
#禁止firewalld開機啟動;
systemctl disable filewalld.server
在實際的生產環境可以指定開放端口: #開放nameserver端口: filewalld-cmd --remove-port
=9876/tcp--permanent #開放master端口: filewalld-cmd --remove-port=10911/tcp--permanent #開放slaved端口(集群模式下不可開啟) filewalld-cmd --remove-port=11011/tcp--permanent 重啟防火牆: filewalld-cmd --reload

3.環境變量配置:

[root@docker ~]# vim /etc/profile

#set rocketmq
ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.2.0-bin-release
PATH=$ROCKETMQ_HOME/bin:$PATH

export ROCKETMQ_HOME PATH

[root@docker ~]# source /etc/profile

4.創建消息存儲路徑:

在配置雙主雙從集群時,配置文件中相關的存儲路徑需要區分,主節點、從節點的數據不能保存在同一個目錄下,不然則會出現:啟動NamesrvStartup成功,啟動第一個broker master成功,啟動第二個broker slave則一直失敗。

master文件目錄:

mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index

slave文件目錄:

mkdir /usr/local/rocketmq/store_slave
mkdir /usr/local/rocketmq/store_slave/commitlog
mkdir /usr/local/rocketmq/store_slave/consumequeue
mkdir /usr/local/rocketmq/store_slave/index

 

5.broker配置文件:

采用的多master多slave,同步刷新策略(ASYNC)

1、在192.238.237.14主機上對broker-a.properties文件進行Master1配置

[root@docker ~]# cd /usr/local/rocketmq/conf/2m-2s-async/
[root@docker 2m-2s-async]# ll
total 16
-rw-r--r--. 1 root root 929 Sep 19  2017 broker-a.properties -rw-r--r--. 1 root root 922 Sep 19  2017 broker-a-s.properties
-rw-r--r--. 1 root root 929 Sep 19  2017 broker-b.properties
-rw-r--r--. 1 root root 922 Sep 19  2017 broker-b-s.properties
[root@docker 2m-2s-async]#vim  broker-a.properties

 

在192.168.237.14機器上的Master Broker的配置文件broker-a.properties 
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#所屬集群名字
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=192.168.237.14:9876;192.168.237.9:9876 
#每個topic對應隊列的數量,默認為4,實際應參考consumer實例的數量,值過小不利於consumer負載均衡
defaultTopicQueueNums=4 
#是否允許 Broker 自動創建Topic,生產建議關閉
autoCreateTopicEnable= true
#是否允許 Broker 自動創建訂閱組,生產建議關閉
autoCreateSubionGroup= true
#Broker 對外服務的監聽端口
listenPort=10911 
#刪除文件時間點,默認凌晨 4點
deleteWhen=04 
#文件保留時間,默認 48 小時
fileReservedTime=120 
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824 
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000 
#檢測物理文件磁盤空間
disMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog 
#消費隊列存儲路徑存儲路徑
storePathConsumerQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store/index 
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store/abort
#限制消息的大小
maxMessageSize=65536
#Broker 的角色,ASYNC_MASTER=異步復制Master,SYNC_MASTER=同步雙寫Master,SLAVE=slave節點
brokerRole=ASYNC_MASTER     
#刷盤方式,ASYNC_FLUSH=異步刷盤,SYNC_FLUSH=同步刷盤 
flushDiskType=SYNC_FLUSH 

 

 2、在192.238.237.14主機上對broker-b-s.properties文件進行slvave2配置:

[root@docker 2m-2s-async]#vim broker-b-s.properties
 
         
在192.168.237.14機器上的slave2 Broker的配置文件broker-b-s.properties

#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣 例如:在a.properties 文件中寫 broker-a 在b.properties 文件中寫 broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#Broker 的角色,ASYNC_MASTER=異步復制Master,SYNC_MASTER=同步雙寫Master,SLAVE=slave節點
brokerRole=SLAVE
#刷盤方式,ASYNC_FLUSH=異步刷盤,SYNC_FLUSH=同步刷盤
flushDiskType=SYNC_FLUSH
#Broker 對外服務的監聽端口
listenPort=11011
#nameServer地址,這里nameserver是單台,如果nameserver是多台集群的話,就用分號分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.237.14:9876;192.168.237.9:9876

#每個topic對應隊列的數量,默認為4,實際應參考consumer實例的數量,值過小不利於consumer負載均衡
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,生產建議關閉
autoCreateTopicEnable= true
#是否允許 Broker 自動創建訂閱組,生產建議關閉
autoCreateSubionGroup= true
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#檢測物理文件磁盤空間
disMaxUsedSpaceRatio=88
#限制消息的大小
maxMessageSize=65536

#存儲路徑
storePathRootDir=/usr/local/rocketmq/store_slave

#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store_slave/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumerQueue=/usr/local/rocketmq/store_slave/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store_slave/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store_slave/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store_slave/abort

 

 

3.在192.168.237.9主機上對 broker-b.properties進行Master2配置; 、

[root@node1 2m-2s-sync]# vim broker-b.properties 

#所屬集群名字
brokerClusterName=rocketmq-cluster 
#broker名字,注意此處不同的配置文件填寫的不一樣 例如:在a.properties 文件中寫 broker-a 在b.properties 文件中寫 broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0 
#nameServer地址,這里nameserver是單台,如果nameserver是多台集群的話,就用分號分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.237.14:9876;192.168.237.9:9876 
#每個topic對應隊列的數量,默認為4,實際應參考consumer實例的數量,值過小不利於consumer負載均衡
defaultTopicQueueNums=4 
#是否允許 Broker 自動創建Topic,生產建議關閉
autoCreateTopicEnable= true
#是否允許 Broker 自動創建訂閱組,生產建議關閉
autoCreateSubionGroup= true
#Broker 對外服務的監聽端口
listenPort=10911 
#刪除文件時間點,默認凌晨 4點
deleteWhen=04 
#文件保留時間,默認 48 小時
fileReservedTime=120 
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824 
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000 
檢測物理文件磁盤空間
disMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog 
#消費隊列存儲路徑存儲路徑
storePathConsumerQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store/index 
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store/abort
#限制消息的大小
maxMessageSize=65536
#Broker 的角色,ASYNC_MASTER=異步復制Master,SYNC_MASTER=同步雙寫Master,SLAVE=slave節點
brokerRole=ASYNC_MASTER     
#刷盤方式,ASYNC_FLUSH=異步刷盤,SYNC_FLUSH=同步刷盤 
flushDiskType=SYNC_FLUSH 

 

 

4.在192.168.237.9主機上對 broker-a-s.properties進行slave1配

[root@node1 2m-2s-sync]# vim broker-a-s.properties 
在192.168.237.9機器上的Slave Broker的配置文件broker-a-s.properties 

#所屬集群名字
brokerClusterName=rocketmq-cluster 
#broker名字,注意此處不同的配置文件填寫的不一樣 例如:在a.properties 文件中寫 broker-a 在b.properties 文件中寫 broker-b
brokerName=broker-a 
#0 表示 Master,>0 表示 Slave
brokerId=1 
#刪除文件時間點,默認凌晨 4點
deleteWhen=04 
#文件保留時間,默認 48 小時
fileReservedTime=120 
#Broker 的角色,ASYNC_MASTER=異步復制Master,SYNC_MASTER=同步雙寫Master,SLAVE=slave節點
brokerRole=SLAVE 
#刷盤方式,ASYNC_FLUSH=異步刷盤,SYNC_FLUSH=同步刷盤 
flushDiskType=SYNC_FLUSH 
#Broker 對外服務的監聽端口
listenPort=11011 
#nameServer地址,這里nameserver是單台,如果nameserver是多台集群的話,就用分號分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.237.14:9876;192.168.237.9:9876 

#每個topic對應隊列的數量,默認為4,實際應參考consumer實例的數量,值過小不利於consumer負載均衡
defaultTopicQueueNums=4 
#是否允許 Broker 自動創建Topic,生產建議關閉
autoCreateTopicEnable= true
#是否允許 Broker 自動創建訂閱組,生產建議關閉
autoCreateSubionGroup= true
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824 
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000 
#檢測物理文件磁盤空間
disMaxUsedSpaceRatio=88
#限制消息的大小
maxMessageSize=65536

#存儲路徑
storePathRootDir=/usr/local/rocketmq/store_slave

 
          

#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store_slave/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumerQueue=/usr/local/rocketmq/store_slave/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store_slave/index
#checkpoint 文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store_slave/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store_slave/abort

 

6.修改啟動腳本文件:


7.服務啟動:

1.啟動Namaserver集群:
分別在192.168.237.14和192.168.237.9啟動nameserv:
cd /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/bin
nohup sh mqnamesrv &
sh shutdown nameserv
2.啟動Broker集群
在92.168.237.14主機上啟動master1和slave2
master1:
cd /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/bin
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/conf/2m-2s-sync/broker-a.properties &
slave2:
cd /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/bin
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/conf/2m-2s-sync/broker-b-s.properties &

master2: cd /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/bin nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/conf/2m-2s-sync/broker-b.properties & slave2: cd /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/bin nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.2.0-bin-release/conf/2m-2s-sync/broker-a-s.properties &

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM