Ò»¡¢RocketMQ¼ò½é
RocketMQÊÇÒ»¿î·Ö²¼Ê½¡¢¶ÓÁÐÄ£Ð͵ÄÏûÏ¢Öмä¼þ£¬¾ßÓÐÒÔÏÂÌØµã£º
1¡¢Ö§³ÖÑϸñµÄÏûϢ˳Ðò£»
2¡¢Ö§³ÖTopicÓëQueueÁ½ÖÖģʽ£»
3¡¢ÒÚ¼¶ÏûÏ¢¶Ñ»ýÄÜÁ¦£»
4¡¢±È½ÏÓѺõķֲ¼Ê½ÌØÐÔ£»
5¡¢Í¬Ê±Ö§³ÖPushÓëPull·½Ê½Ïû·ÑÏûÏ¢£»
±¾ÎIJÉÓÃË«MasterµÄ¼Ü¹¹Ä£Ê½¡£
¶þ¡¢·þÎñÆ÷·Ö²¼
1¡¢Ïà¹ØËµÃ÷

2¡¢hostsÐÅÏ¢Ìí¼Ó
# vim /etc/hosts 10.217.121.123 mqnameserver1 10.217.122.31 mqnameserver2 10.217.121.123 rocketmq-master1 10.217.122.31 rocketmq-master2
|
3¡¢ÏµÍ³»·¾³
CentOS 6.30
4¡¢×ÜÌå¼Ü¹¹
wKioL1PuQE3DcTjUAAE4E08WEfw644.jpg
Èý¡¢RocketMQ°²×°ÓëÅäÖÃ
1¡¢JDK°²×°
http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz # tar xvzf jdk-7u65-linux-x64.gz -C /usr/local # rm -f jdk-7u65-linux-x64.gz # cd /usr/local && ln -s jdk1.7.0_65 jdk # cd /usr/local/bin && ln -s /usr/local/jdk/bin/java
|
2¡¢RocketMQ°²×°
https://github.com/alibaba/RocketMQ/releases # tar xvzf alibaba-rocketmq-3.1.7.tar.gz -C /usr/local # mv alibaba-rocketmq alibaba-rocketmq-3.1.7 # ln -s alibaba-rocketmq-3.1.7 rocketmq # rm alibaba-rocketmq-3.1.7.tar.gz # ll /usr/local
|
3¡¢»·¾³±äÁ¿ÉèÖÃ
# vim /etc/profile
export PATH=$PATH:/usr/local/bin
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export ROCKETMQ_HOME=/usr/local/rocketmq
export PATH=$PATH::$ROCKETMQ_HOME/bin
# source /etc/profile
# cd /usr/local/rocketmq/bin && sh os.sh
¡· |
4¡¢Ö÷»úÃûÉèÖÃ
(1)¡¢Master1·þÎñÆ÷
# vim /etc/hosts
10.217.121.123 mqnameserver1
10.217.122.31 mqnameserver2
10.217.121.123 rocketmq-master1
10.217.122.31 rocketmq-master2
# sed -i '/HOSTNAME/d' /etc/sysconfig/network
# echo 'HOSTNAME=rocketmq-master1' >> /etc/sysconfig/network
# hostname rocketmq-master1
|
(2)¡¢Master2·þÎñÆ÷
# vim /etc/hosts
10.217.121.123 mqnameserver1
10.217.122.31 mqnameserver2
10.217.121.123 rocketmq-master1
10.217.122.31 rocketmq-master2
# sed -i '/HOSTNAME/d' /etc/sysconfig/network
# echo 'HOSTNAME=rocketmq-master2' >> /etc/sysconfig/network
# hostname rocketmq-master2
|
5¡¢RocketMQÅäÖÃ
(1)¡¢Master1·þÎñÆ÷
# vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
brokerClusterName=AdpMqCluster
brokerName=broker-a
brokerId=0
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88
storePathRootDir=/data/rocketmq/store
storePathCommitLog=/data/rocketmq/store/commitlog
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
|
(2)¡¢Master2·þÎñÆ÷
# vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
brokerClusterName=AdpMqCluster
brokerName=broker-b
brokerId=1
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88
storePathRootDir=/data/rocketmq/store
storePathCommitLog=/data/rocketmq/store/commitlog
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
|
(3)¡¢runbroker.sh²ÎÊýµ÷Õû
runbroker.shÐèÒª¸ù¾ÝÄÚ´æ´óС½øÐÐÊʵ±µØµ÷Õû
JAVA_OPT_1="-server-Xms80g -Xmx80g -Xmn20g -XX:PermSize=1g -XX:MaxPermSize=1g" |
6¡¢·þÎñÆô¶¯
# mkdir -p /data/rocketmq/store/commitlog /data/logs # cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/data#g' *.xml
|
(1)¡¢Æô¶¯NameServer¡¾master1¡¢master2¡¿
# cd /usr/local/rocketmq/bin # nohup sh mqnamesrv &
|
(2)¡¢Æô¶¯BrokerServer A¡¾master1¡¿
# cd /usr/local/rocketmq/bin # nohup sh mqbro ker -c ../conf/2m-noslave/broker-a.properties >/dev/null 2>&1 & |
(3)¡¢Æô¶¯BrokerServer B¡¾master2¡¿
# cd /usr/local/rocketmq/bin
# nohup sh mqbroker -c ../conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
# netstat -ntlp
# jps
|
ËÄ¡¢RocketMQ·þÎñ½¡¿µ¼à¿Ø
1¡¢ÒÀÀµ×é¼þ°²×°
2¡¢nameserver¼à¿Ø
# vim /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 eth1 | 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 |
3¡¢brokerserver¼à¿Ø
# vim /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 eth1 | 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 |
ÒÔÉϺìÉ«±ê×¢²¿·Ö£¬ÔÚmaster2ÉϵÄÃû³ÆÎª¡°broker-b.properties¡±
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)
|
|