技术活,该赏
点赞再看,养成习惯
复制代码
第一节:下载RocketMQ
演示:RocketMQ版本:4.5.1
下载地址
https : //archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip
环境要求
- Linux64位系统
- JDK1.8(64位)
- 源码安装需要安装Maven 3.2.x
第二节:安装RocketMQ
以二进制包安装
上传下载的安装包到服务器上
解压安装包
先查看下有没有安装unzip
unzip
复制代码
出现下图则是有安装
出现下图则是没有安装
安装命令
yum install unzip
复制代码
解压安装包并移动到指定目录
创建对应的目录/usr/local/server/rocketmq
cd /usr/local/
mkdir server
cd server/
mkdir rocketmq
复制代码
unzip rocketmq-all-4.5.1-bin-release.zip -d /usr/local/server/rocketmq
复制代码
更改文件名
cd /usr/local/server/rocketmq/
mv rocketmq-all-4.5.1-bin-release/ rocketmq
cd ..
mv rocketmq/ mq #出现两个rocketmq文件夹名,改上一个文件夹为mq
复制代码
创建rocketmq存储目录
现有的目录结构是这样的
创建存储目录
mkdir logs
mkdir store
cd store
mkdir commitlog
mkdir consumequeue
mkdir index
复制代码
新创建文件夹说明
- logs:存储日志目录
- store:存储数据文件目录
- commitlog:存储消息信息
- consumequeue,index:存储 消息的索引数据
rocketMQ目录介绍
- bin:启动脚本,包括shell脚本和CMD脚本
- conf:实例配置文件 ,包括broker配置文件、logback配置文件等
- lib:依赖jar包,包括Netty、commons-lang、FastJSON等
conf目录文件说明
- 2m-2s-async :2主2从-异步
- 2m-2s-sync :2主2从-同步
- 2m-noslave :2主无从
这里演示单结点配置:只要先修改2m-2s-async配置实现。
cd 2m-2s-async
复制代码
broker-a.properties :单结点a配置文件
broker-a-s.properties :单结点a的从结点配置文件
broker-b.properties :单结点b配置文件
broker-b-s.properties :单结点b的从结点配置文件
复制代码
第三节:单结点配置
配置hosts
vim /etc/hosts
复制代码
添加nameserver和broker
# nameserver
192.168.88.131 rocketmq-nameserver1
# broker
192.168.88.131 rocketmq-master1
复制代码
配置完成后, 重启网卡
systemctl restart network
复制代码
进入conf配置文件夹
cd conf
复制代码
进入2m-2s-async
cd 2m-2s-async
复制代码
修改broker-a.properties
vim broker-a.properties
复制代码
将下面的配置覆盖 broker-a.properties,保存
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
brokerIP1=192.168.88.131
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/server/mq/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/usr/local/server/mq/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/server/mq/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/server/mq/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/server/mq/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/server/mq/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
复制代码
注:配置里的路径要与刚创建的文件夹路径保持一致,如有自定义修改
修改日志路径
进入conf 目录,替换所有xml中的${user.home},保证日志路径正确
语法:
sed -i 批量替换作用
sed -i 's#原字符串#新字符串#g' 替换的文件
复制代码
sed -i 's#${user.home}#/usr/local/server/mq/rocketmq#g' *.xml
复制代码
说明替换成功了
修改 runbroker.sh
调整内存大小(这里只是演示用途,实际的内存大小要以生产环境为准)
cd ..
cd bin/
vim runbroker.sh
复制代码
调整为1g
修改 runserver.sh
调整内存大小(这里只是演示用途,实际的内存大小要以生产环境为准)
vim runserver.sh
复制代码
第四节:环境变量配置
vim /etc/profile
复制代码
在profile文件的末尾加入如下命令
#set rocketmq
ROCKETMQ_HOME=/usr/local/server/mq/rocketmq/
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
复制代码
输入:wq! 保存并退出, 并使得配置立刻生效:
source /etc/profile
复制代码
先启动namesrv
nohup sh mqnamesrv &
复制代码
服务没启动成功,查看下日志
cd /usr/local/server/mq/rocketmq/bin/
cat nobup.out
复制代码
原因是输入的命令写成了
nohup sh mqnamesrc & ##应该是 nohup sh mqnamesrv &
复制代码
输入
ohup sh mqnamesrv &
复制代码
然后回车
通过jps查看
启动broker
nohup sh mqbroker -c /usr/local/server/mq/rocketmq/conf/2m-2s-async/broker-a.properties > /dev/null 2>&1 &
复制代码
注:
关闭namesrv和broker
关闭namesrv服务
#进入bin
sh mqshutdown namesrv
复制代码
关闭broker服务
sh mqshutdown broker
复制代码
通过jps验证下
第五节:防火墙配置
宿主机需要远程访问虚拟机的rocketmq服务和web服务,需要开放相关的端口号,简单粗暴的方式是直接关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 查看防火墙的状态
firewall-cmd --state
# 禁止firewall开机启动
systemctl disable firewalld.service
复制代码
或者为了安全,只开放特定的端口号,RocketMQ默认使用3个端口:9876 、10911 、11011 。如果防火墙没有关闭的话,那么防火墙就必须开放这些端口:
- nameserver 默认使用 9876 端口
- master 默认使用 10911 端口
- slave 默认使用11011 端口
执行以下命令:
# 开放name server默认端口
firewall-cmd --remove-port=9876/tcp --permanent
# 开放master默认端口
firewall-cmd --remove-port=10911/tcp --permanent
# 开放slave默认端口 (当前集群模式可不开启)
firewall-cmd --remove-port=11011/tcp --permanent
# 重启防火墙
firewall-cmd --reload
复制代码
第六节:RocketMQ架构介绍
- Producer:消息的发送者;举例:发信者
- Consumer:消息接收者;举例:收信者
- Broker:暂存和传输消息;举例:邮局
- NameServer:管理Broker;举例:各个邮局的管理机构
- Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息
- Message Queue:相当于是Topic的分区;用于并行发送和接收消息
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END