1. 程式人生 > 其它 >訊息中間間:rocketmq叢集部署

訊息中間間:rocketmq叢集部署

配置hosts

cd /etc/hosts

1. 多Master模式

一個叢集無Slave,全是Master,例如2個Master或者3個Master,這種模式的優缺點如下:

  • 優點:配置簡單,單個Master宕機或重啟維護對應用無影響,在磁碟配置為RAID10時,即使機器宕機不可恢復情況下,由於RAID10磁碟非常可靠,訊息也不會丟(非同步刷盤丟失少量訊息,同步刷盤一條不丟),效能最高;
  • 缺點:單臺機器宕機期間,這臺機器上未被消費的訊息在機器恢復之前不可訂閱,訊息實時性會受到影響。
1)啟動NameServer

NameServer需要先於Broker啟動,且如果在生產環境使用,為了保證高可用,建議一般規模的叢集啟動3個NameServer,各節點的啟動命令相同,如下:


$ cd /opt/rocketmq-4.9.3/bin
### 首先啟動Name Server
$ nohup sh mqnamesrv &
 
### 驗證Name Server 是否啟動成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

2)啟動Broker叢集

$ cd /opt/rocketmq-4.9.3/bin
### 在機器A,啟動第一個Master,例如NameServer的IP為:192.168.1.219
$ nohup sh mqbroker -n 192.168.1.219:9876 -c ../conf/2m-noslave/broker-a.properties &
### 在機器B,啟動第二個Master,例如NameServer的IP為:192.168.1.220 $ nohup sh mqbroker -n 192.168.1.220:9876 -c ../conf/2m-noslave/broker-b.properties &
...

 如上啟動命令是在單個NameServer情況下使用的。對於多個NameServer的叢集,Broker啟動命令中-n後面的地址列表用分號隔開即可,例如 192.168.1.219:9876;192.1.220:9876

2. 多Master多Slave模式-非同步複製

每個Master配置一個Slave,有多對Master-Slave,HA採用非同步複製方式,主備有短暫訊息延遲(毫秒級),這種模式的優缺點如下:

  • 優點:即使磁碟損壞,訊息丟失的非常少,且訊息實時性不會受影響,同時Master宕機後,消費者仍然可以從Slave消費,而且此過程對應用透明,不需要人工干預,效能同多Master模式幾乎一樣;
  • 缺點:Master宕機,磁碟損壞情況下會丟失少量訊息。
1)啟動NameServer

$ cd /opt/rocketmq-4.9.3/bin

### 首先啟動Name Server $ nohup sh mqnamesrv
& ### 驗證Name Server 是否啟動成功 $ tail -f ~/logs/rocketmqlogs/namesrv.log The Name Server boot success...
2)啟動Broker叢集
$ cd /opt/rocketmq-4.9.3/bin
### 在機器A,啟動第一個Master,例如NameServer的IP為:192.168.1.219
$ nohup sh mqbroker -n 192.168.1.219:9876 -c ../conf/2m-2s-async/broker-a.properties & 

### 在機器B,啟動第二個Master,例如NameServer的IP為:
192.168.1.220
$ nohup sh mqbroker
-n 192.168.1.220:9876 -c ../conf/2m-2s-async/broker-b.properties &

### 在機器A,啟動第一個Slave,例如NameServer的IP為:
192.168.1.219
$ nohup sh mqbroker
-n 192.168.1.219:9876 -c ../conf/2m-2s-async/broker-a-s.properties &

### 在機器B,啟動第二個Slave,例如NameServer的IP為:
192.168.1.220
$ nohup sh mqbroker
-n 192.168.1.220:9876 -c ../conf/2m-2s-async/broker-b-s.properties &

3. 多Master多Slave模式-同步雙寫

每個Master配置一個Slave,有多對Master-Slave,HA採用同步雙寫方式,即只有主備都寫成功,才嚮應用返回成功,這種模式的優缺點如下:

  • 優點:資料與服務都無單點故障,Master宕機情況下,訊息無延遲,服務可用性與資料可用性都非常高;
  • 缺點:效能比非同步複製模式略低(大約低10%左右),傳送單個訊息的RT會略高,且目前版本在主節點宕機後,備機不能自動切換為主機。
1)啟動NameServer

$ cd /opt/rocketmq-4.9.3/bin
### 首先啟動Name Server
$ nohup sh mqnamesrv &
 
### 驗證Name Server 是否啟動成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

2)啟動Broker叢集

$ cd /opt/rocketmq-4.9.3/bin
### 在機器A,啟動第一個Master,例如NameServer的IP為:192.168.1.219
$ nohup sh mqbroker -n 192.168.1.219:9876 -c ../conf/2m-2s-sync/broker-a.properties &
 
### 在機器B,啟動第二個Master,例如NameServer的IP為:192.168.1.220
$ nohup sh mqbroker -n 192.168.1.220:9876 -c ../conf/2m-2s-sync/broker-b.properties &
 
### 在機器A,啟動第一個Slave,例如NameServer的IP為:192.168.1.219
$ nohup sh mqbroker -n 192.168.1.219:9876 -c ../conf/2m-2s-sync/broker-a-s.properties &
 
### 在機器B,啟動第二個Slave,例如NameServer的IP為:192.168.1.220
$ nohup sh mqbroker -n 192.168.1.220:9876 -c ../conf/2m-2s-sync/broker-b-s.properties &

以上Broker與Slave配對是通過指定相同的BrokerName引數來配對,Master的BrokerId必須是0,Slave的BrokerId必須是大於0的數。另外一個Master下面可以掛載多個Slave,同一Master下的多個Slave通過指定不同的BrokerId來區分。