Rocketmq分布式消息隊列的部署與監控(雙master)

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

一、Rocketmq簡介:

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

RocketMQ是一款分布式、隊列模型的消息中間件,具有以下特點:

1、支持嚴格的消息順序;

2、支持Topic與Queue兩種模式;

3、億級消息堆積能力;

4、比較友好的分布式特性;

5、同時支持Push與Pull方式消費消息;

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

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

二、服務器分布:

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

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

IP地址主機名機型角色架構模式

192.168.100.193rocketmq-master120Gnameserver、brokerserverMaster1(雙Master模式)

192.168.100.194rocketmq-master220Gnameserver、brokerserverMaster2(雙Master模式)

2、hosts信息添加

vi/etc/hosts

增加以下:

192.168.100.193rocketmq-master1192.168.100.194rocketmq-master2192.168.100.193mqnameserver1192.168.100.194mqnameserver2

3、系統環境

CentOS 6.3

4、總體架構

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

三、Rocketmq安裝與配置

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

1、JDK安裝:

tar包解壓,然后在/etc/profile中加入如下的環境變量:

生效:source /etc/profile

具體可以參考我的另一篇博客:http://www.cnblogs.com/gmq-sh/p/4328843.html

2、RocketMq安裝

下載rocketmq的release版:

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

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

執行一下命令:

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

ll/usr/local

(

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

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

mvalibaba-rocketmq alibaba-rocketmq-3.2.6

修改名字。

建立軟連接:

ln-s alibaba-rocketmq-3.2.6rocketmq

)

3、環境變量設置(其中ROCKETMQ_HOME是否需要設置,待觀察,目前設置與否都可以,因為暫時未在其他地方用到

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

vi /etc/profile

3.1、如果是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

exportROCKETMQ_HOME=/usr/local/rocketmq

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

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

3.2、如果是rpm安裝,則需要配置JAVA_HOME

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

生效:

source /etc/profile

進入rocketmq的bin目錄:

cd /usr/local/rocketmq/bin

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

執行 os.sh的系統優化,原始的sh文件需要修改,不然會導致出問題:

-- shos.sh -- 未找到錯誤原因,先不要執行這個命令

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

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

4、主機名設置

(1)、Master1服務器

vi/etc/hosts

如下:

192.168.100.193rocketmq-master1192.168.100.194rocketmq-master2192.168.100.193mqnameserver1192.168.100.194mqnameserver2

網絡:

vi/etc/sysconfig/network

修改成如下:

sed-i'/HOSTNAME/d'/etc/sysconfig/networkecho'HOSTNAME=rocketmq-master1'>> /etc/sysconfig/networkhostnamerocketmq-master1

效果如下:

(2)、Master2服務器

vi/etc/hosts192.168.100.193rocketmq-master1192.168.100.194rocketmq-master2192.168.100.193mqnameserver1192.168.100.194mqnameserver2sed-i'/HOSTNAME/d'/etc/sysconfig/networkecho'HOSTNAME=rocketmq-master2'>> /etc/sysconfig/networkhostnamerocketmq-master2

5、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 主從同步雙寫

#SLAVESlave

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 主從同步雙寫

#SLAVESlave

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"

6、服務啟動

(啟動兩臺機器的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.2、防火墻配置

最后要配置一下防火墻:

nameserver端口為9876

broker端口為10911

或者如果測試,可以直接關掉防火墻。

(1)、啟動NameServer【master1、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

nohupshmqbroker -c ../conf/2m-noslave/broker-a.properties? >/dev/null2>&1&

最好用絕對路徑來執行:

nohupsh/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 -n500/data/logs/rocketmqlogs/broker.log

netstat -ntlp

jps

7、服務關閉

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

7.1、關閉broker

7.1.1、直接關閉

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

7.1.2、優雅關閉broker

Broker重啟可能會導致正在發往這臺機器的的消息發送失敗,RocketMQ提供了一種優雅關閉Broker的方法,通過執行以下命令會清除Broker的寫權限,過40s后,所有客戶

端都會更新Broker路由信息,此時再關閉Broker就不會發生發送消息失敗的情況,因為所有消息都發往了其他Broker。

格式如下:

sh mqadmin wipeWritePerm -b brokerName -n namesrvAddr

本broker對應的命令如下:

Master A:

sh mqadmin wipeWritePerm -bbroker-a-n 192.168.100.193:9876

Master B:

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

此時在關閉broker:

sh mqshutdown broker

7.2、關閉nameserver:

sh mqshutdown namesrv

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

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

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

1、依賴組件安裝

yum -y install nmap

2、創建nameserver監控:(修改后的sh

vi /data/scripts/check_nameserver_health.sh

#!/bin/shSRV_PORT="9876"## 端口號

SRV_PROT="tcp"## 協議類型

SRV_NAME="rocketmq_nameserver"## 服務名ETH1_ADDR="192.168.100.194"PROT_OPT="S"SCAN_FLAG=0TMP_SRV_PROT=`echo${SRV_PROT} |tr'[A-Z]''[a-z]'`for((i=0; i<3; i++));doRETVAL=`/usr/bin/nmap -n -s${PROT_OPT} -p ${SRV_PORT} ${ETH1_ADDR} |grepopen`

[[-n"${RETVAL}"]] && SCAN_FLAG=1;break ||sleep10doneif[[ ${SCAN_FLAG} -ne1]];then[[-n `psaux |grepjava |grepnamesrv` ]] &&kill-9`psaux |grepjava |awk'/namesrv/{print $2}'`

cd/usr/local/rocketmq/bin && nohupshmqnamesrv &fi




注意:】以上的變量:

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

3、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來寫。

4、crontab信息添加(修正后的可用的cron

touch /var/run/check_rocketmq_nameserver.locktouch /var/run/check_rocketmq_brokerserver.lockecho 'touch /var/run/check_rocketmq_nameserver.lock' >> /etc/rc.d/rc.localecho 'touch /var/run/check_rocketmq_brokerserver.lock' >> /etc/rc.d/rc.localcrontab -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')

解決:

1、sh 命令改為source /etc/profile;/bin/sh即可解決。

2、設置JAVA_HOME

2.1、如果是tar包安裝的jdk,則只要/etc/profile中設置了JAVA_HOME即可。

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

附:

1、cron命令可以參考:

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

2、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

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

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

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

1、依賴組件安裝

yum -y install nmap

2、nameserver監控

vi /data/scripts/check_nameserver_health.sh

#!/bin/shPATH=/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}'`doETH1_ADDR=`/sbin/ifconfig ${ETH_NAME} | awk -F ':' '/inet addr/{print $2}' | sed 's/[a-zA-Z ]//g'`? ? ? [[ -z "${ETH1_ADDR}" ]] && continue ||breakdoneTMP_SRV_PROT=`echo ${SRV_PROT} | tr '[A-Z]' '[a-z]'`? if [[ "${TMP_SRV_PROT}" == "tcp" ]]; thenPROT_OPT="S"elif [[ "${TMP_SRV_PROT}" == "udp" ]]; thenPROT_OPT="U"else? ? ? echo "未知的協議類型!" &&exit1fi## 最多掃描3次,成功一次即可,以避免網絡抖動而導致誤判for ((i=0; i<3; i++)); doRETVAL=`/usr/bin/nmap -n -s${PROT_OPT} -p ${SRV_PORT} ${ETH1_ADDR} | grepopen`? ? ? [[ -n "${RETVAL}" ]] && SCAN_FLAG=1;break || sleep 10done? 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--》要根據自己網卡來寫。

3、brokerserver監控

vi /data/scripts/check_brokerserver_health.sh

#!/bin/shPATH=/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}'`doETH1_ADDR=`/sbin/ifconfig ${ETH_NAME} | awk -F ':' '/inet addr/{print $2}' | sed 's/[a-zA-Z ]//g'`? ? ? [[ -z "${ETH1_ADDR}" ]] && continue ||breakdoneTMP_SRV_PROT=`echo ${SRV_PROT} | tr '[A-Z]' '[a-z]'`? if [[ "${TMP_SRV_PROT}" == "tcp" ]]; thenPROT_OPT="S"elif [[ "${TMP_SRV_PROT}" == "udp" ]]; thenPROT_OPT="U"else? ? ? echo "未知的協議類型!" &&exit1fi## 最多掃描3次,成功一次即可,以避免網絡抖動而導致誤判for ((i=0; i<3; i++)); doRETVAL=`/usr/bin/nmap -n -s${PROT_OPT} -p ${SRV_PORT} ${ETH1_ADDR} | grepopen`? ? ? [[ -n "${RETVAL}" ]] && SCAN_FLAG=1;break || sleep 10done? 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--》要根據自己網卡來寫。

4、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編輯器里輸入即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容