一、环境:

centos7(2台虚拟机):192.168.64.123;192.168.64.125

apache-maven-3.2.5(官网要求maven版本是3.2.x,版本不同,编译rocketmq时可能会有问题)

rocketmq-all-4.4.0

jdk1.8.0_161

二、安装maven

设置jdk、maven环境变量 vim  /etc/profile  ,添加如下代码,然后  source /etc/profile

(此处省略安装步骤~)

export JAVA_HOME=/opt/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar MAVEN_HOME=/opt/apache-maven-3.2.5
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

检查jdk、maven安装是否成功

[root@nameserver1 conf]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
[root@nameserver1 conf]# mvn -v
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-15T01:29:23+08:00)
Maven home: /opt/apache-maven-3.2.5
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: /opt/jdk1.8.0_161/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"

三、 安装rocketmq

参考官网  http://rocketmq.apache.org/docs/quick-start/

1、下载,解压文件: unzip rocketmq-all-4.4.0-source-release.zip,结果目录如下图

[root@nameserver2 opt]# ls
apache-maven-3.2.5  apache-maven-3.2.5-bin.tar.gz  jdk1.8.0_161  rh  rocketmq-all-4.4.0  rocketmq-all-4.4.0-source-release.zip

2、安装rocketmq

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

在执行最后一步的时候会去maven下载相关文件,境外网址下载比较慢。可以使用maven的国内镜像

修改maven的setting.xml文件

cd /opt/apache-maven-3.2.5/conf/
vim settings.xml

setting.xml

<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>

编译有点慢,成功后结果如下图

进到目录 cd distribution/target/apache-rocketmq

单个Master模式

启动namesrv服务:nohup sh bin/mqnamesrv &  (停止服务sh bin/mqshutdown namesrv)

启动Broker:nohup sh bin/mqbroker -n localhost:9876 &  (停止服务 sh bin/mqshutdown broker)

或者指定配置nohup bin/mqbroker -n 192.168.64.123:9876 autoCreateTopicEnable -c conf/broker.conf &

查看启动结果,通过进程、jps命令或者通过namesrv.log、broker.log日志查看

四、测试 

#发送消息(在发送/接收消息之前,我们需要告诉客户端名称服务器的位置)
[root@nameserver1 apache-rocketmq]# export NAMESRV_ADDR=localhost:9876
[root@nameserver1 apache-rocketmq]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer SendResult [sendStatus=SEND_OK, msgId=C0A8407B235F7D4991AD17087E7B00BB, offsetMsgId=C0A8407B00002A9F00000000000341C0, messageQueue=MessageQueue [topic=TopicTest, brokerName=nameserver1, queueId=1], queueOffset=296] #接收消息
[root@nameserver1 apache-rocketmq]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer ConsumeMessageThread_17 Receive New Messages: [MessageExt [queueId=2, storeSize=180, queueOffset=276, sysFlag=0, bornTimestamp=1583378432308, bornHost=/192.168.64.123:38275, storeTimestamp=1583378432311, storeHost=/192.168.64.123:10911, msgId=C0A8407B00002A9F0000000000030764, commitLogOffset=198500, bodyCRC=124332375, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=298, CONSUME_START_TIME=1583378851971, UNIQ_KEY=C0A8407B235F7D4991AD17087D340068, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 48, 52], transactionId='null'}]]

五、问题

启动时没有9876进程或者namesrv.log、broker.log 说明启动失败了,查看nohup.out 发下提示 "Cannot allocate memory"

根据本机的内存,修改为合适大小即可

cd distribution/target/apache-rocketmq
vim bin/runserver.sh
## 原来的是
#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
## 修改成
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=640m"

 vim bin/runbroker.sh
  ## 原来的是
  #JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
  ## 修改成
  JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m"

双master模式

master1:192.168.64.123 编辑conf/2m-noslave/broker-a.properties, 追加namesrv字段和对应服务地址(这里只做简单的配置,其他配置可以网上搜索)

[root@nameserver1 conf]# cd 2m-noslave/
[root@nameserver1 2m-noslave]# pwd
/opt/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/conf/2m-noslave
[root@nameserver1 2m-noslave]# ls
broker-a.properties broker-b.properties broker-trace.properties
[root@nameserver1 2m-noslave]# vim broker-a.properties
namesrvAddr=192.168.64.123:9876;1972.168.64.125:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

master2:192.168.64.125 编辑conf/2m-noslave/broker-b.properties,配置同master1

namesrvAddr=192.168.64.123:9876;1972.168.64.125:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

分别启动namsrv、broker

[root@nameserver1 apache-rocketmq]# nohup sh bin/mqnamesrv &
[root@nameserver1 apache-rocketmq]# nohup bin/mqbroker -c conf/2m-noslave/broker-a.properties &

[root@nameserver2 apache-rocketmq]# nohup sh bin/mqnamesrv &
  [1] 12144
  [root@nameserver2 apache-rocketmq]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@nameserver2 apache-rocketmq]# nohup bin/mqbroker -c conf/2m-noslave/broker-b.properties &
  [1] 5496
  [root@nameserver2 apache-rocketmq]# nohup: 忽略输入并把输出追加到"nohup.out"

查看集群状态

[root@nameserver1 apache-rocketmq]# sh bin/mqadmin clusterlist -n 192.168.64.123:9876;192.168.64.125:9876
MaxPermSize=128m; support was removed in 8.0
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
DefaultCluster broker-a 0 192.168.64.123:10911 V4_4_0 0.00(0,0ms) 0.00(0,0ms) 0 440019.25 0.8596
DefaultCluster broker-b 0 192.168.64.125:10010 V4_4_0 0.00(0,0ms) 0.00(0,0ms) 0 440019.25 -1.0000

rocketmq控制台安装和demo测试就略过了,可以上网查下~

补充一点bin的地址是 distribution/target/apache-rocketmq/bin

Linux下安装配置rocketmq (单个Master、双Master)的更多相关文章

  1. Linux下安装配置rocketmq

    1.安装jdk,如果系统有原来的系统自带的先删掉,因为很多库不全,自己需要到jdk官网下载包. 卸载CentOS自带的OpenJdk: [root@centos-lx /]# rpm -qa | gr ...

  2. Kali Linux 下安装配置MongoDB数据库 ubuntu 下安装配置MongoDB源码安装数据库

    Kali Linux 下安装配置MongoDB数据库   1.下载mongodb.tgz 压缩包: 2.解压到:tar -zxvf mongodb.tgz /usr/local/mongodb 3.创 ...

  3. Linux 下安装配置 JDK7

    Linux 下安装配置 JDK7 配置环境(debian 7) 自从从Oracle收购Sun近三年来,已经有很多变化.早在8月,甲骨文将“Operating System Distributor Li ...

  4. (转载)Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记

    Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记 Linux下配LMAP环境,花了我好几天的时间.之前没有配置过,网上的安装资料比较混乱,加上我用的版本问题,安装过程 ...

  5. linux 下安装配置jboss as7以及部署应用

    linux 下安装配置jboss as7以及部署应用 1.测试平台及软件 centos 5.4 jdk-7u5-linux-i586.rpm jboss-as-7.1.1.Final.zip jbos ...

  6. Linux下安装配置与使用MySQL数据库

    Linux下安装配置与使用MySQL数据库 在Linux下安装做开发时往往少不了要使用到MySQL数据库,下面就Linux系统为例讲解一下,如何安装MySQL数据库,如何启用/停.止MySQL服务,如 ...

  7. 在linux下安装配置rabbitMQ详细教程

    在linux下安装配置rabbitMQ详细教程 2017年12月20日 17:34:47 阅读数:7539 安装Erlang 由于RabbitMQ依赖Erlang, 所以需要先安装Erlang. Er ...

  8. Linux下安装配置MySQL5.7服务器

    Linux下安装配置MySQL服务器 一.安装环境 ============ OS:centos6.8 MySQL:mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz ...

  9. Linux下安装配置Jmeter5.1,并执行jmx文件

    Windows下的jmeter是GUI模式,可查看操作,但是GUI对性能的干扰比较大,所有一般压测会在Linux上运行. 下面是Linux下安装配置Jmeter5.1,并执行jmx文件的步骤, 一.安 ...

随机推荐

  1. 树莓派了解Linux基本命令

    本节我们来了解一些基本的Linux命令(在树莓派上操作),看完之后,当你再面对Linux黑黑的命令框时至少不会不知所措,你可以用这些基本的命令完成一些需要的操作,比如查找.编辑.查看文件,查看基本的系 ...

  2. 移动端 better-scroll基础

    一.什么是better-scroll better-scroll 是一款重点解决移动端(已支持 PC)各种滚动场景需求的插件 #滚动原理 1. 与浏览器滚动原理一致,父容器高度固定,子元素内容撑开,必 ...

  3. Python高级语法-深浅拷贝-总结(4.2.1)

    @ 目录 1.说明 2.代码 关于作者 1.说明 任何可变数据类型都牵扯到深浅拷贝 但是元组,常数等,不可变数据类型,无论浅拷贝,深拷贝都是指向 不管如何嵌套,一旦牵扯到可变数据类型,都会有深浅区别 ...

  4. pandas的学习8-pandas-plot出图

    import pandas as pd import numpy as np import matplotlib.pyplot as plt ''' 这次我们讲如何将数据可视化. 首先import我们 ...

  5. Angular *ngIf length

    Angular *ngIf length 在Angular中如何判断*ngIf Arrary的长度? 具体代码如下: result = []; <div class="kt-secti ...

  6. 版本控制比较cvs,svn,git

    版本控制比较cvs,svn,git 几个重要概念: 版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式.在客户端/服务器模式下,每一用户 ...

  7. 发送微信通知 java 实现

    /实现类 @Service public class WeChatServiceImpl implements IWeChatService { @Override public WeChatSend ...

  8. 史上最全java里面的锁

    什么是锁 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制.锁旨在强制实施互斥排他.并发控制策略. 锁通常需要硬件支持才能有效实施.这 ...

  9. Arduino IDE 开发ESP-01/ESP8266-01读取DHT11温度湿度传感器

    引脚接线: DHT11---ESP8266-01 Singnal--IO2, GND----GND, VCC----VCC DHT11引脚说明: ESP8266-01/ESP8266-01S引脚说明: ...

  10. java图像开发学习——JTable之导入数据库

    package demo; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.MouseAd ...