• RocketMQ 集群搭建--双Master方案


    安装环境

       jdk1.7 

      alibaba-rocketmq-3.2.6.tar.gz

      VM虚拟机redhat6.5-x64:192.168.1.201  192.168.1.202

      Xshell4

    部署方案

    序号 IP 角色 模式
    1 192.168.1.201 nameServer1,brokerServer1 Master1
    2 192.168.1.202 nameServer2,brokerServer2 Master2

    安装步骤:【两台机器同样操作  以201为例】

    步骤一:解压安装文件alibaba-rocketmq-3.2.6.tar.gz

    [root@201 rocketmq]# tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local
    [root@201 rocketmq]# mv alibaba-rocketmq rocketmq

    步骤二:修改配置

      配置一:创建存储路径 用于存储队列 索引 提交日志等信息

    [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store
    [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/commitlog
    [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/consumequeue
    [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/index

      配置二:Hosts添加信息

    IP NAME
    192.168.1.201 rocketmq-nameserver1
    192.168.1.201 rocketmq-master1
    192.168.1.202 rocketmq-nameserver2
    192.168.1.202 rocketmq-master2
    [root@201 rocketmq]# vim /etc/hosts

    重启网卡:service network restart

    相互ping一下,在201机器上ping 192.168.1.202   ping  rocketmq-nameserver2   ping  rocketmq-master2 。 202机器上也一样。

    配置三:RocketMQ配置文件:

    /usr/local/rocketmq/conf/2m-noslave/下面默认有两个文件broker-a.properties、broker-b.properties,
    我们这里设计的是双Master:一台机器启动一个broker即可,192.168.1.201 使用broker-a.properties 192.168.1.202 使用broker-b.properties

    #201
    vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
    #202 vim
    /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
    #所属集群名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样 broker-a.properties填broker-a  broker-b.properties填broker-b
    brokerName=broker-a
    #0 表示 Master,>0 表示 Slave
    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

    配置四:修改日志配置文件

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

    配置五:修改启动脚本参数 Xms和Xmx至少是1G  否则启动不起来  Xmn一般是前者的一半

    vim /usr/local/rocketmq/bin/runbroker.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"
    
    vim /usr/local/rocketmq/bin/runserver.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

    步骤三:启动:先启动两台机器的NameServer,再启动两台机器的Borker,关机的时候顺序相反,先关闭两台机器的Broker,再关闭两台机器的Nameserver。在启动 BrokerServer 之前先关闭防火墙

    启动一:NameServer  192.168.1.201192.168.1.202
    cd /usr/local/rocketmq/bin
    nohup sh mqnamesrv &
    #查看进程
    jps
    #查看日志
    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
    
    #启动二:BrokerServer A 192.168.1.201 
    cd /usr/local/rocketmq/bin 
    nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 & 
    netstat -ntlp 
    jps 
    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log 
    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log 
    
    #启动三:BrokerServer B 192.168.1.202 
    cd /usr/local/rocketmq/bin 
    nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 & 
    netstat -ntlp 
    jps 
    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log 
    tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

    步骤四:停止与重启Rocketmq

    #停止
    cd /usr/local/rocketmq/bin
    sh mqshutdown broker
    sh mqshutdown namesrv
    
    #删除数据
    rm -rf /usr/local/rocketmq/store
    mkdir /usr/local/rocketmq/store
    mkdir /usr/local/rocketmq/store/commitlog
    mkdir /usr/local/rocketmq/store/consumequeue
    mkdir /usr/local/rocketmq/store/index
    #按照上面步骤重启NameServer与BrokerServer
  • 相关阅读:
    js和java中使用join来进行数组元素的连接
    java的fail-fast 和 fail-safe机制
    chrome上表单的用户名密码autofill
    InnoDB索引底层是如何查询数据的?
    浏览器允许的并发请求资源数是什么意思?
    async/await的使用
    java获取HttpServletRequest 的客户端ip
    Free software
    Linux 配置 mysql 5.7.32 实操记录
    mysql 帮助手册翻译
  • 原文地址:https://www.cnblogs.com/cac2020/p/9446836.html
Copyright © 2020-2023  润新知