rocketMQ在linux上的集群部署
2025-02-23 13:42:32 0 举报
AI智能生成
通过分发方式,实现linux上rocketMQ的集群部署,避免服务器之间的切换
作者其他创作
大纲/内容
linux环境准备
查询每台节点服务器ip
ifconfig
查询或修改每台节点服务器主机名称(若甲方要求不能修改,则记住主机名称)
vim /etc/hostname
rocket-broker1
rocket-broker2
...
rocket-brokerN
修改每台节点主机映射
vim /etc/hosts
ip1 主机名1
ip2 主机名2
...
ipN 主机名N
ip2 主机名2
...
ipN 主机名N
重启所有节点服务器
在任意一台服务器编写分发脚本
vim /bin/xsync
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in 主机名1 主机名2 主机名N
do
echo ======================== $host ========================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file dose not exists!
fi
done
done
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in 主机名1 主机名2 主机名N
do
echo ======================== $host ========================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file dose not exists!
fi
done
done
修改分发脚本权限
chmod 777 xsync
每台服务器配置SSH无密登录,用于分发文件时,免去输入密码的步骤
生产rsa密钥
ssh-keygen -t rsa
三次回车
将公钥拷贝到目标机器
ssh-copy-id 主机名称1
yes,回车
输入密码,回车
jdk安装
在分发脚本的那台服务器,安装jdk
安装jdk8及以上,根据实际情况来确定
建议擦除linux默认的jdk
rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
下载jdk,linux-x64_bin.tar.gz版本
上传到/opt/software
xshell支持直接拖进去,或者用xftp进行传输
mkdir /bin/software
解压
cd /opt/software
mkdir /opt/module
tar -zxvf jdk压缩包名称 -C /opt/module
配置环境变量
vim /etc/profile.d/my_env.sh
添加内容
#JAVA_HOME
export JAVA_HOME=/opt/module/解压后的JDK文件夹名称
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME=/opt/module/解压后的JDK文件夹名称
export PATH=$PATH:$JAVA_HOME/bin
使配置生效
source /etc/profile.d/my_env.sh
检查是否成功
java -version
分发环境变量和安装包
分发环境变量配置文件
xsync /etc/profile.d/my_env.sh
分发JDK安装包
xsync /opt/module/解压后的JDK文件夹名称
在每台节点服务器执行刷新环境变量配置文件
source /etc/profile.d/my_env.sh
安装RocketMQ
在分发脚本的服务器,安装MQ
将rocketmq-all-X.X.X-bin-release.zip上传到/opt/software
解压
cd /opt/software
unzip 压缩包文件名 -d /opt/module
调整JVM内存
cd /opt/module/安装包名
vim bin/runserver.sh
如图调整
vim bin/runbroker.sh
如图调整
安装可视化工具
官网下载rocketmq-dashboard-x.x.x-source-release
然后在自己电脑上解压
执行mvn clean package -Dmaven.test.skip=true
如果提示test.skip命令异常,可以改成mvn clean package "-Dmaven.test.skip=true"
如果提示yarn install失败,可以尝试将pom.xml中的frontend-maven-plugin和maven-antrun-plugin插件注释掉
mkdir /opt/module/rocketmq安装包名/dashboard
并将打包jar上传至此
并将打包jar上传至此
mkdir config
并将dashboard程序的application.yml上传
并将dashboard程序的application.yml上传
vim config/application.yml
根据需要修改配置,例如端口号(默认8080)、集群配置(ip和端口)等
根据需要修改配置,例如端口号(默认8080)、集群配置(ip和端口)等
执行java -jar rocketmq-dashboard-2.0.0.jar 1>dashboard.log 2>&1 &
jps,查看是否已启动
开通端口(多节点直接需要开通端口)
firewall-cmd --zone=public --add-port=9876/tcp --add-port=10911/tcp --add-port=10909/tcp --add-port=11009/tcp --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
查看开通了哪些端口
查看开通了哪些端口
systemctl stop firewalld
临时关闭防火墙
临时关闭防火墙
分发rocketmq
/bin/xsync /opt/module/rocketmq安装包名称
普通集群(一般使用这种):
根据事先指定的规范,N个namesvr,M个master-broker,P个slave-broker,来配置文件
配置文件在conf文件夹下(-s是从节点配置,没有-s的是主节点)
一台服务器,一个主节点,多个其他主节点的从节点
可用性较差,但是性能较高
根据事先指定的规范,N个namesvr,M个master-broker,P个slave-broker,来配置文件
配置文件在conf文件夹下(-s是从节点配置,没有-s的是主节点)
一台服务器,一个主节点,多个其他主节点的从节点
可用性较差,但是性能较高
brokerClusterName:集群名称必须全都一致
brokerName:主和对应的从,必须一致,不同的主之间必须不一致
brokerId:必须唯一,且等于0的是master节点,大于0是slave节点
namesrvAddr:hostname1:9876;hostname2:9876;hostname3:9876
storePathRootDir=/opt/module/rocketmq-all-5.3.1-bin-release/store
storePathCommitLog=/opt/module/rocketmq-all-5.3.1-bin-release/commitLog
storePathConsumeQueue=/opt/module/rocketmq-all-5.3.1-bin-release/consumequeue
storePathIndex=/opt/module/rocketmq-all-5.3.1-bin-release/index
storeCheckpoint=/opt/module/rocketmq-all-5.3.1-bin-release/checkpoint
abortFile=/opt/module/rocketmq-all-5.3.1-bin-release/abort
storePathCommitLog=/opt/module/rocketmq-all-5.3.1-bin-release/commitLog
storePathConsumeQueue=/opt/module/rocketmq-all-5.3.1-bin-release/consumequeue
storePathIndex=/opt/module/rocketmq-all-5.3.1-bin-release/index
storeCheckpoint=/opt/module/rocketmq-all-5.3.1-bin-release/checkpoint
abortFile=/opt/module/rocketmq-all-5.3.1-bin-release/abort
listenPort:10911
DLedger高可用集群:
一台服务器,一个节点,要求至少半数以上存活才能用,主节点挂了会自动选举
性能相对较差,但是可用性较高
一台服务器,一个节点,要求至少半数以上存活才能用,主节点挂了会自动选举
性能相对较差,但是可用性较高
brokerClusterName=hxcRaftCluster
brokerName=raft-node-a
listenPort=30911
namesrvAddr=hxc-01:9876;hxc-02:9876;hxc-04:9876
storePathRootDir=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger
storePathCommitLog=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/commitlog
storePathConsumeQueue=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/consumequeue
storePathIndex=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/index
storeCheckpoint=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/checkpoint
abortFile=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/abort
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-hxc-01:40911;n1-hxc-02:40911;n2-hxc-04:40911
#唯一键,其他不用改
dLegerSelfId=n0
sendMessageThreadPoolNums=16
brokerName=raft-node-a
listenPort=30911
namesrvAddr=hxc-01:9876;hxc-02:9876;hxc-04:9876
storePathRootDir=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger
storePathCommitLog=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/commitlog
storePathConsumeQueue=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/consumequeue
storePathIndex=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/index
storeCheckpoint=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/checkpoint
abortFile=/opt/module/rocketmq-all-5.3.1-bin-release/storeDledger/abort
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-hxc-01:40911;n1-hxc-02:40911;n2-hxc-04:40911
#唯一键,其他不用改
dLegerSelfId=n0
sendMessageThreadPoolNums=16
启动、关闭
启动
nohup bin/mqnamesrv &
nohup bin/mqbroker -c ./conf/2m-2s-async/broker-a.properties &
nohup bin/mqbroker -c ./conf/dledger/broker.conf &
这里需要指定broker节点的配置文件,最好这样启动,否则可能造成配置文件没读到的问题
nohup bin/mqbroker -c ./conf/dledger/broker.conf &
这里需要指定broker节点的配置文件,最好这样启动,否则可能造成配置文件没读到的问题
cd /opt/module/rocketmq安装包名称
关闭
bin/mqshutdown broker
bin/mqshutdown namesrv

收藏
0 条评论
下一页