rocketMq-安装部署-笔记

一、下载 

官方文档以及下载地址:

本地部署 RocketMQ | RocketMQ

下载二进制包即可:

rocketmq-all-5.2.0-bin-release.zip

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

二、MQ结构

三、部署模式

注意:同一机器部署多节点,需要修改broker端口和数据目录。

1、单机模式

即一个服务,一般是单台机器部署,当服务器宕机时,服务不可用。

1.1、单节点模式

单个broker和proxy,测试环境使用本模式。注意:broker节点故障时,服务不可用。

1.2、多节点模式

多个主broker,配置简单,性能最高,当一个broker宕机时,服务仍可用,消息不丢失。

1.3、主从异步模式

即主从复制模式,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:

  • 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;
  • 缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

 1.4、主从同步模式

即主从同写模式,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:

  • 优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;
  • 缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的RT会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。

2、集群模式

多个机器部署,组成集群,当某个机器宕机时,其他服务器可用,建议生产环境使用。

例如:

1、配置文件方式写法:

namesrvAddr=192.168.0.137:9876;192.168.0.138:9876

2、命令行方式:

nohup sh bin/... -n 192.168.0.137:9876;192.168.0.138:9876 -c ...

四、配置

1、环境变量设置

根据需要设置,如果不设置,后面的启动命令使用绝对路径或相对路径。

# 这里设置到用户级别的环境变量

vi .bash_profile

export ROCKETMQ_HOME=/home/software/rocketmq

PATH=$PATH:$HOME/bin:$ROCKETMQ_HOME/bin

# 生效配置

source .bash_profile

# 检查配置是否生效

env

  

2、配置解析

broker集群名称,用于划分broker

brokerClusterName=MQCluster001

#broker名称,用于主从配对,相同名称的broker才能做主从设置

brokerName=mq_broker_1

#用于标识主从关系,0为主,其他大于0的为从(不能小于0)master设置0,slave设置1。#Master角色的Broker支持读和写,Slave角色的Broker仅支持读,也就是Producer只能和#Master角色的Broker连接写人消息:Consumer可以连接Master角色的Broker,也可以连

#接Slave角色的Broker来读取消息。Master节点设置

brokerId=0

#Slave节点设置

#brokerId=1

#name server服务器地址及端口,可以是多个,分号隔开,可省略,在启动命令上标识即可

namesrvAddr=192.168.0.13700:9876

#创建topic时,若未指定topic下的队列数,则取该默认值作为默认队列数

defaultTopicQueueNums=8

#是否自动创建默认topic,生产需保持关闭

autoCreateTopicEnable=true

#是否自动创建topic的订阅组,默认开启

autoCreateSubscriptionGroup=true

#broker服务监听端口

listenPort=10911

#未消费的持久化消息清理时间点

deleteWhen=04

#持久化消息保存周期(单位:小时),超过该周期将被清理

fileReservedTime=24

#单个commitLog文件的大小限制(单位:字节)

mapedFileSizeCommitLog=1073741824

#单个consumeQueue大小限制(存储的消息条数 * 每条消息的索引大小20)

mapedFileSizeConsumeQueue=8000000

#存储使用率阀值,当使用率超过阀值时,将拒绝发送消息请求

diskMaxUsedSpaceRatio=88

#持久化消息存储根路径

storePathRootDir=/data/store

#commitLog文件存储路径

storePathCommitLog=/data/store/commitlog

#最大消息大小限制(单位:字节)

maxMessageSize=65536

#commitLog最少刷盘page数

flushCommitLogLeastPages=4

#consumeQueue最少刷盘page数

flushConsumeQueueLeastPages=2

#commitLog刷盘间隔时间

flushCommitLogThoroughInterval=10000

#consumeQueue刷盘间隔时间

flushConsumeQueueThoroughInterval=60000

#处理消息发送线程池大小

sendMessageThreadPoolNums=128

#处理消息拉取线程池大小

pullMessageThreadPoolNums=128

#broker角色(SYNC_MASTER:同步双写Master、ASYNC_MASTER:异步复制Master、SLAVE:Slave)

brokerRole=ASYNC_MASTER

#Slave节点设置

#brokerRole=SLAVE

#刷盘方式(ASYNC_FLUSH:异步刷盘、SYNC_FLUSH:同步刷盘)

flushDiskType=ASYNC_FLUSH

3、修改日志目录

日志文件保存路径按需修改

这里改成环境变量设的地址,按实际情况修改

4、修改JVM参数

修改bin/runserver.sh的JVM参数,按需修改

修改bin/runbroker.sh的JVM参数,按需修改

五、涉及端口

存在安全策略时,放开以下端口

       默认端口

服务

名称

备注

修改后端口

       9876

NameServer

主服务

端口可修改

不变

       10911

Broker

主-监听

端口可修改

不变

      10912

Slave

备-监听

端口可修改

不变     

       8080

Dashboard

管理服务

端口需修改

9880

       8081

grpcServerPort

代理端口

端口需修改

9881

       8080

remotingListenPort

代理端口

端口需修改

9882

六、常用命令

1、启动命令

### 首先启动Name Server

$ nohup sh $ROCKETMQ_HOME/bin/mqnamesrv > $ROCKETMQ_HOME/outmqnamesrv.log 2>&1 &

### 验证Name Server 是否启动成功

$ tail -f ./logs/rocketmqlogs/namesrv.log

The Name Server boot success...

#测试:

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 --enable-proxy > $ROCKETMQ_HOME/outbroker.log 2>&1 &

#单节点启动

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 --enable-proxy >/dev/null 2>&1 &

#双节点启动

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties --enable-proxy >/dev/null 2>&1 &

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties --enable-proxy >/dev/null 2>&1 &

#双节点同步启动

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties --enable-proxy >/dev/null 2>&1 &

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties --enable-proxy >/dev/null 2>&1 &

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties --enable-proxy >/dev/null 2>&1 &

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties --enable-proxy >/dev/null 2>&1 &

#双节点异步启动

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties --enable-proxy >/dev/null 2>&1 &

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties --enable-proxy >/dev/null 2>&1 &

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties --enable-proxy >/dev/null 2>&1 &

nohup sh $ROCKETMQ_HOME/bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties --enable-proxy >/dev/null 2>&1 &

#集群启动 暂无集群环境...

2、停止命令

sh mqshutdown broker  

sh mqshutdown proxy

sh mqshutdown namesrv

七、Dashboard管理页面

GitHub - apache/rocketmq-dashboard: The state-of-the-art Dashboard of Apache RoccketMQ provides excellent monitoring capability. Various graphs and statistics of events, performance and system information of clients and application is evidently made available to the user.

下载代码,编译部署后即可访问,部署前修改对应的端口和地址。

# 编译

mvn clean package -Dmaven.test.skip=true

# 启动

java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

#访问地址,端口按需修改

192.168.0.137:9880

八、集成springboot

spring:

rocketmq:

  name-server: ${ROCKETMQ_HOST:192.168.0.193}:9876 # RocketMQ NameServer 地址

  producer:

    group: caibinfen-producer # 生产者组名

  consumer:

    group: caibinfen-consumer # 消费者组名

    instance-name: caibinfen-instance # 消费者实例名称

    batch-mode: true # 是否开启批量消费,默认false

    max-retry-times: 3 # 最大重试次数

    consume-thread-min: 1 # 消费线程池最小线程数

    consume-thread-max: 30 # 消费线程池最大线程数

九、常见问题

1、8080端口占用

在proxy.log日志发现问题,8080端口被占用,搜索8080可找到对应的配置文件,在rmq-proxy.json配置文件中进行修改或者自定义文件,顺便把8081端口(搜索)也改掉。

如果是自定义文件,则启动执行时指定文件,例如:nohup bin/mqbroker -n 127.0.0.1:9876

-pc conf/proxyConfig.json --enable-proxy &

十、安全

1、MQ密码设置

在conf/broker.conf中开启aclEnable=true

设置密码,重启name-server和broker

注意如果客户端在白名单范围内,可跳过认证。

Dashboard修改对应的认证配置,打包重启

2、Dashboard登录密码设置

application.yml中参数设置loginRequired: true,打包重启即可;

账号密码设置在users.properties修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值