RocketMQ(四)—— 单机与集群安装

单机安装

前置工作

硬件需求:
  • 64位Linux/Unix/Mac/Windows
  • 4G 及以上磁盘空间
软件需求:
  • 64位 JDK 1.8以上
  • Maven 3.2.x
  • Git

安装:

1. 下载安装包

4.9.2下载地址

2. 下载的包上传至Linux

可通过rz命令上传,其他上传方法参考:如何把文件上传到服务器?

3. 解压

zip格式的压缩需要先下载zip for linux

unzip xxxx
4. 修改初始内存

修改runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m ...... "

修改runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
5.启动

启动NameServer

nohup sh bin/mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log

启动 broker

nohup sh bin/mqbroker -n localhost:9876 & tail -f ~/logs/rocketmqlogs/broker.log
6. 发送、接收消息测试
发送消息
export NAMESRV_ADDR=localhost:9876 
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
7. 关闭Server
[root@mqOS rocketmq]# sh bin/mqshutdown broker 
The mqbroker(1740) is running... 
Send shutdown request to mqbroker(1740) OK 
[root@mqOS rocketmq]# sh bin/mqshutdown namesrv 
The mqnamesrv(1692) is running... 
Send shutdown request to mqnamesrv(1692) OK 
[2]+ 退出 143 nohup sh bin/mqbroker -n localhost:9876

控制台的安装与启动

RocketMQ有一个可视化的dashboard,通过该控制台可以直观查看到许多数据

下载地址

1. 下载zip
2. 修改配置

修改src/main/resources中的application.properties配置文件

  • 端口从8080修改为某不常用端口,如:server.port=7000
  • 指定RocketMQ的name server地址:rocketmq.config.nameserverAddr=mqOS:9876
3. 添加依赖

在解压目录rocketmq-console的pom.xml中添加如下JAXB依赖

<dependency>
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.0</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId> 
    <version>2.3.0</version> 
</dependency> 
<dependency> 
    <groupId>javax.activation</groupId> 
    <artifactId>activation</artifactId> 
    <version>1.1.1</version>
</dependency>

JAXB:Java Architecture for XML Binding,用于xml绑定的Java体系结构,一项可以根据XML模板生成Java类的技术

4. 打包

mvn clean package -Dmaven.test.skip=true

5. 启动

java -jar rocketmq-console-1.0.0.jar

6.访问

输入:ip地址:端口号 进行访问

注意,若为本地虚拟机,则需要注意机器防火墙是否开启,centOS Ubuntu操作

集群安装

架构

搭建一个双主双从异步复制的Broker集群,为了方便,使用两台虚拟机完成搭建,功能与broker角色分配如下:

序号主机名ip功能角色
1RocketMQ 1192.168.15.5NameServer+BrokerMaster1+Slave1
2RocketMQ 2192.168.15.6NameServer+BrokerMaster2+Slave2

安装步骤

修改RocketMQ1配置文件

文件在RocketMQ解压目录的conf/2m-2s-async中

修改broker-a.properties
# 指定整个broker集群的名称,或者说是RocketMQ集群的名称
brokerClusterName=DefaultCluster 
# 指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群 
brokerName=broker-a 
# master的brokerId为0 
brokerId=0
# 指定删除消息存储过期文件的时间为凌晨1点 
deleteWhen=05 
# 指定未发生更新的消息存储文件的保留时长为24小时,24小时后过期,将会被删除 
fileReservedTime=24 
# 指定当前broker为异步复制
master brokerRole=ASYNC_MASTER 
# 指定刷盘策略为异步刷盘 
flushDiskType=ASYNC_FLUSH 
# 指定Name Server的地址 
namesrvAddr=192.168.15.5:9876;192.168.15.6:9876
修改broker-b.properties
brokerClusterName=DefaultCluster 
# 指定这是另外一个master-slave集群 
brokerName=broker-b
# slave的brokerId为非0 
brokerId=1 
deleteWhen=04 
fileReservedTime=24
# 指定当前broker为slave 
brokerRole=SLAVE 
flushDiskType=ASYNC_FLUSH 
namesrvAddr=192.168.15.5:9876;192.168.15.6:9876 
# 指定Broker与producer、consumer通信的端口。默认是10911。
# 由于当前主机同时充当着master1与slave1,而前面的master1使用的是默认端口,需要将这两个端口加以区分,以区分出master1与slave2 
listenPort=11910 
# 指定消息存储相关的路径。默认路径为~/store目录。由于当前主机同时充当着master1与 slave2,master1使用的是默认路径,这里就需要再指定一个不同路径 
storePathRootDir=~/store-s 
storePathCommitLog=~/store-s/commitlog 
storePathConsumeQueue=~/store-s/consumequeue 
storePathIndex=~/store-s/index 
storeCheckpoint=~/store-s/checkpoint 
abortFile=~/store-s/abort
其他配置
#指定整个broker集群的名称,或者说是RocketMQ集群的名称 
brokerClusterName=rocket-MS 
#指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群 
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0 
#nameServer地址,分号分割 
namesrvAddr=nameserver1:9876;nameserver2:9876 
#默认为新建Topic所创建的队列数 
defaultTopicQueueNums=4 
#是否允许 Broker 自动创建Topic,建议生产环境中关闭 
autoCreateTopicEnable=true 
#是否允许 Broker 自动创建订阅组,建议生产环境中关闭 
autoCreateSubscriptionGroup=true 
#Broker对外提供服务的端口,即Broker与producer与consumer通信的端口 
listenPort=10911
#HA高可用监听端口,即Master与Slave间通信的端口,默认值为listenPort+1 
haListenPort=10912 
#指定删除消息存储过期文件的时间为凌晨4点 
deleteWhen=04 
#指定未发生更新的消息存储文件的保留时长为24小时,24小时后过期,将会被删除 
fileReservedTime=24 
#指定commitLog目录中每个文件的大小,默认1G 
mapedFileSizeCommitLog=1073741824 
#指定ConsumeQueue的每个Topic的每个Queue文件中可以存放的消息数量,默认30w条 
mapedFileSizeConsumeQueue=300000 
#在清除过期文件时,如果该文件被其他线程所占用(引用数大于0,比如读取消息),此时会阻止此次删除任务,同时在第一次试图删除该文件时记录当前时间戳。该属性则表示从第一次拒绝删除后开始计时,该文件最多可以保留的时长。在此时间内若引用数仍不为0,则删除仍会被拒绝。不过时间到后,文件将被强制删除 
destroyMapedFileIntervalForcibly=120000 
#指定commitlog、consumequeue所在磁盘分区的最大使用率,超过该值,则需立即清除过期文件
diskMaxUsedSpaceRatio=88 
#指定store目录的路径,默认在当前用户主目录中 
storePathRootDir=/usr/local/rocketmq-all-4.5.0/store
#commitLog目录路径 
storePathCommitLog=/usr/local/rocketmq-all-4.5.0/store/commitlog 
#consumeueue目录路径 
storePathConsumeQueue=/usr/local/rocketmq-all-4.5.0/store/consumequeue 
#index目录路径 
storePathIndex=/usr/local/rocketmq-all-4.5.0/store/index 
#checkpoint文件路径
storeCheckpoint=/usr/local/rocketmq-all-4.5.0/store/checkpoint 
#abort文件路径 
abortFile=/usr/local/rocketmq-all-4.5.0/store/abort 
#指定消息的最大大小 
maxMessageSize=65536 
# Broker的角色 
# - ASYNC_MASTER 异步复制Master 
# - SYNC_MASTER 同步双写Master 
# - SLAVE
brokerRole=SYNC_MASTER 
#刷盘策略 
# - ASYNC_FLUSH 异步刷盘 
# - SYNC_FLUSH 同步刷盘 
flushDiskType=SYNC_FLUSH 
#发消息线程池数量 
sendMessageThreadPoolNums=128 
#拉消息线程池数量 
pullMessageThreadPoolNums=128 
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误 
brokerIP1=192.168.3.105
克隆生成RocketMQ 2

克隆rocketmqOS1主机,并修改配置。指定主机名为rocketmqOS2。

修改RocketMQ2 配置文件

对于rocketmqOS2主机,同样需要修改rocketMQ解压目录的conf目录的子目录2m-2s-async中的两个配置文件。

修改 broker-b.properties
brokerClusterName=DefaultCluster
brokerName=broker-b 
brokerId=0 
deleteWhen=04 
fileReservedTime=24
brokerRole=ASYNC_MASTER 
flushDiskType=ASYNC_FLUSH 
namesrvAddr=192.168.15.5:9876;192.168.15.6:9876
修改 broker-a-s.properties
brokerClusterName=DefaultCluster 
brokerName=broker-a 
brokerId=1 
deleteWhen=04 
fileReservedTime=24 
brokerRole=SLAVE 
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.15.5:9876;192.168.15.6:9876 
listenPort=11910 
storePathRootDir=~/store-s 
storePathCommitLog=~/store-s/commitlog 
storePathConsumeQueue=~/store-s/consumequeue 
storePathIndex=~/store-s/index
storeCheckpoint=~/store-s/checkpoint 
abortFile=~/store-s/abort
启动服务器
启动NameServer集群

分别启动rocketmq1与rocketmq2两个主机中的NameServer。启动命令完全相同

nohup sh bin/mqnamesrv & 
tail -f ~/logs/rocketmqlogs/namesrv.log 
启动两个Master

分别启动rocketmqOS1与rocketmqOS2两个主机中的broker master。注意,它们指定所要加载的配置文件是不同的。

nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &
tail -f ~/logs/rocketmqlogs/broker.log
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties & 
tail -f ~/logs/rocketmqlogs/broker.log
启动两个Slave

分别启动rocketmq1与rocketmq2两个主机中的broker slave。注意,它们指定所要加载的配置文件是不同的。

nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties & 
tail -f ~/logs/rocketmqlogs/broker.log
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties & 
tail -f ~/logs/rocketmqlogs/broker.log

mqadmin命令

在mq解压目录的bin目录下有一个mqadmin命令,该命令是一个运维指令,用于对mq的主题,集群,broker 等信息进行管理。

修改bin/tools.sh

在运行mqadmin命令之前,先要修改mq解压目录下bin/tools.sh配置的JDK的ext目录位置。本机的ext目录在/usr/java/jdk1.8.0_161/jre/lib/ext

  • 使用vim命令打开tools.sh文件,并在JAVA_OPT配置的-Djava.ext.dirs这一行的后面添加ext的路径。
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m - XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m" 
JAVA_OPT="${JAVA_OPT} - Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ ext:/usr/java/jdk1.8.0_161/jre/lib/ext" 
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}" 123

运行mqadmin

直接运行该命令,可以看到其可以添加的commands。通过这些commands可以完成很多的功能

./bin/mqadmin

官网命令说明

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

稷下学员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值