上一篇 架构运维篇(四):Centos7/Linux中Tomcat安装Https证书实践
这一篇讲一下在Centos7/Linux安装RocketMQ,MQ的具体应用场景和使用就不再啰嗦了。我在没有使用过MQ之前听其他大神提到感觉很高深和复杂,不过有道是“难者不会,会者不难”,那么想要入门MQ的先从学会安装部署开始。

版本说明

  • JDK :jdk1.8.0_172(已安装)
  • MQ : rocketmq4.3

安装部署RocketMQ

第一步:下载RocketMQ安装包

  1. 官网下载
下载地址:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip
  1. 其他镜像下载
下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip
第二步:上传至服务器

这里将下载好的rocketmq安装包放到服务器 software 目录下(可以参考架构运维篇的前几章,安装文件都会放到该目录下)

[root@localhost software]# unzip rocketmq-all-4.3.2-bin-release.zip //解压,也可以采用tar 等方式
[root@localhost software]# mv rocketmq-all-4.3.2-bin-release rocket4.3  //这里进行重命名,名字太长不好维护
[root@localhost software]# rm -f rocketmq-all-4.3.2-bin-release.zip //删除安装包,可选
第三步:修改相关配置

如果对rocketmq的配置有详细查看过就会发现,默认配置是非常耗费内存的,如果服务器资源不是很充足还是需要修改的,不然启动会报错。
1、修改runserver.sh 配置文件
到rocketmq的解压文件 /bin 目录下,进行如下操作:

[root@localhost bin]# vim runserver.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

也不要设置太小(至少要配置512m),第一次安装时参考网上其他作者写的文章这里配置了256,启动时是会报错的,错误信息如下所示:

[root@localhost bin]# 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.
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (524288k) is equal to or greater than the entire heap (524288k).  A new max generation size of 524224k will be used.
java.net.BindException: Address already in useat sun.nio.ch.Net.bind0(Native Method)at sun.nio.ch.Net.bind(Net.java:433)at sun.nio.ch.Net.bind(Net.java:425)at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:127)
......

2、修改runbroker.sh 配置文件
copy一份原来的,再进行修改配置信息:

[root@localhost bin]# vim runbroker.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

备注:同样不可设置过低
3、修改tools.sh 配置文件
同样copy一份原来的,再进行修改配置信息:

[root@localhost bin]# vim tools.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
第四步:启动服务

rocketmq在启动时需要启动Name Server和Broker两个服务,按照顺序依次启动。
启动Name Server:

[root@ localhost bin]# nohup sh mqnamesrv -n localhost:9876 &
[1] 28042
[root@ localhost bin]# 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.
The Name Server boot success. serializeType=JSON

启动Broker:

[root@localhost bin]# nohup sh mqbroker -n localhost:9876 &
[2] 28082

备注:9876是rocketmq的默认端口

关闭服务

sh mqshutdown namers
sh mqshutdown broker

其实写到这里已经算是安装部署完成了,那么为了让初学者对MQ有更加直观的体验,接着搭建监控平台。

搭建RocketMQ监控平台

官方有提供基于Spring Boot的RocketMQ web界面监控项目(rocketmq-console),接下来部署上。

第一步:下载项目

GitHub地址:https://github.com/apache/rocketmq-externals.git
如下图打包下载:

第二步:修改配置文件

打开rocketmq-console项目中的application.properties文件,修改如下配置:

server.port=89  #端口自己定义
rocketmq.config.namesrvAddr=127.0.0.1:9876  #IP地址可以修改
第三步:rocketmq-console项目打包

打包命令如下:

#进入rocketmq-console目录,执行命令
mvn clean package -Dmaven.test.skip=true

备注:会编译生成rocketmq-console-ng-1.0.1.jar,也可以将项目导入的idea里面进行修改和打包操作。

第四步:上传jar到服务器并启动项目

上传到服务器后,进入jar包所在目录执行如下命令:

[root@localhost data]# java -jar rocketmq-console-ng-1.0.1.jar
第五步:测试结果

浏览器访问:http://127.0.0.1:89 ,如下图所示部署成功:

总结

Centos7/Linux环境搭建RocketMQ会遇到一些坑,这里给大家先列举一下:
1、jvm内存溢出
文章上面有提到过如果配置空间过小启动时会报内存错误,参考文中配置即可解决,也可以自己调试合适的空间大小。
2、No route info of this topic, TopicTest 错误
项目是用Spring Boot 搭建的,在启动是报“org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest”错误,经排查是启动broker方式不对。
官网启动方式和文中一样,但是还是报错。

#官网推荐启动命令
nohup sh bin/mqbroker -n localhost:9876 &

改为

nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &

贡献者

  • IT实战联盟-Line

更多精彩内容可以关注“IT实战联盟”公号哦~~~

架构运维篇(五):Centos7/Linux中安装RocketMQ相关推荐

  1. Linux怎么卸载unbound,系统运维|如何在 Arch Linux 中安装 DNSCrypt 和 Unbound

    DNSCrypt 是一个用于对 DNS 客户端和 DNS 解析器之间通信进行加密和验证的协议.它可以阻止 DNS 欺骗或中间人攻击. DNSCrypt 可用于大多数的操作系统,包括 Linux,Win ...

  2. centos7 如何安装部署k8s_架构运维篇(五):Centos7/Linux中安装部署RocketMQ

    上一篇 架构运维篇(四):Centos7/Linux中Tomcat安装SSL证书实践 这一篇讲一下在Centos7/Linux安装RocketMQ,MQ的具体应用场景和使用就不再啰嗦了.我在没有使用过 ...

  3. linux crontab不运行,Linux运维知识之解决Linux中crontab不执行ntpdate问题

    本文主要向大家介绍了Linux运维知识之解决Linux中crontab不执行ntpdate问题,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 解决Linux中crontab尚未 ...

  4. 《Linux运维篇:Linux系统运维指南》

    一.Linux运维之知识篇 二.Linux运维之系统篇 <Linux运维总结:使用U盘制作Linux镜像> <Linux运维实战:创建LVM挂载到指定目录> <Linux ...

  5. 视频教程-Prometheus+Grafana企业级监控实战(运维篇)2020年视频教程-Linux

    Prometheus+Grafana企业级监控实战(运维篇)2020年视频教程 资深DevOps工程师,曾经在华为,乐逗游戏工作,目前就职于知名物流公司工作 希望结合工作实践 给大家带来很多干货 周龙 ...

  6. 《Linux运维实战:Centos7.6基于ansible一键离线部署mongodb4.2.23容器版副本集群》

    一.部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署 mongodb副本集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于ans ...

  7. Linux主流架构运维工作简单剖析

    随着IT运维的不断发展,尤其的Linux的飞速发展,越来越多的企业开始使用Linux操作系统平台,例如CentOS.RedHat.Ubuntu.Fedora等等,成千上亿个网站涌现在当今互联网,互联网 ...

  8. Linux运维实战:CentOS7.6操作系统从入门到精通(6-10)

    第6章 CentOS用户管理 第7章 CentOS 7 文件权限管理 第8章 CentOS 7 程序包的管理与安装 第9章 文件的归档和压缩 第10章 CentOS 7 系统进程管理 Linux运维实 ...

  9. linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...

    本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...

  10. 运维小菜鸟随笔Linux入门级操作命令(更新中。。。)

    运维小菜鸟随笔&Linux入门级操作命令 从事实施运维行业已三年有余,却从未系统的学习过Linux,一直停留在有问题找百度的境界.近日终于痛下决心,系统的梳理一下Linux相关知识,顺便看看, ...

最新文章

  1. Shell 开发在运维中的经验总结
  2. 读取Node.js中的环境变量
  3. leetcode 105. 从前序与中序遍历序列构造二叉树 c语言递归解法
  4. html自定义属性冒号,vue中标签上的属性加冒号与不加冒号的区别
  5. Mysql报错130_Mysql报错Forcing close of thread 139 user: 'root'
  6. MySQL笔记-MHA(Master High Availability)搭建
  7. error: [FabricCAClientService.js]: Failed to enroll admin, error:%o message=Calling enroll endpoint
  8. python开发工具pycharm快速入门
  9. JSP学习——EL表达式和JSTL学习小结
  10. 用matlab化简三角函数方程组,matlab化简三角函数 matlab怎么样化简三角函数?
  11. HTML——HTML中的特殊符号
  12. 多网卡时如何使用源地址ping目的地址,检测网络连通性。
  13. sass实现前端页面基础框架布局
  14. Unable to set localhost. This prevents creation of a GUID. Cause was: cloud: cloud java.net.UnknownH
  15. stm32闪存的理解
  16. 2018年阅读书物列表
  17. 电脑无法安装软件打不开计算机,电脑刚安装软件打不开怎么办
  18. 龙族幻想导入数据id_龙族幻想:一键捏脸数据ID 快速捏脸数据ID汇总分享
  19. Mysql 全文检索Demosql
  20. virtual audio cable 虚拟声卡

热门文章

  1. Android 9.0 HIDL接口添加
  2. mtd设备操作、jffs2
  3. linux内核奇遇记之md源代码解读之三
  4. Linux文件系统(七)---系统调用之open操作(二) 之 get_unused_fd
  5. 通过ramdump 分析匿名页导致的TASK_UNINTERRUPTIBLE
  6. 51单片机redefinition_关于c51单片机的一个问题
  7. redis 实战系列二:用python操作redis集群
  8. 回文数 详解(C++)
  9. python---numpy简单用法
  10. Linux问题---------E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)