Linux下安装RocketMQ

你的名字 2020-11-14 21:44 1107阅读 0赞

RocketMQ安装前准备:

  1. 建议使用64位操作系统,Linux / Unix / Mac;本人使用的是CentOS7,你当然也可以使用小红帽或者UBuntu。
  2. 64位JDK 1.8+;RocketMQ4.3.x之后都是使用jdk1.8+,所以你得保证你得安装环境必须装有jdk1.8+
  3. Maven 3.2.x;Maven工具其实不一定需要使用的,但是也建议大家在安装环境下配置好Maven3.3.9+
  4. 4g+内存用于Broker服务器, RocketMQ定位是分布式消息中间件,属重量级应用,所以它是比较吃内存的。但是如果你只是想在本地尝试一下搭建流程,或者你是想在自己的虚拟机上搭建一个对性能没什么要求的测试服务器,那么你可以只为这个虚拟机分配1.5g + 的内存。当然,低内存就代表着低性能,而且RocketMQ在低内存下运行是相对容易出错的,具体的内存分配,看你个人情况而定。
  5. 本次安装的是单机版本

安装环境配置:

[注]:这里需要注意一下,在配置jdk1.8和maven的过程中,都需要在 /etc/profile 目录下配置他们的环境变量,并将java_home和maven_home都配置到 PATH 变量上,千万不要配置两个PATCH,否则可能会出现预料之外的情况,具体配置可以参考本人的PATCH变量: export PATH=$PATH:${JAVA_PATH}:$MAVEN_HOME/bin

以后如果有更多的环境变量配置,就在PATCH变量值的后面加上 :${XXX_HOME}/bin 即可。注意,Linux下的环境变量之间用冒号隔开


一、下载RocketMQ到安装环境下:

好了,终于开始正式安装RocketMQ了。

首先我们需要下载RocketMQ的安装包:RocketMQ4.3.1 然后将安装包上传到Linux服务器。

当然,你也可以直接用wget命令在Linux系统上直接下载安装包:

  1. wget http://mirrors.hust.edu.cn/apache/rocketmq/4.3.1/rocketmq-all-4.3.1-bin-release.zip

如果你还没有安装wget,可以使用下面命令完成安装

  1. yum -y install wget

#


二、完成RocketMQ的安装和配置

2.1 将安装文件解压到安装目录下,这里将它安装到usr/local下

  1. unzip rocketmq-all-4.3.1-bin-release.zip -d /usr/local

如果没有unzip命令,可以使用yum命令安装: yum install unzip

解压完之后,可以看到usr/local目录下多了个文件夹 -> rocketmq-all-4.3.1-bin-release,由于文件名太长,决定使用 ln命令给这个目录映射一个简短的新名字:

  1. ln -s rocketmq-all-4.3.1-bin-release rocketmq

这样以后配置文件目录时只需要配置rocketmq即可替代rocketmq-all-4.3.1-bin-release

2.2 创建文件存储目录

  1. mkdir /usr/local/rocketmq/store
  2. mkdir /usr/local/rocketmq/store/commitlog
  3. mkdir /usr/local/rocketmq/store/consumequeue
  4. mkdir /usr/local/rocketmq/store/index

2.3 修改配置文件

  1. vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties

可以看到界面如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pqcTg1MjUzMzQ0NQ_size_16_color_FFFFFF_t_70

这里建议将默认配置删除。

我这里贴出一份本人的配置文件[配置参考网络]

  1. ## 配置broker的配置文件##
  2. ## 集群名称
  3. brokerClusterName=rocketmq-cluster
  4. #broker名字,注意此处不同的配置文件填写的不一样
  5. brokerName=broker-a
  6. #0 表示 Master,>0 表示 Slave
  7. brokerId=0
  8. #nameServer地址,如果mq部署在局域网上,则用局域网ip,如果是在阿里云上,配置成阿里云外网ip
  9. namesrvAddr=192.168.1.10:9876
  10. ## broker ip地址
  11. brokerIP1=192.168.1.10
  12. #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
  13. defaultTopicQueueNums=4
  14. #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
  15. autoCreateTopicEnable=true
  16. #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
  17. autoCreateSubscriptionGroup=true
  18. #Broker 对外服务的监听端口
  19. listenPort=10911
  20. #删除文件时间点,默认凌晨 4点
  21. deleteWhen=04
  22. #文件保留时间,默认 48 小时
  23. fileReservedTime=120
  24. #commitLog每个文件的大小默认1G
  25. mapedFileSizeCommitLog=1073741824
  26. #ConsumeQueue每个文件默认存30W条,根据业务情况调整
  27. mapedFileSizeConsumeQueue=300000
  28. #destroyMapedFileIntervalForcibly=120000
  29. #redeleteHangedFileInterval=120000
  30. ##设置的磁盘最大利用率。默认是75
  31. diskMaxUsedSpaceRatio=75
  32. #存储路径
  33. storePathRootDir=/usr/local/rocketmq/store
  34. #commitLog 存储路径
  35. storePathCommitLog=/usr/local/rocketmq/store/commitlog
  36. #消费队列存储路径存储路径
  37. storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
  38. #消息索引存储路径
  39. storePathIndex=/usr/local/rocketmq/store/index
  40. #checkpoint 文件存储路径
  41. storeCheckpoint=/usr/local/rocketmq/store/index/checkpoint
  42. #abort 文件存储路径
  43. abortFile=/usr/local/rocketmq/store/index/abort
  44. #限制的消息大小 建议 65536
  45. maxMessageSize=10240
  46. #flushCommitLogLeastPages=4
  47. #flushConsumeQueueLeastPages=2
  48. #flushCommitLogThoroughInterval=10000
  49. #flushConsumeQueueThoroughInterval=60000
  50. #Broker 的角色
  51. #- ASYNC_MASTER 异步复制Master
  52. #- SYNC_MASTER 同步双写Master
  53. #- SLAVE
  54. brokerRole=ASYNC_MASTER
  55. #刷盘方式
  56. #- ASYNC_FLUSH 异步刷盘
  57. #- SYNC_FLUSH 同步刷盘
  58. flushDiskType=ASYNC_FLUSH
  59. #checkTransactionMessageEnable=false
  60. #发消息线程池数量 128
  61. #sendMessageThreadPoolNums=64
  62. #拉消息线程池数量 128
  63. #pullMessageThreadPoolNums=64

2.4 修改日志配置:

  1. mkdir -p /usr/local/rocketmq/logs
  2. cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml

第二个命令可分为两部分: 首先cd /usr/local/rocketmq/conf 自 是进入rocketmq的config目录下,然后sed -i ‘s#${user.home}#/usr/local/rocketmq#g’ *.xml 是为了将conf目录下所有的xml文件中的 ${user.home}内容修改为 /usr/local/rocketmq

命令修改前的配置如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pqcTg1MjUzMzQ0NQ_size_16_color_FFFFFF_t_70 1

可以看到RocketMQ的日志文件默认是打印到user.home目录下。

我们执行sed 命令后,改变日志的输出路径:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pqcTg1MjUzMzQ0NQ_size_16_color_FFFFFF_t_70 2

这样日志就会打印到RocketMQ安装目录下。其实也可以不改,这个要看个人的习惯,不改的话默认打印到user.home下,比如你说root用户,日志就会在/root/logs下。


2.5 修改启动命令

到了这一步其实已经可以启动了,但是如果你的安装环境内存不够的话,必须要修改了启动参数才能正常运行.

  • 2.5.1 修改broker启动参数*

    vim /usr/local/rocketmq/bin/runbroker.sh

修改java-configuration :

JAVA_OPT=”${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn256” 修改堆内存的配置

25.2 修改server的启动参数

  1. vim /usr/local/rocketmq/bin/runserver.sh

JAVA_OPT=”${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m”

上述配置的参数值仅仅是为了降低内存占用而设,其值没有其他参考价值


三、正式启动RocketMQ

3.1 进入RocketMQ的bin目录下

  1. cd /usr/local/rocketmq/bin

3.2 启动nameserver

  1. nohup sh mqnamesrv &

20190310123923309.png

至于为什么要用nohup和&, nohup 命令用途是:不挂断地运行命令,& 放在命令后面表示设置此进程为后台进程。

这里可以用jps查看nameserver的启动情况,如果出现如下的界面,说明已经启动成功

20190310123807165.png

注:在启动nameserver的过程中,有时会让当前命令行界面丢失,无法输入指令。如图:

20190310124123205.png

这时候只能新开一个窗口来执行后面的操作


3.3 启动broker

  1. nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &

使用jsp命令查看程序运行情况:

20190310124603621.png

可以看到,broker已经启动起来了


3.4 查看RocketMQ的broker日志和namesrv日志:

  1. tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
  2. tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

3.5关闭nameserver和broker命令

关闭nameserver服务

  1. sh mqshutdown namesrv

关闭broker服务

  1. sh mqshutdown broker

四、使用Tomcat部署RocketMQ的控制台

4.1 首先下载RocketMQ的控制台扩展

下载地址:https://github.com/apache/rocketmq-externals/tree/rocketmq-console-1.0.0

这里需要注意的是,我们这里下载的是rocketmq-externals项目的1.0.0分支,这个分支亲测可以正常运行,但是rocketmq-externals项目的master分支项目你想要运行起来还是比较麻烦的,博主就搞了很久,比如在对master分支下的项目下载到本地后,找到rocketmq-console项目,执行mvn package的时候就报jar报miss异常,没办法只能将4.3.1版本的jar包导入,却发现和mater分支下的代码不兼容,项目直接报错,启动不起来。额…最后balabalabal一顿操作,还是没有解决问题,实在是惭愧…

4.2 配置console项目的application.properties文件

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pqcTg1MjUzMzQ0NQ_size_16_color_FFFFFF_t_70 3

4.3 打包项目

  1. mvn package -Dmaven.test.skip

4.4 运行项目

将项目打包生成的jar包使用java -jar即可运行起来,如果jar包运行不起来,可以试试在项目根目录下运行 mvn spring-boot:run

运行完毕后,在浏览器上输入 localhost:8080即可启动RocketMQ的监控系统:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pqcTg1MjUzMzQ0NQ_size_16_color_FFFFFF_t_70 4

好了,RocketMQ就此安装结束

发表评论

表情:
评论列表 (有 0 条评论,1107人围观)

还没有评论,来说两句吧...

相关阅读