RocketMQ服务端安装

说明

为了尽量模拟实际应用场景,我们以集群的方式安装RocketMQ。从RocketMQ的组成中可以知道,RocketMQ包括Producer、Consumer、Name Server和Broker四个部分,但Producer和Consumer属于客户端,所以服务端安装只需要安装Namer Server和Broker即可。

环境准备

服务器:三台CentOS 7.4 64位系统的虚拟机,IP分别为:192.168.6.130、192.168.6.131、192.168.6.132
jdk:jdk-8u181
RocketMQ:RocketMQ-4.9.1二进制发布包。下载地址:http://rocketmq.apache.org/dowloading/releases/

安装架构图

在这里插入图片描述

Name Server安装

1、将下载的RocketMQ安装包rocketmq-all-4.9.1-bin-release.zip上传到192.168.6.130服务器的/usr/local/deploy/rocketmq目录,并运行unzip rocketmq-all-4.9.1-bin-release.zip进行解压。解压后得到rocketmq-all-4.9.1-bin-release文件夹。
2、运行mv rocketmq-all-4.9.1-bin-release rocketmq-4.9.1对文件夹进行重命名。
在这里插入图片描述
3、Name Server默认启动端口为9876,配置参数可以在启动时通过命令参数方式指定,但我个人更喜欢通过配置文件的方式进行配置,这样更方便管理。在RocketMQ的配置目录conf下建立namesrv文件夹,用以专门放置Name Server的配置文件。由于在官网上没有找到Name Server的配置项说明,所以我在网上从其他博主的博客中拷贝Namer Server的配置,整理到namesrv.properties配置文件中,主要配置项包括RocketMQ的HOME目录、配置文件路径、监听端口、线程配置、缓存配置等。将namesrv.properties配置文件上传到namesrv目录下
在这里插入图片描述
4、创建/usr/local/deploy/rocketmq/rocketmq-4.9.1/log/namesrv目录,该目录下存储Name Server运行日志。
5、进入/usr/local/deploy/rocketmq/rocketmq-4.9.1/bin目录,mqnamesrv就是Name Server启停的命令,先运行下sh mqnamesrv -h看看该命令支持哪些参数
在这里插入图片描述
可以看到,可以使用-c指定Name Server启动的配置文件路径。
6、运行nohup sh mqnamesrv > /usr/local/deploy/rocketmq/rocketmq-4.9.1/log/namesrv/namesrv.log 2>&1 &启动Name Server。启动后Name Server是已后台进程的方式运行。
7、运行ps -ef | grep namesrv查看Name Server是否启动成功
在这里插入图片描述
8、查看下Name Server的启动日志
在这里插入图片描述
9、可见,经过以上步骤,第一台服务器的Name Server就启动成功了。其余两台也用同样的步骤进行启动。
10、停止Name Server:sh mqshutdown namesrv
在这里插入图片描述

Broker安装

Broker有Master和Slave两种角色。Master broker支持读和写,Slave broker只支持读。

为了部署一个高可用的RocketMQ集群,同样Broker需要以集群方式部署。Broker集群需要部署一系列的Broker集,每个Broket集包含一个brokerId为0的Master节点和若干个brokerId非0的Slave节点。一个Broker集里的所有Broker都有一个相同的brokerName且至少要部署两个Broker实例(包括Master)。

RockerMQ已经为我们提供了Broker配置的模板,配置文件位于安装包的conf目录内。这里我们采用多主多从、异步复制的模式,所以会使用到2m-2s-async目录内的配置文件。由于我们有3台虚拟机,所以部署一个3主3从的Broker集群。

1、先在192.168.6.130服务器上配置Broker。为了不影响原来的配置文件,我们在conf目录下新建一个3m-3s-async目录,并将2m-2s-async目录的broker-a.properties 、broker-a-s.properties文件拷贝一份到3m-3s-async目录下,重命名一下
在这里插入图片描述
2、broker-a-m.properties配置如下

#Borker监听端口
listenPort=10911
#Name Server地址
namesrvAddr=192.168.6.130:9876;192.168.6.131:9876;192.168.6.132:9876
#Broker所属集群名称
brokerClusterName=DefaultCluster
#Broker名称
brokerName=broker-a
#BrokerId,Master为0,Slave为非0
brokerId=0#设置BrokerIP
brokerIP1=192.168.6.130
#存储根路径
storePathRootDir=/usr/local/deploy/rocketmq/rocketmq-4.9.1/a-m-store
#Commit Log存储路径
storePathCommitLog=/usr/local/deploy/rocketmq/rocketmq-4.9.1/a-m-store/commitlog
#Consumer queue存储路径
storePathConsumerQueue=/usr/local/deploy/rocketmq/rocketmq-4.9.1/a-m-store/consumequeue
#Commit Log文件最大大小,默认1024 * 1024 * 1024(1G)
mapedFileSizeCommitLog=1073741824
#何时删除过期的Commit Log,默认凌晨4点
deleteWhen=04
#Commit Log生存时间,单位小时,默认72小时,即3天
fileReservedTime=72
#Broker角色,异步Master(ASYNC_MASTER)/同步Master(SYNC_MASTER)/SLAVE
brokerRole=ASYNC_MASTER
#数据刷新到磁盘方式,同步(SYNC_FLUSH)/异步(ASYNC_FLUSH),默认异步方式
#同步刷新:在响应客户端之前就会把Message刷新到磁盘
flushDiskType=ASYNC_FLUSH

3、broker-c-s.properties配置如下

#Borker监听端口
listenPort=10932
#Name Server地址
namesrvAddr=192.168.6.130:9876;192.168.6.131:9876;192.168.6.132:9876
#Broker所属集群名称
brokerClusterName=DefaultCluster
#Broker名称
brokerName=broker-c
#BrokerId,Master为0,Slave为非0
brokerId=1
#设置BrokerIP
brokerIP1=192.168.6.130
#存储根路径
storePathRootDir=/usr/local/deploy/rocketmq/rocketmq-4.9.1/c-s-store
#Commit Log存储路径
storePathCommitLog=/usr/local/deploy/rocketmq/rocketmq-4.9.1/c-s-store/commitlog
#Consumer queue存储路径
storePathConsumerQueue=/usr/local/deploy/rocketmq/rocketmq-4.9.1/c-s-store/consumequeue
#Commit Log文件最大大小,默认1024 * 1024 * 1024(1G)
mapedFileSizeCommitLog=1073741824
#何时删除过期的Commit Log,默认凌晨4点
deleteWhen=04
#Commit Log生存时间,单位小时,默认72小时,即3天
fileReservedTime=72
#Broker角色,异步Master(ASYNC_MASTER)/同步Master(SYNC_MASTER)/SLAVE
brokerRole=SLAVE
#数据刷新到磁盘方式,同步(SYNC_FLUSH)/异步(ASYNC_FLUSH),默认异步方式
#同步刷新:在响应客户端之前就会把Message刷新到磁盘
flushDiskType=ASYNC_FLUSH

4、另外两台虚拟机参考以上进行配置,但需要注意修改配置文件名、创建对应的文件夹、修改存储地址和修改Broker的名称。
5、依次启动三台服务的Master,再启动Slave:
启动Master:sh mqbroker -c …/conf/3m-3s-async/broker-a-m.properties > /usr/local/deploy/rocketmq/rocketmq-4.9.1/log/broker/broker-a-m.log 2>&1 &
启动Slave:sh mqbroker -c …/conf/3m-3s-async/broker-c-s.properties > /usr/local/deploy/rocketmq/rocketmq-4.9.1/log/broker/broker-c-s.log 2>&1 &
6、按照部署规划,一台虚拟机需要部署一个Name Server和两个Broker实例,如果虚拟机内存不够,可能会导致服务无法完整启动,所以如果出现内存不够的情况,可以修改Name Server和Broker的内存占用。
修改Name Server内存配置:修改bin目录下的runserver.sh文件,我自己机配成Xmx/Xmn=1G,Xmn=512m。
在这里插入图片描述
修改Broker内存配置:修改bin目录下的runbroker.sh文件,默认为8g,我自己机配成Xmx/Xmn=512M
在这里插入图片描述
6、停止Broker:sh bin/mqshutdown broker

查看集群节点情况

1、命令行查看:在bin目录下运行sh mqadmin clusterList -n “192.168.6.130:9876;192.168.6.131:9876;192.168.6.132:9876”,可以看到当前集群的节点信息
在这里插入图片描述
2、管理控制台查看
(1)、从网上找一个RocketMQ控制台的源码(由于github上的是旧的,我是从网友的网盘找了一个。如果找不到可以在这里下载:rocketmq-console),使用Maven进行编译,将编译好的jar包上传到服务器。

(2)、配置配置文件,配置项不多说,比较简单,主要配置RocketMQ的NameServer地址

server.contextPath=
server.port=8080
#spring.application.index=true
spring.application.name=rocketmq-console
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
logging.config=classpath:logback.xml
#if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876
rocketmq.config.namesrvAddr=192.168.6.130:9876
#if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
rocketmq.config.isVIPChannel=
#rocketmq-console's data path:dashboard/monitor
rocketmq.config.dataPath=/tmp/rocketmq-console/data
#set it false if you don't want use dashboard.default true
rocketmq.config.enableDashBoardCollect=true
#set the message track trace topic if you don't want use the default one
rocketmq.config.msgTrackTopicName=

(3)、启动项目,浏览器访问http://ip:port即可进入RocketMQ管理控制台
在这里插入图片描述

问题

1、启动遇到“Lock failed,MQ already started”错误,这是在一台服务器启动了多个Broker,但是使用了同样的存储目录,只需要为不同的Broker配置不同的存储目录即可。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乐观男孩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值