部署 Rocketmq

发布时间 2023-04-25 18:40:27作者: 运维工作栈

Install Rocketmq

本次安装的机器操作系统是 Ubuntu18.04

  • 安装 jdk 和工具软件

    # 两台机器都要操作
    apt-get install -y openjdk-8-jre-headless unzip
    
  • 下载二进制安装包并解压

    # 在 192.168.100.38 上操作
    mkdir /data
    cd /data
    wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
    unzip rocketmq-all-4.9.4-bin-release.zip
    mv rocketmq-all-4.9.4-bin-release rocketmq-4.9-a
    cp -r rocketmq-4.9-a rocketmq-4.9-b-s
    
    # 在 192.168.100.39 上操作
    mkdir /data
    cd /data
    wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
    unzip rocketmq-all-4.9.4-bin-release.zip
    mv rocketmq-all-4.9.4-bin-release rocketmq-4.9-b
    cp -r rocketmq-4.9-b rocketmq-4.9-a-s
    
  • 修改配置

    # 在 192.168.100.38 上操作
    # vim /data/rocketmq-4.9-a/conf/2m-2s-async/broker-a.properties
    brokerClusterName=DefaultCluster
    brokerName=broker-a
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=ASYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    
    namesrvAddr=192.168.100.38:9876;192.168.100.39:9876
    defaultTopicQueueNums=4
    autoCreateTopicEnable=false
    autoCreateSubscriptionGroup=false
    listenPort=10911
    mapedFileSizeCommitLog=1073741824
    mapedFileSizeConsumeQueue=300000
    destroyMapedFileInterval=120000
    redeleteHangedFileInterval=120000
    diskMaxUsedSpaceRatio=88
    storePathRootDir=/data/rocketmq-4.9-a/data/store
    storePathCommitLog=/data/rocketmq-4.9-a/data/store/commitlog
    maxMessageSize=65536
    flushCommitLogLeastPages=4
    flushConsumeQueueLeastPages=2
    flushCommitLogThoroughInterval=10000
    flushConsumeQueueThoroughInterval=60000
    checkTransactionMessageEnable=false
    sendMessageThreadPoolNums=128
    pullMessageThreadPoolNums=128
    
    # vim /data/rocketmq-4.9-b-s/conf/2m-2s-async/broker-b-s.properties
    brokerClusterName=DefaultCluster
    brokerName=broker-b
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    
    namesrvAddr=192.168.100.38:9876;192.168.100.39:9876
    defaultTopicQueueNums=4
    autoCreateTopicEnable=false
    autoCreateSubscriptionGroup=false
    listenPort=10950
    mapedFileSizeCommitLog=1073741824
    mapedFileSizeConsumeQueue=300000
    destroyMapedFileInterval=120000
    redeleteHangedFileInterval=120000
    diskMaxUsedSpaceRatio=88
    storePathRootDir=/data/rocketmq-4.9-b-s/data/store
    storePathCommitLog=/data/rocketmq-4.9-b-s/data/store/commitlog
    maxMessageSize=65536
    flushCommitLogLeastPages=4
    flushConsumeQueueLeastPages=2
    flushCommitLogThoroughInterval=10000
    flushConsumeQueueThoroughInterval=60000
    checkTransactionMessageEnable=false
    sendMessageThreadPoolNums=128
    pullMessageThreadPoolNums=128
    
    # 修改日志目录
    # vim /data/rocketmq-4.9-a/conf/logback_broker.xml
    # vim /data/rocketmq-4.9-a/conf/logback_namesrv.xml
    # vim /data/rocketmq-4.9-a/conf/logback_tools.xml
    # 打开以上文件,使用以下命令批量替换
    :%s@${user.home}@/data@g
    :%s@${brokerLogDir}/@@g
    :%s@rocketmqlogs@rocketmqlogs-a@g
    
    # vim /data/rocketmq-4.9-b-s/conf/logback_broker.xml
    # vim /data/rocketmq-4.9-b-s/conf/logback_namesrv.xml
    # vim /data/rocketmq-4.9-b-s/conf/logback_tools.xml
    # 打开以上文件,使用以下命令批量替换
    :%s@${user.home}@/data@g
    :%s@${brokerLogDir}/@@g
    :%s@rocketmqlogs@rocketmqlogs-b-s@g
    
    # 创建日志目录和数据目录
    mkdir -p /data/logs/rocketmqlogs-a/otherdays
    mkdir -p /data/logs/rocketmqlogs-b-s/otherdays
    mkdir -p /data/rocketmq-4.9-a/data/store/commitlog
    mkdir -p /data/rocketmq-4.9-b-s/data/store/commitlog
    
    # 在 192.168.100.39 上操作
    # vim /data/rocketmq-4.9-b/conf/2m-2s-async/broker-b.properties
    brokerClusterName=DefaultCluster
    brokerName=broker-b
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=ASYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    
    namesrvAddr=192.168.100.38:9876;192.168.100.39:9876
    defaultTopicQueueNums=4
    autoCreateTopicEnable=false
    autoCreateSubscriptionGroup=false
    listenPort=10911
    mapedFileSizeCommitLog=1073741824
    mapedFileSizeConsumeQueue=300000
    destroyMapedFileInterval=120000
    redeleteHangedFileInterval=120000
    diskMaxUsedSpaceRatio=88
    storePathRootDir=/data/rocketmq-4.9-b/data/store
    storePathCommitLog=/data/rocketmq-4.9-b/data/store/commitlog
    maxMessageSize=65536
    flushCommitLogLeastPages=4
    flushConsumeQueueLeastPages=2
    flushCommitLogThoroughInterval=10000
    flushConsumeQueueThoroughInterval=60000
    checkTransactionMessageEnable=false
    sendMessageThreadPoolNums=128
    pullMessageThreadPoolNums=128
    
    # vim /data/rocketmq-4.9-a-s/conf/2m-2s-async/broker-a-s.properties
    brokerClusterName=DefaultCluster
    brokerName=broker-a
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    
    namesrvAddr=192.168.100.38:9876;192.168.100.39:9876
    defaultTopicQueueNums=4
    autoCreateTopicEnable=false
    autoCreateSubscriptionGroup=false
    listenPort=10950
    deleteWhen=04
    fileReservedTime=120
    mapedFileSizeCommitLog=1073741824
    mapedFileSizeConsumeQueue=300000
    destroyMapedFileInterval=120000
    redeleteHangedFileInterval=120000
    diskMaxUsedSpaceRatio=88
    storePathRootDir=/data/rocketmq-4.9-b/data/store
    storePathCommitLog=/data/rocketmq-4.9-b/data/store/commitlog
    maxMessageSize=65536
    flushCommitLogLeastPages=4
    flushConsumeQueueLeastPages=2
    flushCommitLogThoroughInterval=10000
    flushConsumeQueueThoroughInterval=60000
    checkTransactionMessageEnable=false
    sendMessageThreadPoolNums=128
    pullMessageThreadPoolNums=128
    
    # 修改日志目录
    # vim /data/rocketmq-4.9-b/conf/logback_broker.xml
    # vim /data/rocketmq-4.9-b/conf/logback_namesrv.xml
    # vim /data/rocketmq-4.9-b/conf/logback_tools.xml
    # 打开以上文件,使用以下命令批量替换
    :%s@${user.home}@/data@g
    :%s@${brokerLogDir}/@@g
    :%s@rocketmqlogs@rocketmqlogs-b@g
    
    # vim /data/rocketmq-4.9-a-s/conf/logback_broker.xml
    # vim /data/rocketmq-4.9-a-s/conf/logback_namesrv.xml
    # vim /data/rocketmq-4.9-a-s/conf/logback_tools.xml
    # 打开以上文件,使用以下命令批量替换
    :%s@${user.home}@/data@g
    :%s@${brokerLogDir}/@@g
    :%s@rocketmqlogs@rocketmqlogs-a-s@g
    
    # 创建日志目录和数据目录
    mkdir -p /data/logs/rocketmqlogs-b/otherdays
    mkdir -p /data/logs/rocketmqlogs-a-s/otherdays
    mkdir -p /data/rocketmq-4.9-b/data/store/commitlog
    mkdir -p /data/rocketmq-4.9-a-s/data/store/commitlog
    
  • 启动 nameserver

    # 启动之前可以修改 jvm 参数
    # vim bin/runserver.sh
    
    # 在 192.168.100.38 上操作
    cd /data/rocketmq-4.9-a
    nohup sh bin/mqnamesrv > mqnamesrv_log.txt 2>&1 &
    
    # 在 192.168.100.39 上操作
    cd /data/rocketmq-4.9-b
    nohup sh bin/mqnamesrv > mqnamesrv_log.txt 2>&1 &
    
  • 启动 broker

    # 启动之前可以修改 jvm 参数
    # vim bin/runbroker.sh
    
    # 在 192.168.100.38 上操作
    cd /data/rocketmq-4.9-a
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties > mqbroker_a_log.txt 2>&1 &
    cd /data/rocketmq-4.9-b-s
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties > mqbroker_b-s_log.txt 2>&1 &
    
    # 在 192.168.100.39 上操作
    cd /data/rocketmq-4.9-b
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties > mqbroker_b_log.txt 2>&1 &
    cd /data/rocketmq-4.9-a-s
    nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties > mqbroker_a-s_log.txt 2>&1 &
    
  • 常用操作

    # stop mqnamesrv / mqbroker
    sh bin/mqshutdown namesrv
    sh bin/mqshutdown broker
    
    # check broker
    sh bin/mqadmin clusterList -n localhost:9876
    
    # create topic
    sh bin/mqadmin updateTopic -n localhost:9876 -c DefaultCluster -t test-topic
    
    # delete topic
    sh bin/mqadmin deleteTopic -n localhost:9876 -c DefaultCluster -t test-topic
    
    # 测试生产者
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
    
    # 测试消费者
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer