RocketMQ安裝部署

準(zhǔn)備

操作系統(tǒng):CentOS-6.9-x86_64-bin-DVD1.iso

依賴環(huán)境:gcc 4.4.7.rar、jdk-8u121-linux-x64.tar.gz

安裝軟件:rocketmq-all-4.2.0.tar.gz

部署

部署方式

? 默認(rèn)RocketMQ部署都是集群部署,業(yè)務(wù)處理及存儲根據(jù)broker有關(guān),RocketMQ也有所謂的主從節(jié)點master/slave,這里的Slave 不可寫,但可讀,類似于 Mysql主備方式。

建議在安裝系統(tǒng)時磁盤配置為RAID10 時,即使機器宕機不可恢復(fù)情況下,由與 RAID10磁盤非??煽浚⒁膊粫G(異步刷盤丟失少量消息,同步刷盤一條不丟)。

1、單主節(jié)點部署(單個Master)

這種方式風(fēng)險較大,因為是單節(jié)點部署一旦Broker重啟或者宕機時,會導(dǎo)致整個服務(wù)不可用,<u>不建議線上</u>環(huán)境使用

2、多主節(jié)點部署(多個Master)

一個集群無 Slave,全是 Master,可部署 2 個 Master 或者 3 個 Master 甚至是多個N個Master節(jié)點,相對于單個Master,其可用性和穩(wěn)定性都有大幅度提高,對于單個Broker節(jié)點宕機或者重啟時,不會影響整個集群的正常使用。

宕機的Broker節(jié)點上面的消息不能立刻被消費,直至恢復(fù)服務(wù)至正常狀態(tài)才能被消費者消費,消息實時性會受到受到影響

3、多主節(jié)點多從節(jié)點模式,異步復(fù)制(多個Master/Slave,ASYNC)

每個 Master 配置一個 Slave,有多對Master-Slave, HA采用異步復(fù)制方式,主備有短暫消息延遲,毫秒級。相對于多主部署在其可用性上有所提高。即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,因為Master 宕機后,消費者仍然可以從 Slave消費,此過程對應(yīng)用透明。不需要人工干預(yù)。性能同多 Master 模式幾乎一樣。

Master 宕機,磁盤損壞情況,會丟失少量消息

4、多主節(jié)點多從節(jié)點模式,同步雙寫(多個Master/Slave,SYNC)

每個 Master 配置一個 Slave,有多對Master-Slave, HA采用同步雙寫方式,主備都寫成功,向應(yīng)用返回成功。數(shù)據(jù)與服務(wù)都無單點, Master宕機情況下,消息無延遲,服務(wù)可用性與數(shù)據(jù)可用性都非常高。

性能比異步復(fù)制模式略低,大約低 10%左右,發(fā)送單個消息的 RT會略高。目前主宕機后,備機不能自動切換為主機,后續(xù)會支持自動切換功能


注:以上 Broker 與 Slave 配對是通過指定相同的brokerName 參數(shù)來配對, Master的 BrokerId 必須是 0, Slave 的BrokerId 必須是大與 0 的數(shù)。另外一個 Maste下面可以掛載多個 Slave,同一 Master 下的多個 Slave通過指定不同的 BrokerId來區(qū)分

雙主部署

1、服務(wù)器環(huán)境

序號 IP 用戶名 密碼 角色 模式
1 10.10.14.142 root 123456 nameServer1,brokerServer1 Master1
2 10.10.14.143 root 123456 nameServer2,brokerServer2 Master2

Hosts 添加信息

IP NAME
10.10.14.142 nameServer1
10.10.14.142 brokerServer1
10.10.14.143 nameServer2
10.10.14.143 brokerServer2

分別在兩臺機器上修改文件vi /etc/hosts

image

2、上傳并解壓RocketMQ文件(兩臺主機)

上傳rocketmq-all-4.2.0.tar.gz文件至/usr/local

解壓至/usr/local文件夾下:tar -zxvf rocketmq-all-4.2.0.tar.gz -C /usr/local

建立軟連接利于操作

ln -s rocketmq-all-4.2.0 rocketmq

創(chuàng)建存儲路徑

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

3、RocketMQ 配置文件(兩臺主機)

查看rocketmq/config

image

有三個文件夾,這是默認(rèn)存在的,分別表示2主2從異步刷盤、2主2從同步刷盤、2主沒有從節(jié)點。我們部署的就是2主。修改配置文件。

2m-noslave文件夾中修改broker-a.properties/broker-a.properties

#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr= rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
# 在發(fā)送消息時,自動創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊列數(shù)
defaultTopicQueueNums=4
# 是否允許 Broker 自動創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
# 是否允許 Broker 自動創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
# Broker 對外服務(wù)的監(jiān)聽端口
listenPort=10911
# 刪除文件時間點,默認(rèn)凌晨 4點
deleteWhen=04
#文件保留時間,默認(rèn) 48 小時
fileReservedTime=120
#commitLog每個文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir= /usr/local/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog= /usr/local/rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/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
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池數(shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池數(shù)量
#pullMessageThreadPoolNums=128

4、修改日志配置文件(兩臺主機)

mkdir -p /usr/local/rocketmq/logs
cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml

5、修改啟動腳本(開發(fā)環(huán)境下)(兩臺主機)

一般我們開發(fā)環(huán)境都是虛擬機內(nèi)存不大,需要修改其配置文件。

vim /usr/local/rocketmq/bin/runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
XX:PermSize=128m -XX:MaxPermSize=320m"

vim /usr/local/rocketmq/bin/runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
XX:PermSize=128m -XX:MaxPermSize=320m"

修改java虛擬機的內(nèi)存大小時堆內(nèi)存必須大于等于1G,這是啟動服務(wù)的最低配置要求

6、啟動NameServer(兩臺主機)

cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &

7、啟動BrokerServer

啟動BrokerServer A 【10.10.14.142】

cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
查看進程
jps
查看日志文件
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log

啟動BrokerServer B 【10.10.14.143】

cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
查看進程
jps
查看日志文件
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log

8、數(shù)據(jù)清理

cd /usr/local/rocketmq/bin
sh mqshutdown broker
sh mqshutdown namesrv

等待停止
rm -rf /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
按照上面步驟重啟NameServer與BrokerServertail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

文中提到的一些參數(shù)配置只是簡單的進行描述,后面章節(jié)會對相應(yīng)的參數(shù)做詳細分析

文中提到的一些名詞如NameServer、Broker之間的關(guān)系及工作原理后面章節(jié)中也會一一介紹

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、重要概念及說明 Disk Flush(磁盤刷新/同步操作):就是將內(nèi)存的數(shù)據(jù)落地,存儲在磁盤中。RocketM...
    小陳阿飛閱讀 3,485評論 0 1
  • Rocket MQ 介紹: 1.要知道RocketMQ原生就是支持分布式的,而ActiveMQ原生存在單點性。2....
    Anson前行閱讀 2,043評論 0 4
  • 此文章目的在于記錄學(xué)習(xí)過程,環(huán)境centos7 部署1-master 1-slave ip:192.168.10....
    鷹帥閱讀 174評論 0 0
  • 一.預(yù)備環(huán)境 1.系統(tǒng) Windows 2.環(huán)境 JDK1.8、Maven、Git 二. Rock...
    知其不可而為之閱讀 120,506評論 14 48
  • 說不上在乎不在乎,愛不愛,歡喜不歡喜,只是都來得太突然,來得太倉促,來得太美,真真如煙火般轉(zhuǎn)眼就沒了。 決絕地刪掉...
    市海閱讀 255評論 0 1

友情鏈接更多精彩內(nèi)容