15 Centos单机搭建Rocketmq运行环境

x33g5p2x  于2021-09-19 转载在 其他  
字(3.1k)|赞(0)|评价(0)|浏览(464)

先把rocketmq上传到/hom/data/目录下;

为了方便,我们统一用finalshell工具上传;

/home/下面再新建一个mq目录用来存放rocketmq安装文件;

进入data目录,解压rocketmq压缩包到mq目录

unzip rocketmq-all-4.9.0-bin-release.zip -d ../mq

假如unzip没安装,可以安装下

yum install -y unzip zip

为了操作方便我们把解压后的文件名改成rocketmq,工具里右击重命名即可;

rocketmq目录下,新建logs和store两个目录;

logs是存储rocketmq日志的目录;

store是存储rocketmq数据文件的目录;

在store目录再新建commitlogconsumequeueindex三个目录;

commitlog存储RocketMQ消息信息目录;

consumequeueindex存储索引文件数据目录;

我们先配置单节点,修改conf下的2m-2s-sync配置文件;

覆盖掉broker-a.properties配置文件内容:

brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.0.110:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/mq/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/home/mq/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/mq/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/home/mq/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/mq/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/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

这里有个 刷盘方式 具体讲下:

RocketMQ提供了两种刷盘策略同步刷盘、异步刷盘

同步刷盘:在消息到达MQ后,RocketMQ需要将数据持久化,同步刷盘是指数据到达内存之后,必须刷到commitlog日志之后才算成功,然后返回producer数据已经发送成功。

异步刷盘:,同步刷盘是指数据到达内存之后,返回producer说数据已经发送成功。,然后再写入commitlog日志。

复制方式优点缺点适应场景
同步刷盘保证了消息不丢失吞吐率相对于异步刷盘要低消息可靠性要求较高的场景
异步刷盘系统的吞吐量提高系统断电等异常时会有部分丢失对应吞吐量要求较高的场景

进入conf目录下,替换掉所有xml中的${user.home},确保日志路径正确

执行:

sed -i 's#${user.home}#/home/mq/rocketmq#g' *.xml

路径全部替换了;

Rocketmq启动对内存要求比较高,一般至少1个G内存,否则会影响RocketMQ的性能;

默认配置内存比较高,虚拟机不方便演示,所以我们修改下bin目录下的runbroker.sh和runserver.sh文件;

runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

改成

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"

runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

改成

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

先启动nameserver(后台运行方式启动):

nohup sh mqnamesrv &

再启动broker(后台运行方式启动)

nohup sh mqbroker -c /home/mq/rocketmq/conf/2m-2s-sync/broker-a.properties &

可以用jps查看进程:

jps
83545 Jps
65852 NamesrvStartup
83310 BrokerStartup

备注:关闭命令

先关闭broker,再关闭nameserver

sh mqshutdown broker
sh mqshutdown namesrv

我们代码测试下:

把消费端,生产端的rocketmq.name-server值改成:虚拟机IP地址:9876

启动测试OK;

相关文章