centos7安装部署RocketMQ分布式集群

RocketMQ Broker集群模式

单Master模式:只有一台Master服务器,一旦Broker服务器重启或宕机整个集群不可用,通常不会使用该模式;

多Master模式(无Slave节点):一个集群无Slave服务器,全部都是Master服务器(例如有3台Master服务器),
优点:集群配置简单,单Master服务器重启或宕机对应用无影响,性能最高。可通过磁盘RAID阵列保证消息不丢失;
缺点:单台机器宕机期间,这台服务器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响;

多Master多Slave模式-异步复制:每台Master配置一台Slave服务器,HA采用异步复制方式,主备有短暂消息延迟,毫秒级;
优点:Master宕机后,消费者仍可以从Slave消费,此过程对应用透明,不需要人工干预;

多Master多Slave模式-同步双写:每台Master配置一台Slave服务器,HA采用同步双写方式,主备都写入成功才向应用返回成功;
优点:数据同步和服务都没有单点问题,Master宕机情况系消息无延迟,服务可用性和数据可用性非常高;
缺点:性能比异步复制低一些,大约低10%,发送单个消息的RT会略高。

本教程采用的是多Master模式(无Slave节点)的方式搭建集群;

安装RocketMQ

安装maven

安装rocketmq-console需要用maven进行编译,如果没有安装过maven需要安装maven并配置环境变量

# 下载maven安装包
cd /opt/
wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# 解压
tar xzf apache-maven-3.6.3-bin.tar.gz

# 配置环境变量
vim /etc/profile

export MAVEN_HOME=/opt/apache-maven-3.6.3
export PATH=$JAVA_HOME/bin:$PATH:$MAVEN_HOME/bin

# 生效环境变量
soruce /etc/profile
# 查看maven版本信息
mvn -v

安装RocketMQ

RocketMQ官网下载地址
RocketMQ集群部署官方文档

# 去官网下载好安装包或者直接使用wget下载
wget -c https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip

mkdir -p /usr/local/rocketmq
# 解压到指定目录
unzip rocketmq-all-4.7.1-bin-release.zip -d /usr/local/rocketmq
# 重命名解压目录
mv rocketmq-all-4.7.1-bin-release/ rocketmq-4.7.1

# 配置环境变量,增加RocketMQ NameServer地址
vim /etc/profile

export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-4.7.1
export PATH=$ROCKETMQ_HOME/bin:$PATH

# 生效环境变量
soruce /etc/profile

配置RocketMQ集群

RocketMQ支持单Master模式、多Master模式(无slave节点)、多Master多Slave模式-异步复制、多Master多Slave模式-同步双写 四种集群部署模式,由于服务器数量的问题,这里采用的是多Master模式;

  1. 修改集群配置文件
    我配置的是多Master模式(无slave节点)这里只列举了broker-a.properties文件的修改,broker-b.properties,broker-c.properties 这两个配置文件只需更改brokerName,其余配置与broker-a.properties 一样;
cd /usr/local/rocketmq/rocketmq-4.7.1/conf/2m-noslave

# 编辑集群配置文件
vim broker-a.properties

# 集群名,不同broker节点集群名是一样的
brokerClusterName=DefaultCluster
# broker名字,不同broker节点brokerName是唯一的
brokerName=broker-a
# 0表示Master,大于0表示 Slave
brokerId=0
#nameServer地址,多个用英文分号分割
namesrvAddr=10.0.27.132:9876;10.0.27.133:9876;10.0.27.134:9876
# 删除文件时间点,默认凌晨 4点
deleteWhen=04
# 文件保留时间,默认 48 小时
fileReservedTime=48
# 当前节点角色,ASYNC_MASTER=异步复制Master模式,SYNC_MASTER=同步双写Master模式
brokerRole=ASYNC_MASTER
# 刷盘模式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘
flushDiskType=ASYNC_FLUSH
# 数据存储路径
storePathRootDir=/home/rocketmq/store
# commitLog 存储路径
storePathCommitLog=/home/rocketmq/store/commitlog
# 消费队列存储路径存储路径
storePathConsumeQueue=/home/rocketmq/store/consumequeue
# 消息索引存储路径
storePathIndex=/home/rocketmq/store/index
# checkpoint 文件存储路径
storeCheckpoint=/home/rocketmq/store/checkpoint
# abort 文件存储路径
abortFile=/home/rocketmq/store/abort
# 是否允许 Broker 自动创建Topic,建议关闭
autoCreateTopicEnable=false
# 是否允许 Broker 自动创建订阅组,建议关闭
autoCreateSubscriptionGroup=false
# 设置brokerIP,如果不设置当服务器有很多网卡,默认会读取第一个网卡的IP地址(如安装docker后),会导致客户端无法连接
brokerIP1=10.0.27.132
# broker对外服务的监听端口,默认10911
listenPort=10911

注意事项:RocketMQ broker默认要求分配的内存不低于4G,根据实际服务器的性能可以有所调整,服务器内存充足的情况下可以忽略此步骤;

# 修改broker内存配置,将默认4G最低内存改为1G
vim /usr/local/rocketmq/rocketmq-4.7.1/bin/runbroker.sh

#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g"

# 修改runserver.sh,将默认2G最低内存改为1G
vim /usr/local/rocketmq/rocketmq-4.7.1/bin/runserver.sh

#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  1. 启动集群
cd /usr/local/rocketmq/rocketmq-4.7.1/bin
# 启动NameServer,NameServer需要先于Broker启动,且如果在生产环境使用,为了保证高可用,建议一般规模的集群启动3个NameServer
nohup sh mqnamesrv &
# 验证Name Server 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

# 启动Broker集群
# 在机器A,启动第一个Master broker,-c 参数指定broker配置文件地址
nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &
# 在机器B,启动第二个Master broker,-c 参数指定broker配置文件地址
nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties &
# 在机器C,启动第三个Master broker,-c 参数指定broker配置文件地址
nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-noslave/broker-c.properties &

# 查看集群状态
sh mqadmin clusterlist -n 10.0.27.132:9876;10.0.27.133:9876;10.0.27.134:9876

# 关闭服务的命令
sh mqshutdown broker
sh mqshutdown namesrv

安装管理控制台

cd /usr/local/rocketmq
# 下载源码
git clone https://github.com/apache/rocketmq-externals
# 修改配置文件,修改以下几个配置即可
vim /usr/local/rocketmq/rocketmq-externals/rocketmq-console/src/main/resources/application.properties

# 服务端口号
server.port=8081
# NameServer服务地址,多台服务器用英文分号分割
rocketmq.config.namesrvAddr=10.0.27.132:9876;10.0.27.133:9876;10.0.27.134:9876
# mq数据路径,可以自己修改
rocketmq.config.dataPath=/home/rocketmq/rocketmq-console/data


# maven编译
cd /usr/local/rocketmq/rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
# 运行rocketmq-console
# 该方式启动关闭服务器连接的时候同时也会关闭启动的进程,适用于测试的时候使用
java -jar target/rocketmq-console-ng-2.0.0.jar
# 该方式将java程序设置为后台运行,nohup表示不挂断运行,命令结尾的&表示在后台运行
# 0:stdin (standard input),1:stdout (standard output),2:stderr (standard error)
# 2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到console.log文件中
nohup java -jar target/rocketmq-console-ng-2.0.0.jar >console.log 2>&1 &

启动控制台后访问ip:8081(ip为控制台安装服务器的ip,端口号是配置文件中设置的)
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值