• RocketMQ主从搭建


     RocketMQ可分为以下几种模式:

    • 单点模式

    • 主从模式

    • 双从模式

    • 双主双从模式,多主多从模式

      搭建主从模式

    tar -zxvf rocketmq-4.6.0.tar.gz -C /usr/local
    mv rocketmq-4.6.0 rocketmq
    

      

      创建存储目录

    mkdir /usr/local/rocketmq/store
    mkdir /usr/local/rocketmq/store/commitlog
    mkdir /usr/local/rocketmq/store/consumequeue
    mkdir /usr/local/rocketmq/store/index    
    

      

      rocketmq配置文件

    vim /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties
    

      

      broker配置说明:

    参数名默认值说明
    listenPort 10911 接受客户端连接的监听端口
    namesrvAddr null nameServer 地址
    brokerIP1 网卡的 InetAddress 当前 broker 监听的 IP
    brokerIP2 跟 brokerIP1 一样 存在主从 broker 时,如果在 broker 主节点上配置了 brokerIP2 属性,broker 从节点会连接主节点配置的 brokerIP2 进行同步
    brokerName null broker 的名称
    brokerClusterName DefaultCluster 本 broker 所属的 Cluser 名称
    brokerId 0 broker id, 0 表示 master, 其他的正整数表示 slave
    storePathCommitLog $HOME/store/commitlog/ 存储 commit log 的路径
    storePathConsumerQueue $HOME/store/consumequeue/ 存储 consume queue 的路径
    mappedFileSizeCommitLog 1024 * 1024 * 1024(1G) commit log 的映射文件大小
    deleteWhen 04 在每天的什么时间删除已经超过文件保留时间的 commit log
    fileReservedTime 72 以小时计算的文件保留时间
    brokerRole ASYNC_MASTER SYNC_MASTER/ASYNC_MASTER/SLAVE
    flushDiskType ASYNC_FLUSH SYNC_FLUSH/ASYNC_FLUSH SYNC_FLUSH 模式下的 broker 保证在收到确认生产者之前将消息刷盘。ASYNC_FLUSH 模式下的 broker 则利用刷盘一组消息的模式,可以取得更好的性能。

      

    #所属集群名字
    brokerClusterName=rocketmq-cluster
    #broker 名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-a|broker-b
    #0 表示 Master, >0 表示 Slave
    #多网卡需要配置
    #brokerIP1=部署broker的ip
    brokerId=0
    #nameServer 地址,分号分割
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;
    #在发送消息时,自动创建服务器不存在的 topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=10911
    #删除文件时间点,默认凌晨 4 点
    deleteWhen=04
    #文件保留时间,默认 48 小时
    fileReservedTime=120
    #commitLog 每个文件的大小默认 1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    #存储路径
    storePathRootDir=/usr/local/rocketmq/store
    #commitLog 存储路径
    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
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    #Broker 的角色
    #- ASYNC_MASTER 异步复制 Master
    #- SYNC_MASTER 同步双写 Master
    #- SLAVE
    brokerRole=ASYNC_MASTER
    #刷盘方式
    #- ASYNC_FLUSH 异步刷盘
    #- SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    #sendMessageThreadPoolNums=128
    #拉消息线程池数量
    #pullMessageThreadPoolNums=128
    

      

      rocketmq会根据当前网卡选择一个IP使用,当机器存在多块多网卡,很有可能会有问题;

    Caused by:
    org.apache.rocketmq.remoting.exception.RemotingConnectException: sendDefaultImpl call timeout
    

      

      

      解决多网卡:

      1.broker.conf,ip为自己的ip

    #namsrv的ip
    namesrvAddr=192.168.211.128:9876
    #部署broker的ip
    brokerIP1=192.168.211.128
    

      

     

      从节点配置

      brokerRole修改成SLAVE,brokerId改成大于0;拷贝配置到从节点

     scp -r rocketmq/ 192.168.211.129:/usr/local
    

      

      主节点和从节点启动namesrv

    nohup sh bin/mqnamesrv &
    

      

      主节点启动

    nohup sh bin/mqbroker  -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
    

      

      从节点启动

    nohup sh bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &
    

      

      修改日志配置文件

    mkdir -p /usr/local/rocketmq/logs
    cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
    

      

      

      修改脚本启动参数

     

      vim /usr/local/rocketmq/bin/runbroker.sh

    JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"
    

      

      vim /usr/local/rocketmq/bin/runserver.sh

    JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    

      

  • 相关阅读:
    ORACLE【0】:基本操作
    ORACLE【3】:分区表以及分区索引
    ORACLE【2】:锁机制及解锁
    log4j学习一:解决系统日志错位问题
    使用一个非堵塞的socket用于接收http请求
    Python中文转换报错 'ascii' codec can't decode byte 0xe8 in position
    首次使用Redis记录【3】
    xsi:schemaLocation有何作用
    【转】【redis】3.Spring 集成注解 redis 项目配置使用
    maven仓库地址
  • 原文地址:https://www.cnblogs.com/coder-zyc/p/12920023.html
Copyright © 2020-2023  润新知