centos7安装部署RocketMQ分布式集群

it2023-02-19  81

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模式;

修改集群配置文件 我配置的是多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" 启动集群 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)