1. 程式人生 > >【MQ】Centos7搭建雙主雙從RocketMQ叢集

【MQ】Centos7搭建雙主雙從RocketMQ叢集

一、前言

      在前一篇部落格中,小編向大家介紹瞭如何在Centos7中安裝RocketMQ。通過這種方法我們可以搭建出來一臺母機,通過這臺母機來進行克隆搭建出我們的叢集。

二、搭建環境

  • Centos7

  • Jdk1.8

  • Rocketmq 3.2.6

三、為什麼要搭建叢集?

      伺服器叢集就是指將很多伺服器集中起來一起進行同一種服務,在客戶端看來就像是隻有一個伺服器。叢集可以利用多個計算機進行平行計算從而獲得很高的計算速度,也可以用多個計算機做備份,從而使得任何一個機器壞了整個系統還是能正常執行。

      可以減少單點故障數量,並且實現了群集化資源的高可用性

      一、集群系統可解決所有的伺服器硬體故障,當某一臺伺服器出現任何故障,如:硬碟、記憶體、CPU、主機板、I/O板以及電源故障,執行在這臺伺服器上的應用就會切換到其它的伺服器上。

      二、集群系統可解決軟體系統問題,我們知道,在計算機系統中,使用者所使用的是應用程式和資料,而應用系統執行在作業系統之上,作業系統又執行在伺服器上。這樣,只要應用系統、作業系統、伺服器三者中的任何一個出現故障,系統實際上就停止了向客戶端提供服務,比如我們常見的軟體宕機,就是這種情況之一,儘管伺服器硬體完好,但伺服器仍舊不能向客戶端提供服務。而叢集的最大優勢在於對故障伺服器的監控是基於應用的,也就是說,只要伺服器的應用停止執行,其它的相關伺服器就會接管這個應用,而不必理會應用停止執行的原因是什麼。

      三、集群系統可以解決人為失誤造成的應用系統停止工作的情況,例如,當管理員對某臺伺服器操作不當導致該伺服器停機,因此執行在這臺伺服器上的應用系統也就停止了執行。由於叢集是對應用進行監控,因此其它的相關伺服器就會接管這個應用。

四、Roctmq網路部署圖

這裡寫圖片描述

      我們部署的mq叢集架構是:雙主雙從。

      RocketMQ 網路部署特點:

  • Name Server 是一個幾乎無狀態節點,可叢集部署,節點之間無任何資訊同步。

  • Broker 部署相對複雜,Broker 分為 Master 與Slave,一個 Master 可以對應多個 Slave,但是一個 Slave 只能對應一個 Master, Master 與Slave 的對應關係通過指定相同的 BrokerName,不同的 BrokerId 來定義, BrokerId 為 0 表示 Master,非 0 表示 Slave。 Master 也可以部署多個。每個 Broker 與Name Server 叢集中的所有節點建立長連線,定時註冊 Topic 資訊到所有 Name Server。

  • Producer 與 Name Server 叢集中的其中一個節點(隨機選擇)建立長連線,定期從 Name Server 取Topic 路由資訊,並向提供 Topic 服務的 Master 建立長連線,且定時向 Master 傳送心跳。 Producer 完全無狀態,可
    叢集部署。

  • Consumer 與 Name Server 叢集中的其中一個節點(隨機選擇)建立長連線,定期從 Name Server 取 Topic 路由資訊,並向提供 Topic 服務的 Master、 Slave 建立長連線,且定時向 Master、 Slave 傳送心跳。 Consumer既可以從 Master 訂閱訊息,也可以從 Slave 訂閱訊息,訂閱規則由 Broker 配置決定。

五、搭建過程

      根據《Centos7安裝RocketMQ》我們可以搭建一臺可以提供服務的mq。以這臺做母機,進行克隆。

      母機資訊如下:

      在前面的時候我們搭建好了一臺RocketMQ伺服器:

Ip brokerName 用途 角色
192.168.137.4 AresBroker1 NameServer,Broker Master

5.1 克隆其他的機器,並修改ip-mac等資訊

      通過這一臺主機克隆出三臺機器,修改相應的資訊如下:

Ip brokerName 用途 角色
192.168.137.5 AresBroker1 NameServer ,Broker Slave
192.168.137.6 AresBroker2 NameServer ,Broker Master
192.168.137.7 AresBroker2 NameServer ,Broker Slave

5.2 設定hosts資訊

      依次修改每臺主機的hosts檔案:

vim /etc/hosts

      新增如下資訊:

192.168.137.4 mqnameserver1
192.168.137.5 mqnameserver2
192.168.137.6 mqnameserver3
192.168.137.7 mqnameserver4

5.3 修改broker的資訊

      Master1 - 192.168.137.4的配置:

[[email protected] bin]# vim broker.p

namesrvAddr=mqnameserver1:9876;mqnameserver2:9876;mqnameserver3:9876;mqnameserver4:9876
brokerIP1=192.168.137.4
brokerName=AresBroker1
brokerClusterName=AresCluster
brokerId=0
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true

      Slave1 - 192.168.137.5的配置(是Master1的從機):

      說明:

192.168.137.5是192.168.137.4的從機,所以設定
brokerName=AresBroker1是相同的,
brokerId=1 要大於0,表示是從機,
brokerRole=SLAVE表示身份是從機。

[[email protected] bin]# vim broker.p 

namesrvAddr= mqnameserver1:9876; mqnameserver2:9876;mqnameserver3:9876; mqnameserver4:9876
brokerIP1=192.168.137.5
brokerName=AresBroker1
brokerClusterName=AresCluster
brokerId=1
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true 

      Master2-192.168.137.6的配置

      說明:

192.168.137.6是另一臺主機,
brokerName=AresBroker2 設定名字和另一個主機不一樣,
brokerId=0表示為主機,
brokerRole=ASYNC_MASTER表示是主機。

[[email protected] bin]# vim broker.p

namesrvAddr=mqnameserver1:9876;mqnameserver2:9876;mqnameserver3:9876;mqnameserver4:9876
brokerIP1=192.168.137.6
brokerName=AresBroker2
brokerClusterName=AresCluster
brokerId=0
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true

      Slave2-192.168.137.7配置:
      說明:

192.168.137.7是192.168.137.6的從機,配置中,
brokerName=AresBroker2配置的是broker的名字,要和192.168.137.6的brokerName相同,brokerId=1表示是從機,
brokerRole=SLAVE表示從機。

[[email protected] bin]# vim broker.p


namesrvAddr= mqnameserver1:9876; mqnameserver2:9876;mqnameserver3:9876; mqnameserver4:9876
brokerIP1=192.168.137.7
brokerName=AresBroker2
brokerClusterName=AresCluster
brokerId=1
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true

5.4 依次執行

      調整目錄到alibaba-rocketmq/bin下,

cd /usr/src/rocketmq/alibaba-rocketmq/bin

      然後通過

./play.sh

      執行,通過執行jps檢視服務啟動情況。如果兩個服務都啟動,就可以了。

這裡寫圖片描述

      如果只有NamesrvStartup啟動了,可以通過如下命令啟動BrokerStartup:

nohup sh mqbroker -c broker.p

5.5 執行結果

      通過執行rocketmq-console控制檯可以看到:表示搭建成功。

這裡寫圖片描述

四、小結

      個人理解,只要搭建了一臺伺服器,就可以很輕鬆的搭建出叢集,通過克隆虛擬機器就可以得到相似的機器,然後通過修改broker.p從而達到配置的目的。

      再次強調Master 與Slave 的對應關係通過指定相同的 BrokerName,不同的 BrokerId 來定義, BrokerId 為 0 表示 Master,非 0 表示 Slave。

      下一篇部落格將向大家介紹RocketMQ的使用,包括髮送和接收等。

相關推薦

MQCentos7搭建RocketMQ叢集

一、前言       在前一篇部落格中,小編向大家介紹瞭如何在Centos7中安裝RocketMQ。通過這種方法我們可以搭建出來一臺母機,通過這臺母機來進行克隆搭建出我們的叢集。 二、搭建環境

SVNCentos7搭建svn服務

ise password ins 阿裏 進行 整理 body authz 修改權限 一、背景 自己平時有記筆記的習慣,回到宿舍筆記就同步不了。打算入手下很火的筆記軟件,用著覺得不順手,目錄一多查找不方便,沒有英文首字母定位快,想想決定用svn同步,整理出來分享給大家。 二、

redis叢集實戰(單臺機器Windows環境下搭建33redis叢集

本文主要展示在單臺win10機器上搭建三主三從redis叢集。 搭建過程 主要參考作者: 每天都在變得更好的阿飛  的兩篇部落格 《Redis叢集主從複製(一主兩從)搭建配置教程【Windows環境】》https://blog.csdn.net/u010648555/

mysql之 mysql 5.6不停機搭建(活躍基於日誌點復制)

stat 5.6 create 文件夾 eat ima send spec tar 環境說明:版本 version 5.6.25-log 主1庫ip: 10.219.24.25主2庫ip: 10.219.24.22從1庫ip:10.219.24.26os 版本: cento

按鍵[獨立按鍵] - 2:

二、 [雙擊]程式 1.雙擊介紹 雙擊的判定 在完成第一次【單擊】之後,在一定的時間間隔內(本程式使用的是300ms),接著完成第二次【單擊】,及判定為【雙擊】。 雙擊的響應 1)在預設的時間間隔內完成第二次【單擊】,按鍵釋放後,響應返回有效鍵值【雙擊】。 2)如

RocketMQ學習筆記(16)----RocketMQ搭建(非同步複製)叢集

1. 修改RocketMQ預設啟動埠   由於只有兩臺機器,部署雙主雙從需要四個節點,所以只能修改rocketmq的預設啟動埠,從官網下載rocketmq的source檔案,解壓後使用idea開啟,全域性搜尋9876,將所有使用9876埠的地方改為9877。   在終端開啟,使用:mvn -Preleas

JS344. 反轉字串 #字串 #指標 Easy

編寫一個函式,其作用是將輸入的字串反轉過來。 輸入: “hello” ,輸出: “olleh” 輸入: “A man, a plan, a canal: Panama” , 輸出: “amanaP :lanac a ,nalp a ,nam A” 解法一: 使用 fo

轉載CentOS7下用yum快速搭建LAMP平臺(應用於安裝zabbix)

實驗環境: [[email protected]7 html]# cat /etc/redhat-release CentOS release 7.3.1611 (AltArch) [[email protected]-7 html]# uname -a Linux

貪心加工生產排程(機排程貪心問題)

問題 D: 【貪心】加工生產排程 時間限制: 1 Sec  記憶體限制: 64 MB 提交: 41  解決: 21 [提交] [狀態] [討論版] [命題人:外部匯入] 題目描述 有n個部件需在A、B機器上加工,每個工件都必須經過先A後B兩道工序。 已知:部件i在A

rocketMQ4.2.0版本編譯及同步寫模式搭建

一、基礎環境       系統:centos 7.4       硬體配置:4臺  2Cpu7G記憶體二、基礎工具安裝   lrzsz和net-tools可以不用裝的,只是個人習慣傳檔案和ifconfig命令    yum install java-1.8.0-openjdk

Ubuntuwin10和Ubuntu16.04系統無法訪問win10磁碟

問題描述 在Ubuntu系統下訪問Windows磁碟時,出現如下錯誤 Error mounting /dev/sda3 at /media/widiot/164AFCB44AFC91AB: Command-line `mount -t "ntfs"

總結修復Ubuntu和Win7系統選單Grub2

Restoring grub win7軟解的原因,不能將grub2裝在MBR上。因此我將grub2裝在我的ubuntu分割槽上了。 ubuntu是裝在邏輯分割槽裡面的,剛開始grub2並不能引導我的ubuntu, 一開機就出現win7的啟動選擇介面。只能手動進入grub4dos來啟動ubuntu。在

伺服器CentOs7系統使用寶塔面板搭建網站,有FTP配置(保姆式教程)

內容繁多,請耐心跟著流程走,在過程中遇到問題請在下面留言(我只是小白,請專業人士噴輕點)。 這次用thinkphp5.1做演示,單純的做演示,我打算下一篇文章用typecho(部落格框架)演示。 ## 前言 上篇文章([點選跳轉][1])說到了安裝面板就沒有然後了,因為圖片實在太多,碼字卡的不行,寶塔面板

RocketMQ4.7.1叢集搭建

導讀   上一集我們已經學會了SpringBoot整合RocketMQ點我直達,今天我們來搭建雙主雙從高效能MQ服務叢集。 簡介 主從架構   Broker角色,Master提供讀寫,Slave只支援讀,Consumer不用配置,當Master不可用或者繁忙的時候,Consumer會自動切換到Slave節點進

轉載centos7 關閉firewall防火墻指令以及更換安裝iptables並配置

ref stat con bsp comm 關閉 art output lis 轉載連接 http://ashui.net/archives/2015/943.html 一、配置防火墻,開啟80端口、3306端口 CentOS 7.0默認使用的是firewall作為防火

CgroupCentos7上面的Cgroup簡單實驗

lin 流量控制 prime lee 名稱 網絡數 resource 識別 brush 實驗目標 控制CPU分配 控制CPU使用率 控制內存分配 安裝配置工具 [[email protected] cpu]# yum install -y

轉載CentOS7.0下安裝Telnet

soc nbsp 裝包 正常 system 關閉防火墻 blog 不能 service 1.、先檢查CentOS7.0是否已經安裝以下兩個安裝包:telnet-server、xinetd。命令如下: # rpm -qa telnet-server # rpm -qa xin

RabbitMQ7、RabbitMQ備復制是異步還是同步?

處理 問題 主從 https 可靠 sql 關鍵點 不返回 當前 轉自:https://yq.aliyun.com/articles/73040?spm=5176.100240.searchblog.116.RcXYdl 我們知道RabbitMQ可以配置成Queue做主從復

思科HSRP和VRRP

思科 hsrp vrrp ? ? ? ? ? ? ? ? ? ?思科HSRP和VRRP雙主雙備??????R1#conf tR1(config)#int fa0/1R1(config-if)#ip add 13.0.0.1 255.255.255.0R1(config-if)#no shutR1(

disconf環境搭建linux

linux 文件 建表 sco 兩個 會有 能夠 nginx日誌 copy 1.搭建disconf需要安裝的配置。 安裝Linux:CentOS7 安裝Zookeeper:zookeeper-3.4.6 安裝Redis:redis-3.0.0