美文网首页
架构运维篇(五):Centos7/Linux中安装RocketM

架构运维篇(五):Centos7/Linux中安装RocketM

作者: IT实战联盟Lin | 来源:发表于2019-07-05 17:54 被阅读0次

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

    RocketMQ

    版本说明

    • 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 use
        at 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 namesrv
    sh mqshutdown broker
    

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

    搭建RocketMQ监控平台

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

    第一步:下载项目

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

    GitHub下载
    第二步:修改配置文件

    打开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里面进行修改和打包操作。

    rocketmq-console打包
    第四步:上传jar到服务器并启动项目

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

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

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


    8.pic.jpg

    总结

    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 &
    

    3、RocketMQ 设置 brokerIP1 无效,默认会找到内网 的地址,导致无法连接到broker
    修改配置

    在conf/broker.conf 中 加入 brokerIP1=你的公网IP
    

    启动broker

    nohup sh bin/mqbroker -n 你的公网IP:9876 -c conf/broker.conf autoCreateTopicEnable=true &
    

    4、rocketmq-console报错RemotingConnectException: connect to xx failed
    原因:端口没有开放,一般的做法是开放一段端口区域,例如:

    放行端口:[10000-20000]
    

    贡献者

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

    相关文章

      网友评论

          本文标题:架构运维篇(五):Centos7/Linux中安装RocketM

          本文链接:https://www.haomeiwen.com/subject/cqamoqtx.html