CentOS6u9 RocketMQ 3.2.6 双NS 双M 无S 集群搭建

版权声明:本文为原创文章,转载请标明出处。 https://blog.csdn.net/zwjzqqb/article/details/81204990

简单说明:

本篇博文是两年前生产RocketMQ集群搭建方案的整理,目前3.2.6版本包已经无法下载
集群由两个NameServer和两个MasterBrokerServer组成,无Slave,是最简单的集群方案
依据《CentOS6实验机模板搭建部署》克隆四台实验机,主机名、IP和资源分配如下:

      IP          HOSTNAME   MEM
--------------- ----------- -----
 192.168.77.11      ns1       4G
 192.168.77.12      ns2       4G
 192.168.77.13      bs1      10G
 192.168.77.14      bs2      10G

主机部署:

四台主机均部署安装jdk1.8和RocketMQ3.2.6

# 配置主机名和hosts文件
hostname ns1
# hostname ns2
# hostname bs1
# hostname bs2
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
cat >>/etc/hosts<<EOF
192.168.77.11 ns1 # NameServer1
192.168.77.12 ns2 # NameServer1
192.168.77.13 bs1 # BrokerServer1
192.168.77.14 bs2 # BrokerServer2
EOF
sed -i "s/^HOSTNAME.*$/HOSTNAME=$(hostname)/g" /etc/sysconfig/network

# 安装配置jdk1.8
mkdir -pv /usr/local/java
cd /usr/local/java
tar -xf /tmp/jdk-8u172-linux-x64.tar.gz
chown -R root: .
cd /usr/local
ln -s java/jdk1.8.0_172 jdk
echo 'export JAVA_HOME=/usr/local/jdk'>>/etc/profile
echo 'export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib'>>/etc/profile
echo 'export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH'>>/etc/profile
source /etc/profile
java -version

# 安装配置RocketMQ
mkdir -pv /usr/local/RocketMQ
cd /usr/local/RocketMQ
unzip /tmp/alibaba-rocketmq-3.2.6.zip
cd /usr/local/
ln -s RocketMQ/alibaba-rocketmq-3.2.6 rocketmq
echo 'export ROCKETMQ_HOME=/usr/local/rocketmq'>>/etc/profile
echo 'export PATH=$PATH:$ROCKETMQ_HOME/bin'>>/etc/profile
source /etc/profile

NameServer配置启动:

ns1和ns2主机操作配置:

# 创建数据目录和日志目录
mkdir -pv /data/rocketmq/store/commitlog
mkdir -pv /data/logs

# 修改配置logback配置家目录
cd $ROCKETMQ_HOME/conf
sed -i 's#${user.home}#/data#g' *.xml

# 修改NameServer服务占用内存
cd $ROCKETMQ_HOME/bin
sed -i 's/-Xms4g/-Xms3g/g' runserver.sh
sed -i 's/-Xmx4g/-Xmx3g/g' runserver.sh
# jdk8之后不再支持PermSize和MaxPermSize参数
sed -i 's/ -XX:PermSize=128m -XX:MaxPermSize=320m//g' runserver.sh

# 启动测试
sh mqnamesrv &
# The Name Server boot success.
netstat -tupln|grep 9876
ps -ef|grep java
jps -m
# XXXX NamesrvStartup
# XXXX Jps -m

# 使用命令关闭NameServer,不能直接kill
sh mqshutdown namesrv
netstat -tupln|grep 9876
ps -ef|grep java
jps -m

# 配置开机自动启动
echo '# RocketMQ 3.2.6 NameServer start and stop'>>/etc/rc.local
echo 'source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqnamesrv &'>>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown namesrv'>>/etc/rc.local

BrokerServer配置启动:

bs1和bs2主机操作配置:

# 创建数据目录和日志目录
mkdir -pv /data/rocketmq/store/commitlog
mkdir -pv /data/logs

# 修改初始化配置脚本中的vm.min_free_kbytes参数
cd $ROCKETMQ_HOME/bin
MEM_MIN_FREE_KB=$(grep 'MemTotal' /proc/meminfo |awk '{printf ("%d\n",$2*0.1)}')
sed -i "s/vm.min_free_kbytes=5000000/vm.min_free_kbytes=${MEM_MIN_FREE_KB}/g" os.sh
# 参数vm.min_free_kbytes控制linux预留的空闲内存大小
# 会根据该设置和剩余的空闲内存强制触发OOM
# 根据broker主机实际内存大小进行设置,预留10%的空间即可

# 初始化BrokerServer主机配置,只需要执行一次,只能在BrokerServer主机上执行
sh os.sh

# 修改BrokerServer服务占用内存
cd $ROCKETMQ_HOME/bin
sed -i 's/-Xms4g/-Xms9g/g' runbroker.sh
sed -i 's/-Xmx4g/-Xmx9g/g' runbroker.sh
# jdk8之后不再支持PermSize和MaxPermSize参数
sed -i 's/ -XX:PermSize=128m -XX:MaxPermSize=320m//g' runbroker.sh

# 创建BrokerServer服务配置文件
cd $ROCKETMQ_HOME/conf/2m-noslave
cat >broker.properties<<EOF
brokerClusterName=Vincent2NS2Mcluster
brokerName=$(hostname)
brokerId=0
# 值0代表MasterBroker
namesrvAddr=ns1:9876;ns2:9876
# 添加两个nameserver的主机名和端口,分号分隔
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911
# 配置broker的监听端口
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
EOF

# 启动测试
sh mqbroker -c$ROCKETMQ_HOME/conf/2m-noslave/broker.properties &
# Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
# load config properties file OK, /usr/local/rocketmq/conf/2m-noslave/broker.properties
# The broker[bs1, 192.168.77.13:10911] boot success. and name server is ns1:9876;ns2:9876
netstat -tupln|grep 10911
ps -ef|grep java
jps -m
# XXXX BrokerStartup -c/usr/local/rocketmq/conf/2m-noslave/broker.properties
# XXXX Jps -m

# 使用命令关闭BrokerServer,不能直接kill
sh mqshutdown broker
netstat -tupln|grep 10911
ps -ef|grep java
jps -m

# 配置开机自动启动
echo '# RocketMQ 3.2.6 BrokerServer start and stop'>>/etc/rc.local
echo 'source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqbroker -c$ROCKETMQ_HOME/conf/2m-noslave/broker.properties &'>>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown broker'>>/etc/rc.local

集群启停:

1° 集群启动:

# 所有BrokerServer启动:
source /etc/profile
sh ${ROCKETMQ_HOME}/bin/mqbroker -c$ROCKETMQ_HOME/conf/2m-noslave/broker.properties &
# 所有NameServer启动:
source /etc/profile
sh ${ROCKETMQ_HOME}/bin/mqnamesrv &

2° 集群停止:

# 所有NameServer停止:
source /etc/profile
sh ${ROCKETMQ_HOME}/bin/mqshutdown namesrv
# 所有BrokerServer停止:
source /etc/profile
sh ${ROCKETMQ_HOME}/bin/mqshutdown broker

[TOC]

猜你喜欢

转载自blog.csdn.net/zwjzqqb/article/details/81204990