下載
環境
64位操作系統,推薦 Linux/Unix/macOS
64位 JDK 1.8+
下載地址
https://rocketmq.apache.org/zh/download/
RocketMQ 的安裝包分為兩種,二進制包和源碼包。 二進制包是已經編譯完成后可以直接運行的,源碼包是需要編譯后運行的。
單臺服務
解壓,啟動服務
#解壓
unzip rocketmq-all-5.0.0-bin-release.zip
#切換目錄到RocketMQ根目錄
cd rocketmq-all-5.0.0-bin-release
#啟動Name Server
nohup sh bin/mqnamesrv &
# 驗證namesrv是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
#啟動Broker+Proxy
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
#驗證broker是否啟動成功
tail -f ~/logs/rocketmqlogs/broker_default.log
local模式集群
多組節點(集群)單副本模式
一個集群內全部部署 Master 角色,不部署Slave 副本,例如2個Master或者3個Master,這種模式的優缺點如下:
優點:配置簡單,單個Master宕機或重啟維護對應用無影響,在磁盤配置為RAID10時,即使機器宕機不可恢復情況下,由于RAID10磁盤非常可靠,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟),性能最高;
缺點:單臺機器宕機期間,這臺機器上未被消費的消息在機器恢復之前不可訂閱,消息實時性會受到影響。
服務器A和服務器B分別執行:
# 首先啟動NameServer
nohup sh mqnamesrv &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
服務器A和服務器B分別執行:也可以只使用一個NameServer,我是使用兩個服務器的,以下同理。
# 服務器A:啟動第一個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties --enable-proxy &
# 服務器B:啟動第二個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties --enable-proxy &
多節點(集群)多副本模式-異步復制
每個Master配置一個Slave,有多組 Master-Slave,HA采用異步復制方式,主備有短暫消息延遲(毫秒級),這種模式的優缺點如下:
優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,同時Master宕機后,消費者仍然可以從Slave消費,而且此過程對應用透明,不需要人工干預,性能同多Master模式幾乎一樣;
缺點:Master宕機,磁盤損壞情況下會丟失少量消息。
服務器A和服務器B分別執行:
# 首先啟動NameServer
nohup sh mqnamesrv &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
服務器A和服務器B分別執行:
# 服務器A:啟動第一個Master,例:兩臺服務器NameServer的IP為:192.168.1.1和192.168.1.2:9876
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties --enable-proxy &
# 服務器A:啟動第一個Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties --enable-proxy &
# 服務器B:啟動第二個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties --enable-proxy &
# 服務器B:啟動第二個Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties --enable-proxy &
多節點(集群)多副本模式-異步復制
每個Master配置一個Slave,有多組 Master-Slave,HA采用異步復制方式,主備有短暫消息延遲(毫秒級),這種模式的優缺點如下:
優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,同時Master宕機后,消費者仍然可以從Slave消費,而且此過程對應用透明,不需要人工干預,性能同多Master模式幾乎一樣;
缺點:Master宕機,磁盤損壞情況下會丟失少量消息。
服務器A和服務器B分別執行:
# 首先啟動NameServer
nohup sh mqnamesrv &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
服務器A和服務器B分別執行:
# 服務器A:啟動第一個Master,例:兩臺服務器NameServer的IP為:192.168.1.1和192.168.1.2:9876
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties --enable-proxy &
# 服務器A:啟動第一個Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties --enable-proxy &
# 服務器B:啟動第二個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties --enable-proxy &
# 服務器B:啟動第二個Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties --enable-proxy &
Cluster模式部署
在 Cluster 模式下,Broker 與 Proxy分別部署,我可以在 NameServer和 Broker都啟動完成之后再部署 Proxy。
在 Cluster模式下,一個 Proxy集群和 Broker集群為一一對應的關系,可以在 Proxy的配置文件 rmq-proxy.json 中使用 rocketMQClusterName 進行配置
單組節點單副本模式(單臺服務器)
這種方式風險較大,因為 Broker 只有一個節點,一旦Broker重啟或者宕機時,會導致整個服務不可用。不建議線上環境使用, 可以用于本地測試
# 首先啟動Name Server
nohup sh mqnamesrv &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
# 在服務器A,啟動第一個Master,例如NameServer的IP為:192.168.1.1
nohup sh bin/mqbroker -n 192.168.1.1:9876 &
多組節點(集群)單副本模式
一個集群內全部部署 Master 角色,不部署Slave 副本,例如2個Master或者3個Master,這種模式的優缺點如下:
優點:配置簡單,單個Master宕機或重啟維護對應用無影響,在磁盤配置為RAID10時,即使機器宕機不可恢復情況下,由于RAID10磁盤非常可靠,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟),性能最高;
缺點:單臺機器宕機期間,這臺機器上未被消費的消息在機器恢復之前不可訂閱,消息實時性會受到影響。
服務器A和服務器B執行
# 首先啟動Name Server
nohup sh mqnamesrv &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
服務器A和服務器B執行
# 服務器A:啟動第一個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &
# 在服務器B,啟動第二個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties &
多節點(集群)多副本模式-異步復制
每個Master配置一個Slave,有多組 Master-Slave,HA采用異步復制方式,主備有短暫消息延遲(毫秒級),這種模式的優缺點如下:
優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,同時Master宕機后,消費者仍然可以從Slave消費,而且此過程對應用透明,不需要人工干預,性能同多Master模式幾乎一樣;
缺點:Master宕機,磁盤損壞情況下會丟失少量消息。
服務器A和服務器B執行
# 首先啟動Name Server
nohup sh mqnamesrv &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
服務器A和服務器B執行
# 服務器A:啟動第一個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
# 服務器A:啟動第一個Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &# 服務器B:啟動第二個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
# 服務器B:啟動第二個Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &
多節點(集群)多副本模式-同步雙寫
每個Master配置一個Slave,有多對 Master-Slave,HA采用同步雙寫方式,即只有主備都寫成功,才向應用返回成功,這種模式的優缺點如下:
優點:數據與服務都無單點故障,Master宕機情況下,消息無延遲,服務可用性與數據可用性都非常高;
缺點:性能比異步復制模式略低(大約低10%左右),發送單個消息的RT會略高,且目前版本在主節點宕機后,備機不能自動切換為主機。
服務器A和服務器B執行
# 首先啟動Name Server
nohup sh mqnamesrv &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
服務器A和服務器B執行
# 服務器A:啟動第一個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &
# 服務器A:啟動第一個Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &# 服務器B:啟動第二個Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &
# 服務器B:啟動第二個Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &
啟動 Proxy
# 服務器A,啟動第一個Proxy
nohup sh bin/mqproxy -n 192.168.1.1:9876;192.168.1.2:9876 &
# 服務器B,啟動第二個Proxy
nohup sh bin/mqproxy -n 192.168.1.1:9876;192.168.1.2:9876 &
若需要指定配置文件,可以使用 -pc或者 --proxyConfigPath 進行指定
### 自定義配置文件
nohup sh bin/mqproxy -n 192.168.1.1:9876 -pc /path/to/proxyConfig.json &
上文參考來源:
模式詳解:https://developer.aliyun.com/article/1261853
【Linux】RocketMQ-Cluster集群搭建
https://blog.csdn.net/qq_51228157/article/details/126967486
https://www.cnblogs.com/sunyonggao/p/17485244.html
rocketmq運維控制臺搭建
環境配置
jdk安裝,已安裝的可以跳過
#Centos
sudo yum install -y java-1.8.0-openjdk*
maven安裝及配置,已安裝的可以跳過
#Centos
sudo yum install -y maven.noarch
#配置
sudo vim /usr/share/maven/conf/settings.xml
<mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf> </mirror>
</mirrors>
獲取控制臺
先查看:
https://github.com/apache/rocketmq-externals.git
會發現rocket-console不在里面了,rocket-console是之前的版本,現已經創建了一個獨立的倉庫并命名為RocketMQ Dashboard,地址在:https://github.com/apache/rocketmq-dashboard
安裝控制臺
git安裝,已安裝可以跳過
拉取控制臺
git clone https://github.com/apache/rocketmq-dashboard.git
修改配置文件:修改server.port和rocketmq.config.namesrvAddrs(NameServer的地址(多個的話使用;連接))
單個:192.168.1.1:9876
多個:192.168.1.1:9876;192.168.1.2:9876
[root@localhost rocketmq-dashboard]# vim src/main/resources/application.yml
編譯打包
失敗可以多嘗試幾次–可能是網絡問題
[root@localhost rocketmq-dashboard]# mvn clean package -Dmaven.test.skip=true
如果報以下錯誤:把pom.xml中的frontend-maven-plugin和maven-antrun-plugin插件注釋掉就能打包成功了
Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.11.3:yarn (yarn install) on project rocketmq-dashboard
打包成功在target文件夾下有jar包
異常參考:https://www.bilibili.com/read/cv22491621
啟動:
nohup java -jar rocketmq-dashboard.jar >/mnt/logs/rocketmqlogs/consolelog.out 2>&1 &
啟動成功之后訪問:http://IP地址:8088
控制臺參考資料:
https://tool.4xseo.com/a/8013.html
https://blog.csdn.net/so_geili/article/details/90142461
https://www.jianshu.com/p/5f70e34448ce
新版本RocketMQ配置Web管理界面:解決找不到rocketmq-console目錄問題:
https://blog.csdn.net/qq_43631716/article/details/119747200
詳細資料:https://blog.csdn.net/qq_37242720/article/details/126567047