RocketMQ 集群安装

258 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

1. 安装 JDK

JDK 1.8下载可到官网下载,需要注册,也可以点击下面的附件下载。

JDK 安装,参考:wangxiaoming.blog.csdn.net/article/det…

也可以参考:www.cnblogs.com/wenbinshen/…

验证是否安装成功

$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode

安装 RocketMQ

咱们将 RocketMQ 安装到 Linux 系统 /opt目录下

下载

RocketMQ 下载地址:github.com/apache/rock…

cd /opt
wget https://github.com/apache/rocketmq/archive/rocketmq-all-4.6.0.zip

github 下载速度一般会很慢,可以通过国内镜像下载:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-bin-release.zip 

解压

unzip rocketmq-all-4.6.0-bin-release.zip

解压目录说明:

rocketmq-all-4.6.0-bin-release
├── benchmark #性能测试脚本
├── bin       #命令行工具
├── conf      #配置文件目录
├── lib       #依赖的第三方类库
├── LICENSE
├── NOTICE
└── README.md

rocket 环境变量设置

设置ROKCKET_HOME环境变量:

查看安装目录

$ pwd
/opt/rocketmq-all-4.6.0-bin-release

创建一个软连接,方便后续升级

sudo ln -s /opt/rocketmq-all-4.6.0-bin-release rocketmq

修改 /etc/profile

export ROCKETMQ_HOME=/opt/rocketmq

使得环境变量生效

source /etc/profile

验证环境变量生效

$ echo $ROCKETMQ_HOME
/opt/rocketmq

启动 NameServer

NameServer 通过 bin 目录下 mqnamesrv 脚本启动,其内部 bin 目录下的一个脚本 runserver.sh 启动后会占用 4G 内存。

修改runserver.sh 脚本,内存占用4G太大,修改。

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

修改下

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn500m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

启动 nameServer.sh

$ nohup sh bin/mqnamesrv & 

看下是否启动成功: 验证方式1:

$ jps -l
3961157 sun.tools.jps.Jps
3953057 org.apache.rocketmq.namesrv.NamesrvStartup  #NameServer进程

验证方式2:NameServer默认监听9876端口,

$ lsof -iTCP -nP | grep 9876
java    3953057 tianshouzhi.robin   65u  IPv6 134849198      0t0  TCP *:9876 (LISTEN)

设置NAMESRV_ADDR环境变量,修改etc/profile,添加以下内容

export NAMESRV_ADDR=localhost:9876 

执行source /etc/profile使得其生效

启动 Broker

${ROCKETMQ_HOME}/conf目录下,提供了我们讲解到的RocketMQ四种部署模式的demo配置文件,如下所示:

conf
├── 2m-2s-async  //多Master 多 Slave 模式,异步复制 
│   ├── broker-a.properties
│   ├── broker-a-s.properties
│   ├── broker-b.properties
│   └── broker-b-s.properties
├── 2m-2s-sync //多 Master 多 Slave 模式,同步复制 
│   ├── broker-a.properties
│   ├── broker-a-s.properties
│   ├── broker-b.properties
│   └── broker-b-s.properties
├── 2m-noslave //多Master模式
│   ├── broker-a.properties
│   ├── broker-b.properties
│   └── broker-trace.properties
└── broker.conf //单Master模式

单 master 启动

单 master 模式可以使用 conf 目录下 broker.conf 配置

#集群名称
brokerClusterName=single-master
#broker分组名称
brokerName=broker-a
#nameserver地址
namesrvAddr=127.0.0.1:9876
#brokerId,因为是master节点,所以这里设置为0
brokerId=0
#监听地址,如果是本地启动那么添加此行
brokerIP1=127.0.0.1
#监听端口
listenPort=10911
#rocketmq定时清除
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=48
#broker角色,异步复制
brokerRole=ASYNC_MASTER
#异步刷盘
flushDiskType=ASYNC_FLUSH
#存储目录
storePathRootDir=/data/rocketmq/single-master/broker-a/store
storePathCommitLog=/data/rocketmq/single-master/broker-a/store/commitlog

启动通过bin目录下的mqbroker脚本。由于默认的配置,启动后会立即占用8G内存,如果机器内存不够,可以修改bin/runbroker.sh,找到以下这一行:

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

修改为

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn500m"

启动 broker

$ nohup sh bin/mqbroker -c conf/broker.conf &

验证是否启动成功

jps -l
3961157 sun.tools.jps.Jps
3960977 org.apache.rocketmq.broker.BrokerStartup
3953057 org.apache.rocketmq.namesrv.NamesrvStartup

brokerServer 默认监听端口 10911,可以通过一下方式验证。

$ lsof -iTCP -nP | grep 10911
java    37686 tianshouzhi.robin  107u  IPv6 137040246      0t0  TCP *:10911 (LISTEN)

如果启动失败,查看

~/logs/rocketmqlogs/broker.log

测试发送消息

$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer 
SendResult [sendStatus=SEND_OK, msgId=FDBDDC0300FF00010001022700120225003C3D4EAC696720298203E7, offsetMsgId=AC11000100002A9F0000000000037567, messageQueue=MessageQueue [topic=TopicTest, brokerName=broker-a, queueId=3], queueOffset=249]

测试消费消息

$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt… 

查询集群信息

$ sh bin/mqadmin clusterList -n localhost:9876
#Cluster Name    #Broker Name   #BID        #Addr           #Version   #...(略)
single-master    broker-a      0        192.168.1.3:10911     V4_6_0    ... 

关闭 broker 集群

bin目录安装包下有一个mqshutdown脚本,可以关闭 Broker 关闭脚本

$ sh bin/mqshutdown broker

总结

介绍了 rocketMQ 集群的部署方式,主要是启动 NameServer 和 单 master broker 集群