RocketMQ部署

2023-12-28 08:39:26

RocketMQ部署

1.部署方式

  • 单节点master

  • 主备

  • 多主

  • 多主多从(异步复制,同步双写)

2.部署方式优缺点

  • 单节点

    优点:部署与配置简单,方便管理,适合开发阶段使用

    缺点:风险较大,一旦重启或者宕机时,会导致整个服务不可用,不建议线上环境使用

  • 主备

    优点:单台机器宕机不影响消息消费,保证消息能及时处理。

    缺点:主节点宕机之后消息不能写入,只能消费。

  • 多主

    优点:配置简单,单个 master 宕机或重启维护对消息写入无影响,新消息将被写入到其他master。

    缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,不能消费,消息实时性会受到影响。

  • 多主多从(异步复制,同步双写)

    优点:某个master 宕机后,消费者仍然可以从 slave被消费,此过程对应用透明。不需要人工干预

    缺点:部署与维护相对于其他方式复杂一点。


异步复制与同步双写的区别在于消息的延迟与性能高低,异步复制方式,主备有短暂消息延迟,毫秒级,新能高。同步双写方式主备消息无延迟,只有主备都写成功,才向应用返回成功,但是这样性能相比于异步复制略低,大约在10%左右。

以上master与slave配对是通过指定相同的brokerName参数来配对,master的BrokerId必须是0,slave 的BrokerId必须是大与0的数。另外一个master下面可以挂载多个slave,同一master下的多个slave通过指定不同的BrokerId来区分。

==注意==:RocketMQ有一个非常?弱智?高级的点,就是两个Broker监听端口listenPort的值相差必须大于等于2,这tm是人类能想到的设计吗?这个设计非常人性化,打发了我一下午的无聊时光。默认监听端口为10911,所以再起一个Broker的话,端口必须大于等于10913。==泰裤辣!!!==

3.部署

下载对应版本的RocketMQ

Apache RocketMQ

解压安装目录

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

修改配置文件

#配置文件目录
cd /opt/rocketmq/conf/
#编辑配置文件
vim broker.conf

配置文件内容

#Broker对外服务的监听端口
listenPort=10911
#Broker的IP
brokerIP1 = 127.0.0.1

#所属集群名字 
brokerClusterName=rocketmq-cluster
#broker名字,主从需要名字一致
brokerName=broker-a
#0表示Master,大于0表示slave 
brokerId=0
#nameServer地址","分号分割
namesrvAddr=127.0.0.1:9876
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

#是否开启自动创建topic
autoCreateTopicEnable=true
#是否开启自动创建订阅组
autoCreateSubscriptionGroup=true
#自动创建topic时,默认的队列数
defaultTopicQueueNums=4

#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 
fileReservedTime=48
#commitLog每个文件的大小默认1G,1024 * 1024 * 1024
mapedFileSizeCommitLog=1073741824
#存储路径
storePathRootDir=/usr/local/rocketmq/store
#log存储路径 
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小 
maxMessageSize=65536

#是否开启acl
aclEnable = true

开启ACL

#复制acl目录下的配置文件到conf目录下
cp /opt/rocketmq/conf/acl/plain_acl.yml /opt/rocketmq/conf

修改ACL配置

 # 全局允许访问的IP地址
globalWhiteRemoteAddresses:  
  # IP地址范围1:允许所有以"10.10.103"开头的IP地址访问系统
  - 10.10.103.*  
  # IP地址范围2:允许所有以"192.168.0"开头的IP地址访问系统
  - 192.168.0.*  

# 账户的访问权限和设置
accounts:  
    # 访问密钥
  - accessKey: myaccesskey  
    # 秘密密钥
    secretKey: mysecretKey  
    # 允许访问的IP地址范围
    whiteRemoteAddress:  
    # 是否是管理员账户(false表示不是管理员)
    admin: false  
    # 默认主题权限
    defaultTopicPerm: PUB|SUB 
     # 默认群组权限
    defaultGroupPerm: PUB|SUB 
    # 主题权限列表
    topicPerms:  
      # 允许发布和订阅主题
      - topic=PUB|SUB  
    # 群组权限列表
    groupPerms:  
      # 允许发布和订阅群组主题
      - topic=PUB|SUB  
  - accessKey: myaccesskey
    secretKey: mysecretKey
    whiteRemoteAddress:
    # 是否是管理员账户(true表示是管理员),如果是管理员账户,则可以访问所有资源
    admin: true 

启动nameServer

nohup sh mqnamesrv &

启动Broker

nohup sh mqbroker -c /opt/rocketmq/conf/broker.conf &

==注意==:可以在runbroker.sh、runserver.sh中修改broker与nameServer的启动参数,部署多个主从关系,只需修改brokerName、brokerId与brokerRole即可。nameServer连接同一个集群或者单点。

文章来源:https://blog.csdn.net/weixin_58691039/article/details/135149420
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。