上篇文章已經(jīng)介紹過RocketMQ,這里就不再寫了,下面直入主題,介紹RocketMQ安裝 因?yàn)镽ocketMQ是基于Java開發(fā)的,所以安裝RocketMQ之前,我們需要先安裝JDK,因?yàn)榉?wù)器一般采用Linux,所以本文只介紹基于Linux系統(tǒng)的教程
創(chuàng)新互聯(lián)建站成都網(wǎng)站建設(shè)按需規(guī)劃網(wǎng)站,是成都網(wǎng)站營銷推廣公司,為成都衛(wèi)生間隔斷提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站維護(hù)熱線:028-86922220Apache RocketMQ 5.0 版本完成基本消息收發(fā),包括 NameServer、Broker、Proxy 組件。 在 5.0 版本中 Proxy 和 Broker 根據(jù)實(shí)際訴求可以分為 Local 模式和 Cluster模式,一般情況下如果沒有特殊需求,或者遵循從早期版本平滑升級的思路,可以選用Local模式。
? 在 Local 模式下,Broker 和 Proxy 是同進(jìn)程部署,只是在原有 Broker 的配置基礎(chǔ)上新增 Proxy 的簡易配置就可以運(yùn)行。
? 在 Cluster 模式下,Broker 和 Proxy 分別部署,即在原有的集群基礎(chǔ)上,額外再部署 Proxy 即可。
一、單機(jī)安裝 1、環(huán)境和資源準(zhǔn)備安裝配置java環(huán)境
系統(tǒng)要求:官網(wǎng)(https://rocketmq.apache.org/zh/docs/quickStart/02quickstart)上5.0版本的要求如下:
64位操作系統(tǒng),推薦 Linux/Unix/macOS
64位 JDK 1.8+
RocketMQ 的安裝包分為兩種,二進(jìn)制包和源碼包。 點(diǎn)擊這里 下載 Apache RocketMQ 5.0.0的源碼包。你也可以從這里 下載到二進(jìn)制包。二進(jìn)制包是已經(jīng)編譯完成后可以直接運(yùn)行的,源碼包是需要編譯后運(yùn)行的
unzip rocketmq-all-5.0.0-bin-release.zip
#切換目錄到RocketMQ根目錄
cd rocketmq-all-5.0.0-bin-release
#啟動Name Server
nohup sh bin/mqnamesrv &
# 驗(yàn)證namesrv是否啟動成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
#啟動Broker+Proxy
# 先啟動broker
$ nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
### 驗(yàn)證broker是否啟動成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
$ tail -f ~/logs/rocketmqlogs/broker_default.log
4、安裝可視化插件dashboard倉庫: https://github.com/apache/rocketmq-dashboard
rocketmq-console:https://github.com/apache/rocketmq-externals
二、集群部署 1、多組節(jié)點(diǎn)(集群)單副本模式一個集群內(nèi)全部部署 Master 角色,不部署Slave 副本,例如2個Master或者3個Master,這種模式的優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):配置簡單,單個Master宕機(jī)或重啟維護(hù)對應(yīng)用無影響,在磁盤配置為RAID10時,即使機(jī)器宕機(jī)不可恢復(fù)情況下,由于RAID10磁盤非??煽?,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟),性能最高;
缺點(diǎn):單臺機(jī)器宕機(jī)期間,這臺機(jī)器上未被消費(fèi)的消息在機(jī)器恢復(fù)之前不可訂閱,消息實(shí)時性會受到影響。
啟動NameServer:NameServer需要先于Broker啟動,且如果在生產(chǎn)環(huán)境使用,為了保證高可用,建議一般規(guī)模的集群啟動3個NameServer,各節(jié)點(diǎn)的啟動命令相同,如下:
### 首先啟動NameServer
$ nohup sh mqnamesrv &
### 驗(yàn)證Name Server 是否啟動成功
$ tail -f ~/logs/rocketmqlogs/namesrv.logThe Name Server boot success...
啟動Broker+Proxy集群
### 在機(jī)器A,啟動第一個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties --enable-proxy &
### 在機(jī)器B,啟動第二個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties --enable-proxy &
2、多節(jié)點(diǎn)(集群)多副本模式-異步復(fù)制每個Master配置一個Slave,有多組 Master-Slave,HA采用異步復(fù)制方式,主備有短暫消息延遲(毫秒級),這種模式的優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):即使磁盤損壞,消息丟失的非常少,且消息實(shí)時性不會受影響,同時Master宕機(jī)后,消費(fèi)者仍然可以從Slave消費(fèi),而且此過程對應(yīng)用透明,不需要人工干預(yù),性能同多Master模式幾乎一樣;
缺點(diǎn):Master宕機(jī),磁盤損壞情況下會丟失少量消息。
啟動NameServer
### 首先啟動Name Server
$ nohup sh mqnamesrv &
### 驗(yàn)證Name Server 是否啟動成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
啟動Broker+Proxy集群
### 在機(jī)器A,啟動第一個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties --enable-proxy &
### 在機(jī)器B,啟動第二個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties --enable-proxy &
### 在機(jī)器C,啟動第一個Slave,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties --enable-proxy &
### 在機(jī)器D,啟動第二個Slave,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties --enable-proxy &
3、多節(jié)點(diǎn)(集群)多副本模式-同步雙寫每個Master配置一個Slave,有多對 Master-Slave,HA采用同步雙寫方式,即只有主備都寫成功,才向應(yīng)用返回成功,這種模式的優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):數(shù)據(jù)與服務(wù)都無單點(diǎn)故障,Master宕機(jī)情況下,消息無延遲,服務(wù)可用性與數(shù)據(jù)可用性都非常高;
缺點(diǎn):性能比異步復(fù)制模式略低(大約低10%左右),發(fā)送單個消息的RT會略高,且目前版本在主節(jié)點(diǎn)宕機(jī)后,備機(jī)不能自動切換為主機(jī)。
啟動NameServer
### 首先啟動Name Server
$ nohup sh mqnamesrv &
### 驗(yàn)證Name Server 是否啟動成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
啟動 Broker+Proxy 集群
### 在機(jī)器A,啟動第一個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties --enable-proxy &
### 在機(jī)器B,啟動第二個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties --enable-proxy &
### 在機(jī)器C,啟動第一個Slave,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties --enable-proxy &
### 在機(jī)器D,啟動第二個Slave,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties --enable-proxy &
三、Cluster模式部署在 Cluster 模式下,Broker 與 Proxy分別部署,我可以在 NameServer和 Broker都啟動完成之后再部署 Proxy。
在 Cluster模式下,一個 Proxy集群和 Broker集群為一一對應(yīng)的關(guān)系,可以在 Proxy的配置文件 rmq-proxy.json 中使用 rocketMQClusterName 進(jìn)行配置
啟動 NameServer
### 首先啟動Name Server
$ nohup sh mqnamesrv &
### 驗(yàn)證Name Server 是否啟動成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
啟動 Broker
1、單組節(jié)點(diǎn)單副本模式這種方式風(fēng)險(xiǎn)較大,因?yàn)?Broker 只有一個節(jié)點(diǎn),一旦Broker重啟或者宕機(jī)時,會導(dǎo)致整個服務(wù)不可用。不建議線上環(huán)境使用, 可以用于本地測試
### 在機(jī)器A,啟動第一個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 &
2、多組節(jié)點(diǎn)(集群)單副本模式一個集群內(nèi)全部部署 Master 角色,不部署Slave 副本,例如2個Master或者3個Master,這種模式的優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):配置簡單,單個Master宕機(jī)或重啟維護(hù)對應(yīng)用無影響,在磁盤配置為RAID10時,即使機(jī)器宕機(jī)不可恢復(fù)情況下,由于RAID10磁盤非??煽?,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟),性能最高;
缺點(diǎn):單臺機(jī)器宕機(jī)期間,這臺機(jī)器上未被消費(fèi)的消息在機(jī)器恢復(fù)之前不可訂閱,消息實(shí)時性會受到影響。
### 在機(jī)器A,啟動第一個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &
### 在機(jī)器B,啟動第二個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties &
備注
如上啟動命令是在單個NameServer情況下使用的。對于多個NameServer的集群,Broker啟動命令中-n后面的地址列表用分號隔開即可,例如 192.168.1.1:9876;192.161.2:9876。
3、多節(jié)點(diǎn)(集群)多副本模式-異步復(fù)制每個Master配置一個Slave,有多組 Master-Slave,HA采用異步復(fù)制方式,主備有短暫消息延遲(毫秒級),這種模式的優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):即使磁盤損壞,消息丟失的非常少,且消息實(shí)時性不會受影響,同時Master宕機(jī)后,消費(fèi)者仍然可以從Slave消費(fèi),而且此過程對應(yīng)用透明,不需要人工干預(yù),性能同多Master模式幾乎一樣;
缺點(diǎn):Master宕機(jī),磁盤損壞情況下會丟失少量消息。
### 在機(jī)器A,啟動第一個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
### 在機(jī)器B,啟動第二個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
### 在機(jī)器C,啟動第一個Slave,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &
### 在機(jī)器D,啟動第二個Slave,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &
4、多節(jié)點(diǎn)(集群)多副本模式-同步雙寫每個Master配置一個Slave,有多對 Master-Slave,HA采用同步雙寫方式,即只有主備都寫成功,才向應(yīng)用返回成功,這種模式的優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):數(shù)據(jù)與服務(wù)都無單點(diǎn)故障,Master宕機(jī)情況下,消息無延遲,服務(wù)可用性與數(shù)據(jù)可用性都非常高;
缺點(diǎn):性能比異步復(fù)制模式略低(大約低10%左右),發(fā)送單個消息的RT會略高,且目前版本在主節(jié)點(diǎn)宕機(jī)后,備機(jī)不能自動切換為主機(jī)。
### 在機(jī)器A,啟動第一個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &
### 在機(jī)器B,啟動第二個Master,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &
### 在機(jī)器C,啟動第一個Slave,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &
### 在機(jī)器D,啟動第二個Slave,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &
提示5、啟動 Proxy
以上 Broker 與 Slave 配對是通過指定相同的 BrokerName 參數(shù)來配對,Master 的 BrokerId 必須是 0,Slave 的 BrokerId 必須是大于 0 的數(shù)。另外一個 Master 下面可以掛載多個 Slave,同一 Master 下的多個 Slave 通過指定不同的 BrokerId 來區(qū)分。$ROCKETMQ_HOME指的RocketMQ安裝目錄,需要用戶自己設(shè)置此環(huán)境變量。
可以在多臺機(jī)器啟動多個Proxy
### 在機(jī)器A,啟動第一個Proxy,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqproxy -n 192.168.1.1:9876 &
### 在機(jī)器B,啟動第二個Proxy,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqproxy -n 192.168.1.1:9876 &
### 在機(jī)器C,啟動第三個Proxy,例如NameServer的IP為:192.168.1.1
$ nohup sh bin/mqproxy -n 192.168.1.1:9876 &
若需要指定配置文件,可以使用 -pc或者 --proxyConfigPath 進(jìn)行指定
### 自定義配置文件
$ nohup sh bin/mqproxy -n 192.168.1.1:9876 -pc /path/to/proxyConfig.json &
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧