zoukankan      html  css  js  c++  java
  • RocketMQ集群搭建

    下面是双主双从异步复制集群搭建

    主机分配

    两台主机192.168.86.126和192.168.86.127

    nameServer1 注册中心 192.168.86.126:9876
    nameServer2 注册中心 192.168.86.127:9876
    broker-a broker-a-master 192.168.86.126:10911 broker-a.properties
    broker-b-s broker-b-slave 192.168.86.126:11011 broker-b-s.properties
    broker-b broker-b-master 192.168.86.127:10911 broker-b.properties
    broker-a-s broker-a-slave 192.168.86.127:11011 broker-a-s.properties

    下载Rocketmq

    下载rocketmq-all-4.5.2-bin-release.zip,并解压到/usr/local 重命名为rocketmq

    https://rocketmq.apache.org/release_notes/release-notes-4.5.2/

    rocketmq是java编写,所以要配置jdk,要配置1.8的jdk

    创建目录

    在两台主机上创建目录

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

    修改配置文件

    cd  conf  
    cp  -r  2m-2s-async   myconf
    

    主机192.168.86.126

    broker-a.properties

    
    brokerClusterName=DefaultCluster
    brokerName=broker-a
    #集群中 0 表示 Master,>0 表示 Slave
    brokerId=0
    brokerRole=ASYNC_MASTER
    #Broker 的角色
    #- ASYNC_MASTER 异步复制Master
    #- SYNC_MASTER 同步双写Master
    #- SLAVE
    #刷盘方式
    #- ASYNC_FLUSH 异步刷盘
    #- SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    
    #指定broker的IP
    brokerIP1=192.168.86.126
    #nameServer地址,集群用分号分割
    namesrvAddr=192.168.86.126:9876;192.168.86.127:9876
    #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=10911
    #删除文件时间点,默认凌晨 4点
    deleteWhen=04
    #文件保留时间,默认 48 小时
    fileReservedTime=48
    #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
    
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    sendMessageThreadPoolNums=128
    #拉消息线程池数量
    #pullMessaeThreadPoolNums=128
    
    #发送消息是否使用可重入锁
    useReentrantLockWhenPutMessage=true
    #300或者更大
    waitTimeMillsInSendQueue=300  
    
    

    broker-b-s.properties

    
    brokerClusterName=DefaultCluster
    brokerName=broker-b
    #集群中 0 表示 Master,>0 表示 Slave
    brokerId=1
    brokerRole=SLAVE
    #Broker 的角色
    #- ASYNC_MASTER 异步复制Master
    #- SYNC_MASTER 同步双写Master
    #- SLAVE
    #刷盘方式
    #- ASYNC_FLUSH 异步刷盘
    #- SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    
    #指定broker的IP
    brokerIP1=192.168.86.126
    #nameServer地址,集群用分号分割
    namesrvAddr=192.168.86.126:9876;192.168.86.127:9876
    #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=11011
    #删除文件时间点,默认凌晨 4点
    deleteWhen=04
    #文件保留时间,默认 48 小时
    fileReservedTime=48
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    #存储路径
    storePathRootDir=/usr/local/rocketmq/store2
    #commitLog 存储路径
    
    storePathCommitLog=/usr/local/rocketmq/store2/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/usr/local/rocketmq/store2/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/rocketmq/store2/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/rocketmq/store2/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/rocketmq/store2/abort
    #限制的消息大小
    maxMessageSize=65536
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    sendMessageThreadPoolNums=128
    #拉消息线程池数量
    #pullMessaeThreadPoolNums=128
    
    #发送消息是否使用可重入锁
    useReentrantLockWhenPutMessage=true
    #300或者更大
    waitTimeMillsInSendQueue=300  
    
    

    主机192.168.86.127

    broker-b.properties

    
    brokerClusterName=DefaultCluster
    brokerName=broker-b
    #集群中 0 表示 Master,>0 表示 Slave
    brokerId=0
    brokerRole=ASYNC_MASTER
    #Broker 的角色
    #- ASYNC_MASTER 异步复制Master
    #- SYNC_MASTER 同步双写Master
    #- SLAVE
    #刷盘方式
    #- ASYNC_FLUSH 异步刷盘
    #- SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    
    #指定broker的IP
    brokerIP1=192.168.86.127
    #nameServer地址,集群用分号分割
    namesrvAddr=192.168.86.126:9876;192.168.86.127:9876
    #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=10911
    #删除文件时间点,默认凌晨 4点
    deleteWhen=04
    #文件保留时间,默认 48 小时
    fileReservedTime=48
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    #存储路径
    storePathRootDir=/usr/local/rocketmq/store
    #commitLog 存储路径
    
    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
    
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    sendMessageThreadPoolNums=128
    #拉消息线程池数量
    #pullMessaeThreadPoolNums=128
    
    #发送消息是否使用可重入锁
    useReentrantLockWhenPutMessage=true
    #300或者更大
    waitTimeMillsInSendQueue=300  
    

    broker-a-s.properties

    
    brokerClusterName=DefaultCluster
    brokerName=broker-a
    #集群中 0 表示 Master,>0 表示 Slave
    brokerId=1
    brokerRole=SLAVE
    #Broker 的角色
    #- ASYNC_MASTER 异步复制Master
    #- SYNC_MASTER 同步双写Master
    #- SLAVE
    #刷盘方式
    #- ASYNC_FLUSH 异步刷盘
    #- SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    
    #指定broker的IP
    brokerIP1=192.168.86.127
    #nameServer地址,集群用分号分割
    namesrvAddr=192.168.86.126:9876;192.168.86.127:9876
    #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=11011
    #删除文件时间点,默认凌晨 4点
    deleteWhen=04
    #文件保留时间,默认 48 小时
    fileReservedTime=48
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    #存储路径
    storePathRootDir=/usr/local/rocketmq/store2
    #commitLog 存储路径
    
    storePathCommitLog=/usr/local/rocketmq/store2/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/usr/local/rocketmq/store2/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/rocketmq/store2/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/rocketmq/store2/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/rocketmq/store2/abort
    #限制的消息大小
    maxMessageSize=65536
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    sendMessageThreadPoolNums=128
    #拉消息线程池数量
    #pullMessaeThreadPoolNums=128
    
    #发送消息是否使用可重入锁
    useReentrantLockWhenPutMessage=true
    #300或者更大
    waitTimeMillsInSendQueue=300  
    

    注意: 上面配置文件中 【#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭autoCreateTopicEnable=false
    是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭autoCreateSubscriptionGroup=false】 将topic和订阅组全部关闭自动创建了。 所以在使用Java-API调用之前,一定要手动创建Topic和消费者订阅组,不然消费者端无法获取到消息。

    创建主题:myTopic

    sh ./bin/mqadmin updateTopic -t myTopic -c DefaultCluster -n "192.168.86.126:9876;192.168.86.127:9876"
    

    创建订阅组: customerGroup

    sh bin/mqadmin updateSubGroup -c DefaultCluster -g customerGroup -n "192.168.86.126:9876;192.168.86.127:9876"
    

    修改rocketmq启动内存

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

    修改其中的JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g

    改成JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m

    根据需要视情况而定

    防火墙开端口

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 9876 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 10911 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 11011 -j ACCEPT
    

    启动注册中心nameSrv

    两台机器都启动nameSrv

    nohup sh bin/mqnamesrv > ./logs/namesrv.log 2>&1 &
    

    启动Broker

    在主机192.168.86.126上执行

    nohup sh bin/mqbroker -c conf/myconf/broker-a.properties -n "192.168.86.126:9876;192.168.86.127:9876" > ./logs/broker-a.log 2>&1 &
    
    nohup sh bin/mqbroker -c conf/myconf/broker-b-s.properties -n "192.168.86.126:9876;192.168.86.127:9876" > ./logs/broker-b-s.log 2>&1 &
    

    在主机192.168.86.127上执行

    nohup sh bin/mqbroker -c conf/myconf/broker-b.properties -n "192.168.86.126:9876;192.168.86.127:9876" > ./logs/broker-a.log 2>&1 &
    
    nohup sh bin/mqbroker -c conf/myconf/broker-a-s.properties -n "192.168.86.126:9876;192.168.86.127:9876" > ./logs/broker-a-s.log 2>&1 &
    

    查看启动情况

    jps
    

    显示如下,说明启动成功

    6966 NamesrvStartup
    7881 Jps
    7066 BrokerStartup
    7147 BrokerStartup
  • 相关阅读:
    使用ansible实现批量免密认证
    python自如爬虫
    python批量发邮件
    诸葛亮诫子书
    CSS3阴影 box-shadow的使用和技巧总结
    js必须掌握的基础
    心态不好,你将永远是个弱者!
    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
    xampp的安装和配置
    css3动画
  • 原文地址:https://www.cnblogs.com/yhongyin/p/12038773.html
Copyright © 2011-2022 走看看