RocketMQ4.7.1集群搭建

rocketMQ 4.7.1 安装过程(2主2从同步)

安装环境

CentOS 7.5+

JDK 1.8+

服务器规划

机器A broker-a(Master) + NameServer

机器B broker-a(Slaver) + NameServer

机器C broker-b(Master) + NameServer

机器D broker-b(Slaver) + NameServer

步骤

如下操作如果没有特殊说明分别在4台机器上都进⾏相同操作

1.在每台机器安装JDK环境

在4台机器上分别安装jdk1.8,配置基础环境

  1. 将jdk-8u161-linux-x64.tar.gz安装包上传至服务器,下载地址:

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

  1. 解压(如果权限不足需要root权限)

sudo tar zxvf jdk-8u161-linux-x64.tar.gz -C /opt/jdk1.8.0_161

  1. 配置变量

1)单用户变量

cd

vim .bashrc

export JAVA_HOME=/opt/jdk1.8.0_161/

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

source .bashrc

2)全局变量

sudo vim /etc/profile

export JAVA_HOME=/opt/jdk1.8.0_161/

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

sudo source /etc/profile

openjdk环境变量配置:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64

export JRE_HOME=$JAVA_HOME/jre

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

2.root⽤户下创建应⽤⽤户

在每台机器上创建运⾏rocketMQ的⽤户rmq

useradd rmq

passwd rmq

密码:umpay2010

3.使⽤应⽤⽤户进⾏操作rmq

后续所有操作(除配置环境变量外)使⽤新创建的⽤户执⾏

mkdir -pv /opt/app/rmq

chown rmq:rmq /opt/app/rmq -R

上传rocketMQ安装包到4台服务器并解压⾄/opt/app/rmq

su rmq

cd

unzip rocketmq-all-4.7.1-bin-release.zip -d /opt/app/rmq/

mv /opt/app/rmq/rocketmq-all-4.7.1-bin-release/* /opt/app/rmq/

rm -r /opt/app/rmq/rocketmq-all-4.7.1-bin-release

5.使用rmq用户添加MQ环境变量

vim .bashrc (cd 到家目录)

#RockerMQ

export ROCKETMQ_HOME=/opt/app/rmq/

export PATH=$ROCKETMQ_HOME/bin:$PATH

#生效环境变量

source .bashrc

给脚本添加执⾏权限和创建目录

#使用rmq用户授予执行权限

chmod a+x /opt/app/rmq/bin/*

#使用rmq用户创建MQ日志目录

mkdir -pv /opt/app/rmq/store/commitlog

mkdir -pv /opt/app/rmq/namesrv/

#创建启动日志目录

mkdir -pv /opt/app/rmq/logs/

6.调整脚本中的参数(根据服务器资源修改内存配置)

vim /opt/app/rmq/bin/runserver.sh

vim /opt/app/rmq/bin/runbroker.sh

7.⽣成nameServer的配置⽂件

mqnamesrv -p > /opt/app/rmq/conf/mqnamesrv.conf

修改 mqnamesrv.conf 的 rocketmqHome 为 /opt/app/rmq

修改 mqnamesrv.conf 的 listenPort 为 9876

修改:

kvConfigPath=/opt/app/rmq/namesrv/kvConfig.json

configStorePath=/opt/app/rmq/namesrv/namesrv.properties

8.⽣成broker的配置⽂件

mqbroker -p > /opt/app/rmq/conf/mqbroker.conf

注意修改mqbroker.conf 的 namesrvAddr 字段为 Rmq 集群的地址Rmq 集群的地址namesrvAddr=master-jin:9876;

node1-jin:9876 修改 mqbroker.conf 的 brokerIP1、brokerIP2 为本机IP地址

9.启动mqnameserver(必须先启动NameServer,再启动

Broker)

NameServer是⽆状态的,不会相互同步数据

在四台机器每台上安装NameServer,borker配置namesrvAddr为四台机器,⽤英⽂封号分割

#启动NameServer

nohup mqnamesrv -c /opt/app/rmq/conf/mqnamesrv.conf > /opt/app/rmq/logs/namesrv.log 2>&1 &

观察⽇志⽇如下:

Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release

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, /opt/app/rmq/conf/mqnamesrv.conf

The Name Server boot success. serializeType=JSON

10.启动mqbroker(以下内容在不同机器区别操作)

  • 机器A,第⼀个Master
  • 调整配置⽂件/opt/app/rmq/conf/mqbroker.conf

brokerClusterName=DefaultCluster

namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:

9876

brokerName=broker-a # broker master与slaver之间保持⼀致

brokerId=0 # master必须为0. slaver不为0

deleteWhen=04

fileReservedTime=48

brokerRole=SYNC_MASTER # 同步master

flushDiskType=ASYNC_FLUSH

storePathRootDir=/opt/app/rmq/store

storePathCommitLog=/opt/app/rmq/store/commitlog

启动:

nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf >/opt/app/rmq/logs/broker.log 2>&1 &

  • 机器B,第⼀个Slave
  • 调整配置⽂件/opt/app/rmq/conf/mqbroker.conf

brokerClusterName=DefaultCluster

namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.

213:9876

brokerName=broker-a # broker master与slaver之间保持⼀致

brokerId=1 # master必须为0. slaver不为0

deleteWhen=04

fileReservedTime=48

brokerRole=SLAVE # slave

flushDiskType=ASYNC_FLUSH

storePathRootDir=/opt/app/rmq/store

storePathCommitLog=/opt/app/rmq/store/commitlog

启动:

nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf >/opt/app/rmq/logs/broker.log 2>&1 &

  • 机器C,启动第⼆个Master
  • 调整配置⽂件/opt/app/rmq/conf/mqbroker.conf

brokerClusterName=DefaultCluster

namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.

213:9876

brokerName=broker-b # broker master与slaver之间保持⼀致

brokerId=0 # master必须为0. slaver不为0

deleteWhen=04

fileReservedTime=48

brokerRole=SYNC_MASTER # 同步master

flushDiskType=ASYNC_FLUSH

storePathRootDir=/opt/app/rmq/store

storePathCommitLog=/opt/app/rmq/store/commitlog

启动:

nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf >/opt/app/rmq/logs/broker.log 2>&1 &

  • 机器D,第⼆个Slave
  • 调整配置⽂件/opt/app/rmq/conf/mqbroker.conf

brokerClusterName=DefaultCluster

namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.

213:9876

brokerName=broker-b # broker master与slaver之间保持⼀致

brokerId=1 # master必须为0. slaver不为0

deleteWhen=04

fileReservedTime=48

brokerRole=SLAVE # slave

flushDiskType=ASYNC_FLUSH

storePathRootDir=/opt/app/rmq/store

storePathCommitLog=/opt/app/rmq/store/commitlog

启动:

nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf >/opt/app/rmq/logs/broker.log 2>&1 &

  • 观察⽇志如下

load config properties file OK, /opt/app/rmq/conf/mqbroker.conf

11.验证是否部署成功

在四台机器中的其中⼀台执⾏下列操作,以验证是否部署成功

如果能正常创建topic、并且成功发送消息、消费消息。则认为部署成功

  • 查看集群是否搭建成功

sh /opt/app/rmq/bin/mqadmin clusterList -n 10.10.183.227:9876

RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).

RocketMQLog:WARN Please initialize the logger system properly.

#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE

DefaultCluster broker-a 0 10.10.183.226:10911 V4_7_1 0.00(0,0ms) 0.00(0,0ms) 0 450758.13 0.1923

DefaultCluster broker-a 1 10.10.183.227:10911 V4_7_1 0.00(0,0ms) 0.00(0,0ms) 0 450758.13 0.0352

DefaultCluster broker-b 0 10.10.183.229:10911 V4_7_1 0.00(0,0ms) 0.00(0,0ms) 0 450758.13 0.0491

DefaultCluster broker-b 1 10.10.183.230:10911 V4_7_1 0.00(0,0ms) 0.00(0,0ms) 0 450758.13 0.1421

  • 创建topic

mqadmin updateTopic -n localhost:9876 -b localhost:10911 -t test_topic

RocketMQLog:WARN No appenders could be found for logger

(io.netty.util.internal.PlatformDependent0).

RocketMQLog:WARN Please initialize the logger system properly.

create topic to localhost:10911 success.

TopicConfig [topicName=test_topic, readQueueNums=8, writeQueueNums=8, perm=RW-,

topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false]

  • 查看topic

mqadmin topicList -n localhost:9876

RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).

RocketMQLog:WARN Please initialize the logger system properly.

SCHEDULE_TOPIC_XXXX

RMQ_SYS_TRANS_HALF_TOPIC

DefaultCluster_REPLY_TOPIC

test_topic

broker-b

BenchmarkTest

OFFSET_MOVED_EVENT

broker-a

TBW102

SELF_TEST_TOPIC

DefaultCluster

  • 发送消息

mqadmin sendMessage -n localhost:9876 -t test_topic -p test_body

RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).

RocketMQLog:WARN Please initialize the logger system properly.

#Broker Name #QID #Send Result #MsgId

broker-a 6 SEND_OK 0A0AB7E21A1E135FBAA40F0E3AD90000

  • 消费消息

mqadmin consumeMessage -n localhost:9876 -t test_topic

RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).

RocketMQLog:WARN Please initialize the logger system properly.

MessageQueue [topic=test_topic, brokerName=broker-a, queueId=0] print msg finished. status=NO_NEW_MSG, offset=0

MessageQueue [topic=test_topic, brokerName=broker-a, queueId=2] print msg finished. status=NO_NEW_MSG, offset=0

MessageQueue [topic=test_topic, brokerName=broker-a, queueId=1] print msg finished. status=NO_NEW_MSG, offset=0

MessageQueue [topic=test_topic, brokerName=broker-a, queueId=4] print msg finished. status=NO_NEW_MSG, offset=0

MessageQueue [topic=test_topic, brokerName=broker-a, queueId=3] print msg finished. status=NO_NEW_MSG, offset=0

Consume ok

MSGID: 0A0AB7E21A1E135FBAA40F0E3AD90000 MessageExt [brokerName=broker-a, queueId=6, storeSize=185, queueOffset=0, sysFlag=0, bornTimestamp=1622729390809, bornHost=/10.10.183.226:33016, storeTimestamp=1622729390824, storeHost=/10.10.183.226:10911, msgId=0A0AB7E200002A9F0000000000000000, commitLogOffset=0, bodyCRC=1590763901, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='test_topic', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=1, UNIQ_KEY=0A0AB7E21A1E135FBAA40F0E3AD90000, CLUSTER=DefaultCluster, WAIT=true}, body=[116, 101, 115, 116, 95, 98, 111, 100, 121], transactionId='null'}] BODY: test_body

MessageQueue [topic=test_topic, brokerName=broker-a, queueId=6] print msg finished. status=NO_NEW_MSG, offset=1

MessageQueue [topic=test_topic, brokerName=broker-a, queueId=5] print msg finished. status=NO_NEW_MSG, offset=0

MessageQueue [topic=test_topic, brokerName=broker-a, queueId=7] print msg finished. status=NO_NEW_MSG, offset=0

关闭命令

mqshutdown broker

mqshutdown namesrv

再次启动

nohup mqnamesrv -c /opt/app/rmq/conf/mqnamesrv.conf > /opt/app/rmq/logs/namesrv.log 2>&1 &

nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf >/opt/app/rmq/logs/broker.log 2>&1 &

posted @   小白不怕黑  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示