(原創)Rocketmq分佈式消息隊列的部署與監控

--------------------------------------------------------------------------------------------html

1、Rocketmq簡介:java

--------------------------------------------------------------------------------------------linux

RocketMQ是一款分佈式、隊列模型的消息中間件,具備如下特色:
一、支持嚴格的消息順序;
二、支持Topic與Queue兩種模式;
三、億級消息堆積能力;
四、比較友好的分佈式特性;
五、同時支持Push與Pull方式消費消息;git

 

(本文采用雙Master架構模式。github

 

--------------------------------------------------------------------------------------------web

2、服務器分佈:shell

--------------------------------------------------------------------------------------------json

一、2臺服務器信息(我用的虛擬機)centos

IP地址 主機名 機型 角色 架構模式
 192.168.100.193  rocketmq-master1 20G nameserver、brokerserver  Master1(雙Master模式) 
  192.168.100.194  rocketmq-master2 20G  nameserver、brokerserver  Master2(雙Master模式)

 

 

 

 二、hosts信息添加安全

 

vi /etc/hosts

增長如下:

192.168.100.193 rocketmq-master1
192.168.100.194 rocketmq-master2

192.168.100.193 mqnameserver1
192.168.100.194 mqnameserver2

 

三、系統環境

CentOS 6.3

 

四、整體架構

 

 

--------------------------------------------------------------------------------------------

3、Rocketmq安裝與配置

--------------------------------------------------------------------------------------------

 一、JDK安裝:

tar包解壓,而後在/etc/profile中加入以下的環境變量:

生效:source /etc/profile

具體能夠參考個人另外一篇博客:http://www.cnblogs.com/gmq-sh/p/4328843.html

 

二、RocketMq安裝

下載rocketmq的release版:

https://github.com/alibaba/RocketMQ/releases

文件我放到了/data目錄下。

執行一下命令:

tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local/
mv alibaba-rocketmq alibaba-rocketmq-3.2.6
ln -s alibaba-rocketmq-3.2.6 rocketmq
ll /usr/local

(

如下是分開執行的以及效果:

tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local/

mv alibaba-rocketmq alibaba-rocketmq-3.2.6

修更名字。

創建軟鏈接:

ln -s alibaba-rocketmq-3.2.6 rocketmq

)

 

三、環境變量設置(其中ROCKETMQ_HOME是否須要設置,待觀察,目前設置與否均可以,由於暫時未在其餘地方用到

在 /etc/profile 文件中追加一下配置:

vi /etc/profile

 3.一、若是是tar包安裝jdk,則以下配置:

## java env
export JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

## rocketmq
export ROCKETMQ_HOME=/usr/local/rocketmq

PATH=$JAVA_HOME/bin:$ROCKETMQ_HOME/bin:$PATH

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

 3.二、若是是rpm安裝,則須要配置JAVA_HOME

在 /etc/profile 文件中添加JAVA_HOME,而且加入到export 的後面:

 

 

生效:

source /etc/profile

 

進入rocketmq的bin目錄:

cd /usr/local/rocketmq/bin

centos系統優化:慎用,我虛擬機老是卡死,還不明白爲啥

執行 os.sh的系統優化,原始的sh文件須要修改,否則會致使出問題:

-- sh os.sh -- 未找到錯誤緣由,先不要執行這個命令

 

(詳情參考本人另外一篇博文:http://www.cnblogs.com/gmq-sh/p/6957741.html)

目前這個命令已經根據剛纔的博文改好了,貌似仍是一直在執行,不知道要執行多久,有大神能夠指導下?

 

四、主機名設置

(1)、Master1服務器

vi /etc/hosts

以下:

192.168.100.193 rocketmq-master1
192.168.100.194 rocketmq-master2

192.168.100.193 mqnameserver1
192.168.100.194 mqnameserver2

 

網絡:

vi /etc/sysconfig/network

修改爲以下:

 

sed -i  '/HOSTNAME/d' /etc/sysconfig/network
echo 'HOSTNAME=rocketmq-master1'  >> /etc/sysconfig/network
hostname rocketmq-master1

效果以下:

 

 

 (2)、Master2服務器

vi /etc/hosts
192.168.100.193 rocketmq-master1
192.168.100.194 rocketmq-master2

192.168.100.193 mqnameserver1
192.168.100.194 mqnameserver2

sed -i  '/HOSTNAME/d' /etc/sysconfig/network
echo 'HOSTNAME=rocketmq-master2'  >> /etc/sysconfig/network
hostname rocketmq-master2

 

五、RocketMQ配置

 (1)、Master1服務器

vi /usr/local/rocketmq/conf/2m-noslave/broker-a.properties

內容以下:

---------------------start-----------------------------------------------------

#啓動MessageFilterServer進程
#filterServerNums=1

#Broker所屬集羣

brokerClusterName=AdpMqCluster
brokerName=broker-a

#0:Master >0:Slave
brokerId=0
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
defaultTopicQueueNums=4

#線下開啓,線上關閉
autoCreateTopicEnable=FALSE

#自動建立訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=FALSE

#是否拒絕事務消息接入
rejectTransactionMessage=FALSE

#是否從web服務器獲取NameServer地址,針對大規模的Broker集羣建議使用這種方式

fetchNamesrvAddrByAddressServer=FALSE


listenPort=10911

#刪除文件時間點,默認凌晨4點
deleteWhen=04

#文件保留時間,默認48小時
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88

#日誌根路徑

storePathRootDir=/data/rocketmq/store

#commitLog存儲路徑
storePathCommitLog=/data/rocketmq/store/commitlog

maxMessageSize=65536

flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000

#Broker 的角色
#ASYNC_MASTER 主從異步複製
#SYNC_MASTER 主從同步雙寫
#SLAVE Slave

brokerRole=ASYNC_MASTER

#刷盤方式
#ASYNC_FLUSH:異步刷盤
#SYNC_FLUSH:同步刷盤

flushDiskType=ASYNC_FLUSH

checkTransactionMessageEnable=false

sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128

#是否開啓消息索引功能
messageIndexEnable=TRUE

#是否提供安全的消息索引機制,索引保證不丟
messageIndexSafe=FALSE

#磁盤滿、且無過時文件狀況下 TRUE 表示強制刪除文件,優先保證服務可用; FALSE 標記服務不可用,文件不刪除
cleanFileForciblyEnable=TRUE

#Topic持久化文件
topicConfigPath=/data/logs/rocketmq/store/config/topics.json

#ConsumerOffset持久化文件
consumerOffsetPath=/data/logs/rocketmq/store/config/consumerOffset.json

#subscriptionGroup 持久化文件
subscriptionGroupPath=/data/logs/rocketmq/store/config/subscriptionGroup.json

 

---------------------end-----------------------------------------------------

 

 (2)、Master2服務器

vi /usr/local/rocketmq/conf/2m-noslave/broker-b.properties

內容以下:

---------------------start-----------------------------------------------------

#啓動MessageFilterServer進程
#filterServerNums=1

#Broker所屬集羣

brokerClusterName=AdpMqCluster
brokerName=broker-b

#0:Master >0:Slave
brokerId=0

namesrvAddr=mqnameserver1:9876;mqnameserver2:9876

#在發送消息時,自動建立服務器不存在的topic,默認建立的隊列數

defaultTopicQueueNums=4

#線下開啓,線上關閉
autoCreateTopicEnable=FALSE

#自動建立訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=FALSE

#是否拒絕事務消息接入
rejectTransactionMessage=FALSE

#是否從web服務器獲取NameServer地址,針對大規模的Broker集羣建議使用這種方式

fetchNamesrvAddrByAddressServer=FALSE


listenPort=10911

#刪除文件時間點,默認凌晨4點
deleteWhen=04

#文件保留時間,默認48小時
fileReservedTime=120

#commitLog每一個文件的大小默認1G
mapedFileSizeCommitLog=1073741824

#ConsumeQueue每一個文件默認存30W條,根據業務狀況調整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000

#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88

#日誌根路徑

storePathRootDir=/data/rocketmq/store

#commitLog存儲路徑
storePathCommitLog=/data/rocketmq/store/commitlog

#限制的消息大小

maxMessageSize=65536

flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000

#Broker 的角色
#ASYNC_MASTER 主從異步複製
#SYNC_MASTER 主從同步雙寫
#SLAVE Slave

brokerRole=ASYNC_MASTER

#刷盤方式
#ASYNC_FLUSH:異步刷盤
#SYNC_FLUSH:同步刷盤

flushDiskType=ASYNC_FLUSH

checkTransactionMessageEnable=false

#發消息線程池數量

sendMessageThreadPoolNums=128

#拉消息線程池數量
pullMessageThreadPoolNums=128

#是否開啓消息索引功能
messageIndexEnable=TRUE

#是否提供安全的消息索引機制,索引保證不丟
messageIndexSafe=FALSE

#磁盤滿、且無過時文件狀況下 TRUE 表示強制刪除文件,優先保證服務可用; FALSE 標記服務不可用,文件不刪除
cleanFileForciblyEnable=TRUE

#Topic持久化文件
topicConfigPath=/data/logs/rocketmq/store/config/topics.json

#ConsumerOffset持久化文件
consumerOffsetPath=/data/logs/rocketmq/store/config/consumerOffset.json

#subscriptionGroup 持久化文件
subscriptionGroupPath=/data/logs/rocketmq/store/config/subscriptionGroup.json

 

---------------------end-----------------------------------------------------

 

(3)、修改啓動腳本(JVM參數調優)

由於咱們以前將nameServer和broker放在了同一臺機器上,因此須要分別對nameServer和broker進行jvm的性能調優。生產環境默認便可不要修改。

1)broker的調優(目前是默認配置)

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

runbroker.sh須要根據內存大小進行適當地調整

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g - XX:PermSize=128m -XX:MaxPermSize=320m"

 

2)nameserver的調優(目前是默認配置)

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

runserver.sh須要根據內存大小進行適當地調整

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g - XX:PermSize=128m -XX:MaxPermSize=320m"

 

 

六、服務啓動


啓動兩臺機器的NameServer:先啓動兩臺機器的NameServer,再啓動兩臺機器的Borker,關機的時候順序相反,先關閉兩臺機器的Broker,再關閉兩臺機器的Nameserver。

0.1:日誌文件目錄自定義

①、建立日誌目錄

/data/rocketmq/store/commitlog -->對應的是commitlog日誌; /data/logs -->對應的是mq運行及啓動等日誌目錄

mkdir -p /data/rocketmq/store/commitlog  /data/logs

②、替換rocketmq/conf/目錄下的*log.xml文件中的路徑

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

原始文件(一部份內容):

替換以後:

log目錄替換好了。

 

0.二、防火牆配置

最後要配置一下防火牆:

nameserver端口爲9876

broker端口爲10911

或者若是測試,能夠直接關掉防火牆。


(1)、啓動NameServer【master一、master2】

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

驗證nameserver是否啓動:

tail -f -n 500 /data/logs/rocketmqlogs/namesrv.log

另外一種啓動,

nohup sh /usr/local/rocketmq/bin/mqnamesrv >/var/log/ns.log &
驗證啓動:
tail -f /var/log/ns.log

(2)、啓動BrokerServer A【master1】

cd /usr/local/rocketmq/bin
nohup sh mqbroker -c ../conf/2m-noslave/broker-a.properties  >/dev/null 2>&1 &

最好用絕對路徑來執行:

nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &

驗證mqbroker是否啓動:

jps 查看進程

tail -f -n 500 /data/logs/rocketmqlogs/broker.log

 

另外一種啓動指定啓動日誌的,

nohup sh /usr/local/rocketmq/bin/mqbroker -c ../conf/2m-noslave/broker-a.properties >/var/log/mq.log &
校驗:
tail -f /var/log/mq.log

 

 (3)、啓動BrokerServer B【master2】

nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &

校驗:

tail -f -n 500 /data/logs/rocketmqlogs/broker.log

 

netstat -ntlp

 

 

jps

 

七、服務關閉

啓動兩臺機器的NameServer:先啓動兩臺機器的NameServer,再啓動兩臺機器的Borker,關機的時候順序相反,先關閉兩臺機器的Broker,再關閉兩臺機器的Nameserver。

7.一、關閉broker

7.1.一、直接關閉

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

7.1.二、優雅關閉broker

Broker重啓可能會致使正在發往這臺機器的的消息發送失敗,RocketMQ提供了一種優雅關閉Broker的方法,經過執行如下命令會清除Broker的寫權限,過40s後,全部客戶

端都會更新Broker路由信息,此時再關閉Broker就不會發生髮送消息失敗的狀況,由於全部消息都發往了其餘Broker。

格式以下:

sh mqadmin wipeWritePerm -b brokerName -n namesrvAddr

本broker對應的命令以下:

Master A:

sh mqadmin wipeWritePerm -b broker-a -n 192.168.100.193:9876

Master B:

sh mqadmin wipeWritePerm -b broker-b -n 192.168.100.194:9876

此時在關閉broker:

sh mqshutdown broker

 

7.二、關閉nameserver:

sh mqshutdown namesrv

 

--------------------------------------------------------------------------------------------

4、Rocketmq服務健康監控(根據本人實踐修正的,可用的監控)

--------------------------------------------------------------------------------------------

一、依賴組件安裝

yum -y install nmap

 

二、建立nameserver監控:(修改後的sh

vi /data/scripts/check_nameserver_health.sh
#!/bin/sh

SRV_PORT="9876"                    ## 端口號
SRV_PROT="tcp"                     ## 協議類型
SRV_NAME="rocketmq_nameserver"     ## 服務名
ETH1_ADDR="192.168.100.194"
PROT_OPT="S"

SCAN_FLAG=0


TMP_SRV_PROT=`echo ${SRV_PROT} | tr '[A-Z]' '[a-z]'`


for ((i=0; i<3; i++)); do
       RETVAL=`/usr/bin/nmap -n -s${PROT_OPT} -p ${SRV_PORT} ${ETH1_ADDR} | grep open`
       [[ -n "${RETVAL}" ]] && SCAN_FLAG=1;break || sleep 10
done

if [[ ${SCAN_FLAG} -ne 1 ]]; then
       [[ -n `ps aux | grep java | grep namesrv` ]] && kill -9 `ps aux | grep java | awk '/namesrv/{print $2}'`
       cd /usr/local/rocketmq/bin && nohup sh mqnamesrv &
fi

注意:】以上的變量:

ETH1_ADDR: 要根據部署的機器的ip修改。

 

三、brokerserver監控(修改後的sh

vi /data/scripts/check_brokerserver_health.sh

#!/bin/sh

SRV_PORT="10911" ## 端口號
SRV_PROT="tcp" ## 協議類型
SRV_NAME="rocketmq_brokerserver" ## 服務名
ETH1_ADDR="192.168.100.194" ## 服務器IP地址
PROT_OPT="S" ## 協議類型

## 是否已正確掃描
SCAN_FLAG=0

## 最多掃描3次,成功一次便可,以免網絡抖動而致使誤判
for ((i=0; i<3; i++)); do
RETVAL=`/usr/bin/nmap -n -s${PROT_OPT} -p ${SRV_PORT} ${ETH1_ADDR} | grep open`
[[ -n "${RETVAL}" ]] && SCAN_FLAG=1;break || sleep 10
done

if [[ ${SCAN_FLAG} -ne 1 ]]; then
[[ -n `ps aux | grep java | grep broker` ]] && kill -9 `ps aux | grep java | awk '/broker/{print $2}'`
cd /usr/local/rocketmq/bin && nohup sh mqbroker -c ../conf/2m-noslave/broker-b.properties &
fi

【注意】

i: 以上紅色標註部分,在master2上的名稱爲「broker-b.properties」

ii: ETH1_ADDR--》要根據所在服務器的ip來寫。

 

 

四、crontab信息添加(修正後的可用的cron

touch /var/run/check_rocketmq_nameserver.lock
touch /var/run/check_rocketmq_brokerserver.lock echo 'touch /var/run/check_rocketmq_nameserver.lock' >> /etc/rc.d/rc.local echo 'touch /var/run/check_rocketmq_brokerserver.lock' >> /etc/rc.d/rc.local crontab -e
## 文本編輯中點i輸入一下編輯
*/30 * * * * (flock --timeout=0 /var/run/check_rocketmq_nameserver.lock -c 'source /etc/profile;/bin/sh /data/scripts/check_nameserver_health.sh >>/var/log/check_rocketmq_nameserver.log')
*/15 * * * * (flock --timeout=0 /var/run/check_rocketmq_brokerserver.lock -c 'source /etc/profile;/bin/sh /data/scripts/check_brokerserver_health.sh >>/var/log/check_rocketmq_brokerserver.log')

 【注意:

出現問題,不要慌,要找到log,多試試。還出現了,tar包安裝jdk,顯示所屬的用戶組是個uucp,這個還不知道是什麼緣由致使的,最後我又設置了jdk目錄的所屬改爲了root。

問題1:直接在命令行執行:

flock --timeout=0 /var/run/check_rocketmq_nameserver.lock -c 'sh /data/scripts/check_nameserver_health.sh >>/var/log/check_rocketmq_nameserver.log'

能夠執行,可是cron任務則一直報錯誤:

這個錯誤來源於/rocketmq/bin/runserver.sh:

以此作出推斷,是在cron執行啓動腳本的時候,環境變量沒有讀取到JAVA_HOME。通過多方調查,須要再cron中添加環境須要的變量:

*/30 * * * * (flock --timeout=0 /var/run/check_rocketmq_nameserver.lock -c 'source /etc/profile;/bin/sh /data/scripts/check_nameserver_health.sh >>/var/log/check_rocketmq_nameserver.log')

解決: 

一、sh 命令改成 source /etc/profile;/bin/sh 便可解決。

二、設置JAVA_HOME

 

2.一、若是是tar包安裝的jdk,則只要/etc/profile中設置了JAVA_HOME便可。

2.二、若是是rpm安裝,則必須也要在/etc/profile中設置JAVA_HOME,cron任務才能正確執行

 

 

附:

一、cron命令能夠參考:

http://www.cnblogs.com/gmq-sh/p/6971588.html

 

二、linux使用flock文件鎖解決crontab衝突問題

使用linux flock 文件鎖實現任務鎖定,解決衝突

格式:

flock [-sxun][-w #] fd#

flock [-sxon][-w #] file [-c] command

選項

-s, --shared:    得到一個共享鎖  
-x, --exclusive: 得到一個獨佔鎖  
-u, --unlock:    移除一個鎖,一般是不須要的,腳本執行完會自動丟棄鎖  
-n, --nonblock:  若是沒有當即得到鎖,直接失敗而不是等待  
-w, --timeout:   若是沒有當即得到鎖,等待指定時間  
-o, --close:     在運行命令前關閉文件的描述符號。用於若是命令產生子進程時會不受鎖的管控  
-c, --command:   在shell中運行一個單獨的命令  
-h, --help       顯示幫助  
-V, --version:   顯示版本  

參考:http://blog.csdn.net/fdipzone/article/details/38284009

 

 

 

 

--------------------------------------------------------------------------------------------

5、Rocketmq服務健康監控(網上找的,不能直接用,太多bug,可用的請參考上面的,近供參考)

--------------------------------------------------------------------------------------------

一、依賴組件安裝

yum -y install nmap

 

二、nameserver監控

vi /data/scripts/check_nameserver_health.sh
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin SRV_PORT="9876" ## 端口號 SRV_PROT="tcp" ## 協議類型 SRV_NAME="rocketmq_nameserver" ## 服務名 ## 是否已正確掃描 SCAN_FLAG=0 for ETH_NAME in `/sbin/ifconfig | grep eth0 | awk '{print $1}'` do ETH1_ADDR=`/sbin/ifconfig ${ETH_NAME} | awk -F ':' '/inet addr/{print $2}' | sed 's/[a-zA-Z ]//g'` [[ -z "${ETH1_ADDR}" ]] && continue || break done TMP_SRV_PROT=`echo ${SRV_PROT} | tr '[A-Z]' '[a-z]'` if [[ "${TMP_SRV_PROT}" == "tcp" ]]; then PROT_OPT="S" elif [[ "${TMP_SRV_PROT}" == "udp" ]]; then PROT_OPT="U" else echo "未知的協議類型!" && exit1 fi ## 最多掃描3次,成功一次便可,以免網絡抖動而致使誤判 for ((i=0; i<3; i++)); do RETVAL=`/usr/bin/nmap -n -s${PROT_OPT} -p ${SRV_PORT} ${ETH1_ADDR} | grep open` [[ -n "${RETVAL}" ]] && SCAN_FLAG=1;break || sleep 10 done if [[ ${SCAN_FLAG} -ne 1 ]]; then [[ -n `ps aux | grep java | grep namesrv` ]] && kill -9 `ps aux | grep java | awk '/namesrv/{print $2}'` cd /usr/local/rocketmq/bin && nohup sh mqnamesrv & fi

 注意:

eth0--》要根據本身網卡來寫。

 

三、brokerserver監控

vi /data/scripts/check_brokerserver_health.sh
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin SRV_PORT="10911" ## 端口號 SRV_PROT="tcp" ## 協議類型 SRV_NAME="rocketmq_brokerserver" ## 服務名 ## 是否已正確掃描 SCAN_FLAG=0 for ETH_NAME in `/sbin/ifconfig | grep eth0 | awk '{print $1}'` do ETH1_ADDR=`/sbin/ifconfig ${ETH_NAME} | awk -F ':' '/inet addr/{print $2}' | sed 's/[a-zA-Z ]//g'` [[ -z "${ETH1_ADDR}" ]] && continue || break done TMP_SRV_PROT=`echo ${SRV_PROT} | tr '[A-Z]' '[a-z]'` if [[ "${TMP_SRV_PROT}" == "tcp" ]]; then PROT_OPT="S" elif [[ "${TMP_SRV_PROT}" == "udp" ]]; then PROT_OPT="U" else echo "未知的協議類型!" && exit1 fi ## 最多掃描3次,成功一次便可,以免網絡抖動而致使誤判 for ((i=0; i<3; i++)); do RETVAL=`/usr/bin/nmap -n -s${PROT_OPT} -p ${SRV_PORT} ${ETH1_ADDR} | grep open` [[ -n "${RETVAL}" ]] && SCAN_FLAG=1;break || sleep 10 done if [[ ${SCAN_FLAG} -ne 1 ]]; then [[ -n `ps aux | grep java | grep broker` ]] && kill -9 `ps aux | grep java | awk '/broker/{print $2}'` cd /usr/local/rocketmq/bin && nohup sh mqbroker -c ../conf/2m-noslave/broker-a.properties & fi

【注意】

i: 以上紅色標註部分,在master2上的名稱爲「broker-b.properties」

ii: eth0--》要根據本身網卡來寫。

 

四、crontab信息添加(有不少坑,具體請用下面新的信息添加

# touch /var/run/check_rocketmq_nameserver.lock
# touch /var/run/check_rocketmq_brokerserver.lock # echo 'touch /var/run/check_rocketmq_nameserver.lock' >> /etc/rc.d/rc.local # echo 'touch /var/run/check_rocketmq_brokerserver.lock' >> /etc/rc.d/rc.local # crontab -e */2 * * * * (flock --timeout=0 /var/run/check_rocketmq_nameserver.lock /data/scripts/check_nameserver_health.sh >/dev/null 2>&1) */2 * * * * (flock --timeout=0 /var/run/check_rocketmq_brokerserver.lock /data/scripts/check_brokerserver_health.sh >/dev/null 2>&1)

 

注意:

crontab -e

而後在vi編輯器裏輸入便可。

相關文章
相關標籤/搜索