zoukankan      html  css  js  c++  java
  • 搭建rocketmq4.5.1双主双从集群

    准备192.168.220.135和192.168.220.136两台机器上模拟搭建2主2从集群,

    其中135搭建的两台是节点broker1的主(master1)和broker2的从(slave2),136上搭建的两台是broker2的主(master2)和broker1的从(slave1)

    先配置一下host,为集群准备,当然也可以不配置域名,配置处直接使用ip就行

    192.168.220.135 rocketmq-nameserver1
    192.168.220.136 rocketmq-nameserver2
    
    192.168.220.135 rocketmq-master1
    192.168.220.135 rocketmq-slave2
    
    192.168.220.136 rocketmq-master2
    192.168.220.136 rocketmq-slave1

    1、下载rocketmq

    wget  https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip

    2、解压

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

    3、配置环境变量,也可以不配置

    vim /etc/profile,追究如下内容

    export ROCKETMQ_HOME=/usr/local/rocketmq-all-4.5.1-bin-release
    export PATH=$PATH:${ROCKETMQ_HOME}/bin

    最后记得: source  /etc/profile

    4、创建RocketMQ存储文件的目录

    因为要在192.168.220.135和192.168.220.136两台机器上模拟搭建2主2从集群,所以各在两天机器上创建两套数据存储目录。

    进入192.168.220.135的rocketmq-all-4.5.1-bin-release目录,创建RocketMQ存储文件的目录,依次执行如下命令:

    midir broker-a1
    cd broker-a1
    mkdir logs mkdir store cd store
    / mkdir commitlog mkdir consumequeue mkdir index

    然后cp出一份刚才创建的目录,作为broker2的从机使用,命令  cp -r  broker-a1  broker-b2

    同理,在192.168.220.136的rocketmq-all-4.5.1-bin-release目录,创建RocketMQ存储文件的目录,依次执行如下命令:

    midir broker-b1
    cd broker-b1
    mkdir logs
    mkdir store
    cd store/
    mkdir commitlog
    mkdir consumequeue
    mkdir index

    然后cp出一份刚才创建的目录,作为broker2的从机使用,命令  cp -r  broker-b1  broker-a2

    5、配置文件

    在192.168.220.135机器进入2m-2s-sync目录:/usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync

    配置broker-a的主服务器配置文件broker-a.properties

    #所属集群名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-a
    #0 表示Master, > 0 表示slave
    brokerId=0
    #nameServer 地址,分号分割
    #namesrvAddr=192.168.220.135:9876;192.168.220.136:9876
    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-all-4.5.1-bin-release/brocker-a1/store
    #commitLog存储路径
    storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/commitlog
    #消费队列存储路径
    storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/abort
    #限制的消息大小
    maxMessageSize=65536
    # flushCommitLogLeastPages=4
    # flushConsumeQueueLeastPages=2
    # flushCommitLogThoroughInterval=10000
    # flushConsumeQueueThoroughInterval=60000
    # Broker 的角色
    # - ASYNC_MASTER 异步复制Master
    # - SYNC_MASTER 同步双写Master
    # - SLAVE
    brokerRole=SYNC_MASTER
    # 刷盘方式
    # - ASYNC_FLUSH 异步刷盘
    # - SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    #sendMessageTreadPoolNums=128
    #拉消息线程池数量
    #pullMessageTreadPoolNums=128

    配置broker-b的从服务器配置文件broker-b-s.properties

    #所属集群名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-b
    #0 表示Master, > 0 表示slave
    brokerId=1
    #nameServer 地址,分号分割
    #namesrvAddr=192.168.220.135:9876;192.168.220.136:9876
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
    #在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许Broker自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=11011
    #删除文件时间点,默认是凌晨4点
    deleteWhen=04
    #文件保留时间,默认48小时
    fileReservedTime=120
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    #存储路径
    storePathRootDir=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store
    #commitLog存储路径
    storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/commitlog
    #消费队列存储路径
    storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/abort
    
    
    #限制的消息大小
    maxMessageSize=65536
    # flushCommitLogLeastPages=4
    # flushConsumeQueueLeastPages=2
    # flushCommitLogThoroughInterval=10000
    # flushConsumeQueueThoroughInterval=60000
    # Broker 的角色
    # - ASYNC_MASTER 异步复制Master
    # - SYNC_MASTER 同步双写Master
    # - SLAVE
    brokerRole=SLAVE
    # 刷盘方式
    # - ASYNC_FLUSH 异步刷盘
    # - SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    #sendMessageTreadPoolNums=128
    #拉消息线程池数量
    #pullMessageTreadPoolNums=128

    在192.168.220.136机器进入2m-2s-sync目录:/usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync

    配置broker-a的从服务器配置文件broker-a-s.properties

    #所属集群名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-a
    #0 表示Master, > 0 表示slave
    brokerId=1
    #nameServer 地址,分号分割
    #namesrvAddr=192.168.220.135:9876;192.168.220.136:9876
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
    #在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许Broker自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=11011
    #删除文件时间点,默认是凌晨4点
    deleteWhen=04
    #文件保留时间,默认48小时
    fileReservedTime=120
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    
    #存储路径
    storePathRootDir=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store
    #commitLog存储路径
    storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/commitlog
    #消费队列存储路径
    storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/abort
    
    
    #限制的消息大小
    maxMessageSize=65536
    # flushCommitLogLeastPages=4
    # flushConsumeQueueLeastPages=2
    # flushCommitLogThoroughInterval=10000
    # flushConsumeQueueThoroughInterval=60000
    # Broker 的角色
    # - ASYNC_MASTER 异步复制Master
    # - SYNC_MASTER 同步双写Master
    # - SLAVE
    brokerRole=SLAVE
    # 刷盘方式
    # - ASYNC_FLUSH 异步刷盘
    # - SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    #sendMessageTreadPoolNums=128
    #拉消息线程池数量
    #pullMessageTreadPoolNums=128

    配置broker-b的主服务器配置文件broker-b.properties

    #所属集群名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-b
    #0 表示Master, > 0 表示slave
    brokerId=0
    #nameServer 地址,分号分割
    #namesrvAddr=192.168.220.135:9876;192.168.220.136:9876
    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-all-4.5.1-bin-release/brocker-b1/store
    #commitLog存储路径
    storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/commitlog
    #消费队列存储路径
    storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/abort
    
    #限制的消息大小
    maxMessageSize=65536
    # flushCommitLogLeastPages=4
    # flushConsumeQueueLeastPages=2
    # flushCommitLogThoroughInterval=10000
    # flushConsumeQueueThoroughInterval=60000
    # Broker 的角色
    # - ASYNC_MASTER 异步复制Master
    # - SYNC_MASTER 同步双写Master
    # - SLAVE
    brokerRole=SYNC_MASTER
    # 刷盘方式
    # - ASYNC_FLUSH 异步刷盘
    # - SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #发消息线程池数量
    #sendMessageTreadPoolNums=128
    #拉消息线程池数量
    #pullMessageTreadPoolNums=128

    6、启动

    6.1 启动NameServer集群,每台上执行如下命令:

    cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
    nohup sh mqnamesrv &

    6.2 启动broker集群

    在192.168.220.135上启动master1

    [root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
    [root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a.properties &

    在192.168.220.135上启动slave2

    [root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
    [root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b-s.properties &

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------

    在192.168.220.136上启动master2

    [root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
    [root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b.properties &

    在192.168.220.136上启动slave1

    [root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
    [root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a-s.properties &

    如果启动失败,记得修改一下bin目录的两个文件runbroker.sh 和runserver.sh,将默认的内存设置改小一点,最好设置为1g。

    #修改runserver.sh
    
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    
    #修改runbroker.sh
    
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"

     启动后,通过jps -l 命令查看一下进程:每台服务器上有1个namesrv进程和2个broker进程

    7、查看日志

    对于nameserver和broker日志默认位置在:~/logs/rocketmqlogs/namesrv.log和broker.log中,

    nameserver和broker日志位置都可以手动配置,具体配置文件就是conf下的logback_broker.xml和logback_namesrv.xml

    8 、安装rocketmq控制台

    8.1 下载rocketmq控制台项目,github地址:https://github.com/apache/rocketmq-externals

    # 方式一、git下载,执行如下命令
    git clone https://github.com/apache/rocketmq-externals.git
    
    # 方式二、直接下载,访问如下地址即可
    https://github.com/apache/rocketmq-externals/archive/master.zip

    8.2编译打包rocketmq-console

    下载下来的是对rocketmq扩展的开源项目incubator-rocketmq-externals,这个项目中有一个子模块叫“rocketmq-console”,这个便是管理控制台项目。
    进入到rocketmq-console根目录,也就是pom.xml所在目录,通过maven对其进行编译打包。

    #注意打包前先在rocketmq-console的配置文件中配置Namesrv集群的地址
    #编辑一下rocketmq-console里面的application.properties文件,将项目使用的rocketmq.config.namesrvAddr配置上去(或者在项目启动时,以参数的形式配进去)
    rocketmq.config.namesrvAddr=192.168.220.135.9876;192.168.220.136:9876
    #mvn命令打包
    mvn clean package
    -Dmaven.test.skip=true

    8.3 上传打包生成的rocketmq-console-ng-1.0.1.jar到部署服务器,这是是springboot项目,所以直接用java命令启动就行。

    nohup java -jar rocketmq-console-ng-1.0.1.jar  --server.port=8085 &

    或者:

    ###设置两个参数:--server.port为运行的这个web应用的端口,如果不设置的话默认为8080;--rocketmq.config.namesrvAddr为RocketMQ命名服务地址,如果不设置的话默认为“”
    nohup java -jar target/rocketmq-console-ng-1.0.0.jar --server.port=12581 --rocketmq.config.namesrvAddr=192.168.220.135.9876;192.168.220.136:9876 &

    9、应用rocketmq控制台

    浏览器打开rocketmq-console的部署地址:http://192.168.220.135:8085

    10、如果想停掉服务,可以先停掉broker:

    sh mqshutdown broker

    再关闭namesrv:

    sh mqshutdown namesrv

    参考文章:

    Linux下搭建RocketMQ4.5.2集群并设置开机自启

  • 相关阅读:
    Eclipse中配置约束(DTD,XSD)
    Eclipse集成tomcat
    java使用dom4j对XML进行CURD操作
    SQL数据库操作(CURD)
    Java-IO流总结
    Java-集合框架总结
    AES apache commons-crypto 对称加密
    Redis
    Axis2 客户端调用 设置超时时间
    Sybase 修改数据库默认排序
  • 原文地址:https://www.cnblogs.com/tyhj-zxp/p/13233227.html
Copyright © 2011-2022 走看看