热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RocketMQ安装部署教程详解

RocketMQ安装部署教程详解Linux环境OS:Ubuntu16.04LTSx64系统配置:1C2G5MRocketMQ:4.5.2JDK:1.8.0_201Maven:3.6

RocketMQ 安装部署教程详解


Linux 环境



  • OS: Ubuntu 16.04 LTS x64

  • 系统配置: 1C/2G/5M

  • RocketMQ: 4.5.2

  • JDK: 1.8.0_201

  • Maven: 3.6.1

  • Git


1. 安装 git


apt-get update
apt install -y git


2. 安装 jdk8u201


wget http://lzmx.oss-cn-shanghai-internal.aliyuncs.com/soft/jdk-8u201-linux-x64.tar.gz
mkdir -p /opt/java && tar -zxvf jdk-8u201-linux-x64.tar.gz -C /opt/java/
echo ‘export JAVA_HOME=/opt/java/jdk1.8.0_201‘ >> /etc/profile
echo ‘export PATH=$JAVA_HOME/bin:$PATH‘ >> /etc/profile
source /etc/profile
java -version


3. 安装 maven3.6.1


wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip
apt install unzip
unzip apache-maven-3.6.1-bin.zip -d /opt/java
echo ‘export MAVEN_HOME=/opt/java/apache-maven-3.6.1‘ >> /etc/profile
echo ‘export PATH=${MAVEN_HOME}/bin:${PATH}‘ >> /etc/profile
source /etc/profile
mvn -version

建议替换源为阿里源,替换好的配置文件如下


rm -rf /opt/java/apache-maven-3.6.1/conf/settings.xml
wget -P /opt/java/apache-maven-3.6.1/conf http://lzmx.oss-cn-shanghai-internal.aliyuncs.com/tmp/settings.xml

没有的同学可以手动替换 setting.xml 中的 mirror 加快下载依赖的速度



aliMaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central


4. 安装 tmux

安装 tmux 主要是为了终端复用,方便后续安装,不装也没关系


apt install -y tmux


5. 部署 RocketMQ


克隆远程仓库


git clone https://github.com/apache/rocketmq.git


编译RocketMQ

阿里云1C2G机器大概编译需要3-5分钟的样子,还是很快的。


cd rocketmq
mvn -Prelease-all -DskipTests clean install -U

将编译完的程序移出,例如移到 /root/rocketmq 目录下


cp distribution/target/rocketmq-4.5.2.tar.gz /root
# 删除源码包
rm -rf rocketmq
# 解压打包好的文件
tar zxvf rocketmq-4.5.2.tar.gz
mv rocketmq-4.5.2 rocketmq
cd rocketmq


环境变量设置

这里我临时放在 /root 目录下了,可以根据自己的需要替换这个位置


echo ‘export ROCKETMQ_HOME=/root/rocketmq‘ >> /etc/profile
echo ‘export PATH=$ROCKETMQ_HOME/bin:$PATH‘ >> /etc/profile

使环境变量生效


source /etc/profile


增加运行权限

进入 rocketmq 文件夹,增加运行权限


cd rocketmq/bin
chmod +x *


修改默认启动配置

修改默认配置。由于RocketMQ默认配置要求很高,开始启动前需要先修改这些参数。

否则的话,我们很有会遇到内存分配或者不够的问题(memory alloc failed)。



  • 修改 bin/runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=320m"

  • 修改 bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

  • 修改 bin/tools.sh JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=128m"


运行 namesrv 节点

都修改完成了之后可以开始运行 namesrv 了,这里建议用 tmux 复用终端方便管理


sh mqnamesrv
注:后台启动方式




  1. nohup sh bin/mqnamesrv &



出现 The Name Server boot success. serializeType=JSON 表示 namesrv 启动成功


运行 broker 节点

接下来启动 broker 节点,单机跑的话可能会产生如下报错


[main] ERROR RocketmqCommon - Failed to obtain the host name
java.net.UnknownHostException: iZowsledoqslnrZ: iZowsledoqslnrZ: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1506) ~[na:1.8.0_201]
at org.apache.rocketmq.common.BrokerConfig.localHostName(BrokerConfig.java:185) [rocketmq-common-4.5.2.jar:4.5.2]
at org.apache.rocketmq.common.BrokerConfig.(BrokerConfig.java:38) [rocketmq-common-4.5.2.jar:4.5.2]
at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:110) [rocketmq-broker-4.5.2.jar:4.5.2]
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58) [rocketmq-broker-4.5.2.jar:4.5.2]
Caused by: java.net.UnknownHostException: iZowsledoqslnrZ: Name or service not known
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_201]
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929) ~[na:1.8.0_201]
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324) ~[na:1.8.0_201]
at java.net.InetAddress.getLocalHost(InetAddress.java:1501) ~[na:1.8.0_201]
... 4 common frames omitted
The broker[DEFAULT_BROKER, 172.17.10.236:10911] boot success. serializeType=JSON and name server is localhost:9876

根据报错 Name or service not known 可知,这是由于启动的时候找不到自己的主机名对应的ip地址而造成的,只需要让在 /etc/hosts 中添加 127.0.0.1 iZowsledoqslnrZ,注意是主机名


echo ‘127.0.0.1 iZowsledoqslnrZ‘ >> /etc/hosts

重新启动 broker 节点。


sh mqbroker -n localhost:9876 autoCreateTopicEnable=true
后台启动方式:
nohup bash bin/mqbroker -n 192.168.158.147:9876 &

 

启动成功出现如下提示 The broker[localhost, 172.17.10.236:10911] boot success. serializeType=JSON


测试环境

跑一个测试看看,生产者/消费者测试


sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer


关闭所有服务器


sh bin/mqshutdown broker
sh bin/mqshutdown namesrv


安装管理面板


git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
cd target
cp rocketmq-console-ng-1.0.1.jar ~/rocketmq-console.jar
cd ~
java -jar rocketmq-console.jar --server.port=8080 --rocketmq.config.namesrvAddr=localhost:9876


常见错误



  1. 启动Name Server的时候报: Please set the ROCKETMQ_HOME variable in your environment! 配置一下ROCKETMQ_HOME的环境变量。

  2. 启动Broker的时候报找不到主类JDK,修改runbroker.cmd第40行 set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%"" 原来的%CLASSPATH%少了双引号。

  3. 启动Producer报错 org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <172.17.0.1:10909> failed 多种原因:



  • 检查IP地址,经检查对应服务器安装有其他网桥,将其卸载即可

  • 在Producer中将VIP通道关闭:producer.setVipChannelEnabled(false);



  1. 启动Producer报错 org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest2



  • Broker没有正确连接到Name Server 或

  • Producer没有正确连接到Name Server 或

  • Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic 默认配置启动broker时autoCreateTopicEnable=true已设置,所以检查连接即可。


推荐阅读
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
author-avatar
男人要走火_293
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有