1、环境准备
(1)准备两台虚拟机,IP地址如下
192.168.225.116
192.168.225.117
(2)分别设置两台虚拟机主机名
vim /etc/hostname
192.168.225.116主机名设置为rocketmq1
192.168.225.117主机名设置为rocketmq2
(3)分别编辑两台虚拟机的hosts,主要时为了可以执行一键启动脚本
vim /etc/hosts
192.168.225.116和192.168.225.117都添加如下内容
192.168.225.116 rocketmq1
192.168.225.117 rocketmq2
(4)设置两台虚拟机可以相互ssh免密登录
分别在两台虚拟机上执行ssh-keygen,一路按回车键就可以
然后
在192.168.225.116虚拟机上依次执行ssh-copy-id 192.168.225.116,ssh-copy-id 192.168.225.117,然后输入yes,192.168.225.116、192.168.225.117的密码
在192.168.225.117虚拟机上依次执行ssh-copy-id 192.168.225.116,然后输入yes,192.168.225.116的密码
(5)jdk安装并配置环境变量
jdk安装方法参考这里
2、下载RocketMq
(1)下载
下载地址
(2)解压
将rocketmq-all-4.9.4-bin-release.zip上传到/opt目录下并解压
unzip rocketmq-all-4.9.4-bin-release.zip
mv rocketmq-all-4.9.4-bin-release rocketmq
(3)修改配置参数
在192.168.225.116编辑/opt/rocketmq/conf/2m-2s-async/broker-a.properties,添加如下内容
namesrvAddr=192.168.225.116:9876;192.168.225.117:9876
在192.168.225.116编辑/opt/rocketmq/conf/2m-2s-async/broker-b-s.properties,添加如下内容
namesrvAddr=192.168.225.116:9876;192.168.225.117:9876
listenPort=11911
storePathRootDir=~/store-s
storePathCommitLog=~/store-s/commitlog
storePathConsumeQueue=~/store-s/consumequeue
storePathIndex=~/store-s/index
storeCheckpoint=~/store-s/checkpoint
adortFile=~/store-s/abort
在192.168.225.117编辑/opt/rocketmq/conf/2m-2s-async/broker-b.properties,添加如下内容
namesrvAddr=192.168.225.116:9876;192.168.225.117:9876
在192.168.225.117编辑/opt/rocketmq/conf/2m-2s-async/broker-a-s.properties,添加如下内容
namesrvAddr=192.168.225.116:9876;192.168.225.117:9876
listenPort=11911
storePathRootDir=~/store-s
storePathCommitLog=~/store-s/commitlog
storePathConsumeQueue=~/store-s/consumequeue
storePathIndex=~/store-s/index
storeCheckpoint=~/store-s/checkpoint
adortFile=~/store-s/abort
3、安装RocketMq集群
手动启动集群:
首先分别启动192.168.225.116、192.168.225.117上的nameserver
nohup sh /opt/rocketmq/bin/mqnamesrv &
然后分别启动192.168.225.116、192.168.225.117上的master broker
192.168.225.116 :nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/2m-2s-async/broker-a.properties > /dev/null 2>&1 &
192.168.225.117:nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/2m-2s-async/broker-b.properties > /dev/null 2>&1 &
最后启动192.168.225.116、192.168.225.117上的slave broker
192.168.225.116:nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/2m-2s-async/broker-b-s.properties > /dev/null 2>&1 &
192.168.225.117:nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/2m-2s-async/broker-a-s.properties > /dev/null 2>&1 &
检查rocketMq两主两从集群是否启动成功
jps
关闭192.168.225.116和192.168.225.117的broker
nohup /opt/rocketmq/bin/mqshutdown broker &
关闭192.168.225.116和192.168.225.117的nameserver
nohup /opt/rocketmq/bin/mqshutdown namesrv
一键脚本启动集群:
在/root/bin目录下便编辑rocketmq-cluster.sh脚本
#!/bin/bash
case $1 in
"start") {
for i in 192.168.225.116 192.168.225.117
do
echo -----------------$i rocketMq mqnamesrv 启动-----------------
ssh $i "export JAVA_HOME=/usr/local/src/jdk1.8.0_251;nohup sh /opt/rocketmq/bin/mqnamesrv > /dev/null 2>&1 &"
done
sleep 10;
for j in 192.168.225.116 192.168.225.117
do
if [ $j = 192.168.225.116 ]
then
echo -----------------$j rocketMq broker master 启动-----------------
ssh $j "export JAVA_HOME=/usr/local/src/jdk1.8.0_251;nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/2m-2s-async/broker-a.properties > /dev/null 2>&1 &"
elif [ $j = 192.168.225.117 ]
then
echo -----------------$j rocketMq broker master 启动-----------------
ssh $j "export JAVA_HOME=/usr/local/src/jdk1.8.0_251;nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/2m-2s-async/broker-b.properties > /dev/null 2>&1 &"
fi
done
for k in 192.168.225.116 192.168.225.117
do
if [ $k = 192.168.225.116 ]
then
echo -----------------$k rocketMq broker slave 启动-----------------
ssh $k "export JAVA_HOME=/usr/local/src/jdk1.8.0_251;nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/2m-2s-async/broker-b-s.properties > /dev/null 2>&1 &"
elif [ $k = 192.168.225.117 ]
then
echo -----------------$k rocketMq broker slave 启动-----------------
ssh $k "export JAVA_HOME=/usr/local/src/jdk1.8.0_251;nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/2m-2s-async/broker-a-s.properties > /dev/null 2>&1 &"
fi
done
};;
"stop") {
for k in 192.168.225.116 192.168.225.117
do
echo -----------------$k rocketMq broker 关闭-----------------
ssh $k "export JAVA_HOME=/usr/local/src/jdk1.8.0_251;nohup /opt/rocketmq/bin/mqshutdown broker &"
done
sleep 10
for i in 192.168.225.116 192.168.225.117
do
echo -----------------$i rocketMq mqnamesrv 关闭-----------------
ssh $i "export JAVA_HOME=/usr/local/src/jdk1.8.0_251;nohup /opt/rocketmq/bin/mqshutdown namesrv &"
done
};;
esac
一键启动集群和关闭集群: