生產環境部署RocketMQ集群模式


一、環境准備

1.主機信息

主機名 主機IP地址 備注
broker-k8s-1 192.168.144.131 master &namesrv
broker-k8s-2 192.168.144.132 master &namesrv
broker-k8s-3 192.168.144.133 master &namesrv

二、生產環境配置要求(因為mq對內存消耗比較大,所以生產環境建議內存給大些)

硬件:  12G+內存(broker默認分配8G,namesrv默認分配4G,可自行調整)

 

軟件:

 

  1. 64bit OS, Linux/Unix/Mac is recommended;
  2. 64bit JDK 1.8+;
  3. Maven 3.2.x(非必要)
  4. Git(非必須)

正式搭建:目錄只是為了規范配置文件的存放路徑,名稱對實際配置無用

目錄介紹

  • 2m-noslave: 多Master模式
  • 2m-2s-sync: 多Master多Slave模式,同步雙寫
  • 2m-2s-async:多Master多Slave模式,異步復制

下載對應安裝包請在下面官網中下載你需要的版本安裝包

http://rocketmq.apache.org/docs/quick-start/

本文是以 rocketmq-all-4.5.2版本進行集群部署:

[root@k8s-1 rocketmq-all-4.5.2-bin-release] # pwd
/usr/local/src/rocketmq-all-4 .5.2-bin-release
[root@k8s-1 rocketmq-all-4.5.2-bin-release] # ls conf/2m-noslave/ -lh
total 12K
-rw-r--r-- 1 root root 1.5K Oct 8 18:22 broker-a.properties
-rw-r--r-- 1 root root 1.5K Oct 8 18:00 broker-b.properties
-rw-r--r-- 1 root root 937 Jul 31 21:09 broker-trace.properties
[root@k8s-1 rocketmq-all-4.5.2-bin-release] #

broker-k8s-1:配置文件:

 

重點注意以下參數:

 

brokerClusterName : 集群的名稱,同一個集群名稱要一樣的

 

brokerName : broker的名稱,同集群中,此名稱要不同

 

namesrvAddr : 集群所有節點的合集

 

brokerIP1 : 監聽在此IP的,通常默認是本機IP地址,但是不排除有橋接等導致監聽IP地址不正常的問題。
ot@k8s-1 rocketmq-all-4.5.2-bin-release]# cat conf/2m-noslave/broker-a.properties
# 配置參考官方鏈接:http://rocketmq.apache.org/docs/rmq-deployment/
 
# 所屬集群名字
brokerClusterName=rocketmq-cluster
 
# broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-k8s-1
 
# 0 表示 Master,>0 表示 Slave
brokerId=0
 
# 刪除文件時間點,默認凌晨4點。24小時制,單位小時
deleteWhen=04
 
# 文件保留時間,默認 72 小時。根據業務情況調整
fileReservedTime=168
 
# Broker 對外服務的監聽端口
listenPort=10911
 
# nameServer地址,分號分割
namesrvAddr=192.168.144.131:9876;192.168.144.132:9876;192.168.144.133:9876
 
# Details:Should be configured if having multiple addresses; Default value:InetAddress for network interface
# 本機ip地址,默認系統自動識別,但是某些多網卡機器會存在識別錯誤的情況,這種情況下可以人工配置。
brokerIP1=192.168.144.131
 
# commitLog 存儲路徑
storePathCommitLog=/usr/local/src/rocketmq-all-4.5.2-bin-release/rocketmq_store/commitlog
 
#發送消息的最大線程數
sendMessageThreadPoolNums: 64
#large thread numbers
#發送消息是否使用可重入鎖
useReentrantLockWhenPutMessage: true
 
# 消費隊列存儲路徑存儲路徑
storePathConsumerQueue=/usr/local/src/rocketmq-all-4.5.2-bin-release/rocketmq_store/consumequeue
 
# commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
 
# Broker 的角色
# - ASYNC_MASTER 異步復制Master
# - SYNC_MASTER 同步雙寫Master
# - SLAVE
brokerRole=ASYNC_MASTER
 
# 刷盤方式
# - ASYNC_FLUSH 異步刷盤
# - SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH

broker-k8s-2:配置文件

重點注意以下參數:

brokerClusterName : 集群的名稱,同一個集群名稱要一樣的
brokerName : broker的名稱,同集群中,此名稱要不同
namesrvAddr : 集群所有節點的合集
brokerIP1 : 監聽在此IP的,通常默認是本機IP地址,但是不排除有橋接等導致監聽IP地址不正常的問題。
 
         
[root@k8s-2 rocketmq-all-4.5.2-bin-release]# cat conf/2m-noslave/broker-a.properties
# 配置參考官方鏈接:http://rocketmq.apache.org/docs/rmq-deployment/
 
# 所屬集群名字
brokerClusterName=rocketmq-cluster
 
# broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-k8s-2
 
# 0 表示 Master,>0 表示 Slave
brokerId=0
 
# 刪除文件時間點,默認凌晨4點。24小時制,單位小時
deleteWhen=04
 
# 文件保留時間,默認 72 小時。根據業務情況調整
fileReservedTime=168
 
# Broker 對外服務的監聽端口
listenPort=10911
 
# nameServer地址,分號分割
namesrvAddr=192.168.144.131:9876;192.168.144.132:9876;192.168.144.133:9876
 
# Details:Should be configured if having multiple addresses; Default value:InetAddress for network interface
# 本機ip地址,默認系統自動識別,但是某些多網卡機器會存在識別錯誤的情況,這種情況下可以人工配置。
brokerIP1=192.168.144.132
 
# commitLog 存儲路徑
storePathCommitLog=/usr/local/src/rocketmq-all-4.5.2-bin-release/rocketmq_store/commitlog
 
#發送消息的最大線程數
sendMessageThreadPoolNums: 64
#large thread numbers
#發送消息是否使用可重入鎖
useReentrantLockWhenPutMessage: true
 
# 消費隊列存儲路徑存儲路徑
storePathConsumerQueue=/usr/local/src/rocketmq-all-4.5.2-bin-release/rocketmq_store/consumequeue
 
# commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
 
# Broker 的角色
# - ASYNC_MASTER 異步復制Master
# - SYNC_MASTER 同步雙寫Master
# - SLAVE
brokerRole=ASYNC_MASTER
 
# 刷盤方式
# - ASYNC_FLUSH 異步刷盤
# - SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH

broker-k8s-3:配置文件

重點注意以下參數:

brokerClusterName : 集群的名稱,同一個集群名稱要一樣的
brokerName : broker的名稱,同集群中,此名稱要不同
namesrvAddr : 集群所有節點的合集
brokerIP1 : 監聽在此IP的,通常默認是本機IP地址,但是不排除有橋接等導致監聽IP地址不正常的問題。
 
         
[root@k8s-3 rocketmq-all-4.5.2-bin-release]# cat conf/2m-noslave/broker-a.properties
# 配置參考官方鏈接:http://rocketmq.apache.org/docs/rmq-deployment/
 
# 所屬集群名字
brokerClusterName=rocketmq-cluster
 
# broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-k8s-3
 
# 0 表示 Master,>0 表示 Slave
brokerId=0
 
# 刪除文件時間點,默認凌晨4點。24小時制,單位小時
deleteWhen=04
 
# 文件保留時間,默認 72 小時。根據業務情況調整
fileReservedTime=168
 
# Broker 對外服務的監聽端口
listenPort=10911
 
# nameServer地址,分號分割
namesrvAddr=192.168.144.131:9876;192.168.144.132:9876;192.168.144.133:9876
 
# Details:Should be configured if having multiple addresses; Default value:InetAddress for network interface
# 本機ip地址,默認系統自動識別,但是某些多網卡機器會存在識別錯誤的情況,這種情況下可以人工配置。
brokerIP1=192.168.144.133
 
# commitLog 存儲路徑
storePathCommitLog=/usr/local/src/rocketmq-all-4.5.2-bin-release/rocketmq_store/commitlog
 
#發送消息的最大線程數
sendMessageThreadPoolNums: 64
#large thread numbers
#發送消息是否使用可重入鎖
useReentrantLockWhenPutMessage: true
 
# 消費隊列存儲路徑存儲路徑
storePathConsumerQueue=/usr/local/src/rocketmq-all-4.5.2-bin-release/rocketmq_store/consumequeue
 
# commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
 
# Broker 的角色
# - ASYNC_MASTER 異步復制Master
# - SYNC_MASTER 同步雙寫Master
# - SLAVE
brokerRole=ASYNC_MASTER
 
# 刷盤方式
# - ASYNC_FLUSH 異步刷盤
# - SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
啟動集群:
在  broker-k8s-1  broker-k8s-2  broker-k8s-3 啟動 broker 服務
 cd   /usr/local/src/rocketmq-all-4 .5.2-bin-release/
 nohup  sh bin /mqnamesrv  &
在  broker-k8s-1  broker-k8s-2  broker-k8s-3 啟動 broker 服務
# 機器下執行broker-a.properties文件啟動
nohup  sh bin /mqbroker  -c conf /2m-noslave/broker-a .properties -n  "192.168.144.131:9876;192.168.144.132:9876;192.168.144.133:9876"  &

驗證集群情況:

mq啟動腳本:

#!/bin/sh
 
source /etc/profile
 
CODE_DIR="/opt/app/rocketmq-all-4.5.2-bin-release"
 
start() {
  cd ${CODE_DIR}
  nohup sh bin/mqnamesrv &> mqnamesrv.log &
  nohup sh bin/mqbroker -c conf/2m-noslave/broker-a.properties -n "172.18.178.191:9876;172.18.178.192:9876;172.18.178.193:9876" &> nohup.out &
}
 
stop() {
    cd ${CODE_DIR}
    sh bin/mqshutdown broker
    sh bin/mqshutdown namesrv
}
 
status() {
  pid1=`ps ax | grep -i 'org.apache.rocketmq.namesrv.NamesrvStartup' |grep java | grep -v grep | awk '{print $1}'`
  if [ -z "$pid1" ] ; then
      echo "No mqnamesrv running."
  else
      echo "The mqnamesrv(${pid1}) is running..."
  fi
  pid2=`ps ax | grep -i 'org.apache.rocketmq.broker.BrokerStartup' |grep java | grep -v grep | awk '{print $1}'`
  if [ -z "$pid2" ] ; then
      echo "No mqbroker running."
      return 1;
  else
      echo "The mqbroker(${pid2}) is running..."
      return 0
  fi
   
}
case "$1" in
  'start')
    start
    ;;
 
  'stop')
    stop
    ;;
   
  'restart')
    stop
    start
    ;;
  'status')
    status
    ;;
  *)
    echo "Usage: $0 { start | stop | status |  restart }"
    exit 1
    ;;
esac
 
exit 0

mq-web啟動腳本:

#!/bin/bash
 
source /etc/profile
 
CODE_DIR="/opt/app/rocketmq-console-ng"
Process_name="rocketmq-console-ng-1.0.1.jar"
 
 
status() {
PID=$(ps -ef | grep ${Process_name} | grep -v grep | awk '{print $2}')
 
if [ ! -n "$PID" ]; then
  echo "NO RUNNING"
else
  echo "RUNNING"
  echo "PID IS : $PID"
fi
}
start() {
PID=$(ps -ef | grep ${Process_name} | grep -v grep | awk '{print $2}')
if [ ! -n "$PID" ]; then
  cd ${CODE_DIR}
   nohup java -Xms128m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=128m -jar /opt/app/rocketmq-console-ng/rocketmq-console-ng-1.0.1.jar &> nohup.out &
else
  echo "Ready RUNNING"
  echo "PID IS : $PID"
fi
}
stop() {
PID=$(ps -ef | grep ${Process_name} | grep -v grep | awk '{print $2}')
if [ ! -n "$PID" ]; then
  echo "NOT RUNNING"
else
  echo "PID IS : $PID"
  kill -9 $PID
fi
}
case "$1" in
  'start')
    start
    ;;
  'stop')
    stop
    ;;
  'restart')
    stop
    sleep 8
    start
    ;;
  'status')
    status
    ;;
  *)
    echo "Usage: $0 { start | stop | restart | status  }"
    exit 1
    ;;
esac
 
exit 0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM