15 Centos单机搭建Rocketmq运行环境

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

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

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

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

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

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

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

  1. 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配置文件内容:

  1. brokerClusterName=rocketmq-cluster
  2. #broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
  3. brokerName=broker-a
  4. #0 表示 Master,>0 表示 Slave
  5. brokerId=0
  6. #nameServer地址,分号分割
  7. namesrvAddr=192.168.0.110:9876
  8. #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
  9. defaultTopicQueueNums=4
  10. #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
  11. autoCreateTopicEnable=true
  12. #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
  13. autoCreateSubscriptionGroup=true
  14. #Broker 对外服务的监听端口,
  15. listenPort=10911
  16. #删除文件时间点,默认凌晨 4点
  17. deleteWhen=04
  18. #文件保留时间,默认 48 小时
  19. fileReservedTime=120
  20. #commitLog每个文件的大小默认1G
  21. mapedFileSizeCommitLog=1073741824
  22. #ConsumeQueue每个文件默认存30W条,根据业务情况调整
  23. mapedFileSizeConsumeQueue=300000
  24. #destroyMapedFileIntervalForcibly=120000
  25. #redeleteHangedFileInterval=120000
  26. #检测物理文件磁盘空间
  27. diskMaxUsedSpaceRatio=88
  28. #存储路径
  29. storePathRootDir=/home/mq/rocketmq/store
  30. #commitLog 存储路径
  31. storePathCommitLog=/home/mq/rocketmq/store/commitlog
  32. #消费队列存储路径存储路径
  33. storePathConsumeQueue=/home/mq/rocketmq/store/consumequeue
  34. #消息索引存储路径
  35. storePathIndex=/home/mq/rocketmq/store/index
  36. #checkpoint 文件存储路径
  37. storeCheckpoint=/home/mq/rocketmq/store/checkpoint
  38. #abort 文件存储路径
  39. abortFile=/usr/local/rocketmq/store/abort
  40. #限制的消息大小
  41. maxMessageSize=65536
  42. #flushCommitLogLeastPages=4
  43. #flushConsumeQueueLeastPages=2
  44. #flushCommitLogThoroughInterval=10000
  45. #flushConsumeQueueThoroughInterval=60000
  46. #Broker 的角色
  47. #- ASYNC_MASTER 异步复制Master
  48. #- SYNC_MASTER 同步双写Master
  49. #- SLAVE
  50. brokerRole=SYNC_MASTER
  51. #刷盘方式
  52. #- ASYNC_FLUSH 异步刷盘
  53. #- SYNC_FLUSH 同步刷盘
  54. flushDiskType=SYNC_FLUSH
  55. #checkTransactionMessageEnable=false
  56. #发消息线程池数量
  57. #sendMessageThreadPoolNums=128
  58. #拉消息线程池数量
  59. #pullMessageThreadPoolNums=128

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

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

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

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

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

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

执行:

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

路径全部替换了;

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

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

runbroker.sh

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

改成

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

runserver.sh

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

改成

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

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

  1. nohup sh mqnamesrv &

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

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

可以用jps查看进程:

  1. jps
  2. 83545 Jps
  3. 65852 NamesrvStartup
  4. 83310 BrokerStartup

备注:关闭命令

先关闭broker,再关闭nameserver

  1. sh mqshutdown broker
  2. sh mqshutdown namesrv

我们代码测试下:

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

启动测试OK;

相关文章