rocketmq脚本安装执行

脚本说明:此脚本为noslave安装方式

  1. 将安装包与安装脚本放至/data目录下
  2. 修改脚本变量

ROLE:安装角色为broker-a、broker-b、broker-c

BROKER_A、BROKER_B、BROKER_C:对应的节点IP

HOST_A、HOST_BHOST_C:对应的主机名,如果知道可以直接写在变量中

  1. /etc/hosts行修改对应的HOST_A、HOST_BHOST_C

  1. 执行脚本

chmod +x rocketmq-install.sh

sh rocketmq-install.sh

出现上图结果即为安装成功

  1. 集群查看验证

sh /data/rocketmq/bin/mqadmin clusterList -n rocketmq-nameserver-a:9876

安装完成

  1. 脚本附件:
    #!/bin/bash
    # Author: goujinyang
    # rocketmq-2m-noslave,broker-a部署
    
    set -e
    
    # RocketMQ 版本和目录设置
    MQ_VERSION=rocketmq-all-5.0.0-bin-release
    ROLE=broker-a
    APP_DIR=/data
    BASE_DIR=$APP_DIR/rocketmq
    STORE_DIR=$BASE_DIR/store
    BROKER_A=73.134.42.98
    BROKER_B=73.134.42.170
    BROKER_C=73.134.47.215
    HOST_A=`hostname`
    HOST_B=
    HOST_C=
    cat >> /etc/hosts << EOF
    $BROKER_A $HOST_A rocketmq-nameserver-a rocketmq-master-a
    $BROKER_B rocketmq-nameserver-b rocketmq-master-b
    $BROKER_C rocketmq-nameserver-c rocketmq-master-c
    EOF
    # 解压并移动RocketMQ
    unzip $MQ_VERSION.zip
    mv $MQ_VERSION $BASE_DIR
    
    # 创建存储和日志目录
    mkdir -p $STORE_DIR/{commitlog,consumequeue,index}
    mkdir -p $BASE_DIR/logs
    
    # 启动NameServer
    nohup $BASE_DIR/bin/mqnamesrv >$BASE_DIR/logs/mqnamesrv.log 2>&1 &
    sleep 3
    
    # 配置Broker-A
    cat > $BASE_DIR/conf/2m-noslave/$ROLE.properties << EOF
    # 所属集群名字
    brokerClusterName=rocketmq-cluster
    # broker名字
    brokerName=$ROLE
    # 0 表示 Master,>0 表示 Slave
    brokerId=0
    # nameServer地址
    namesrvAddr=rocketmq-nameserver-a:9876;rocketmq-nameserver-b:9876;rocketmq-nameserver-c:9876
    # broker IP地址
    #brokerIP1=$BROKER_A
    # 在发送消息时,自动创建服务器不存在的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=$STORE_DIR/
    # commitLog 存储路径
    storePathCommitLog=$STORE_DIR/commitlog
    # 消费队列存储路径
    storePathConsumeQueue=$STORE_DIR/consumequeue
    # 消息索引存储路径
    storePathIndex=$STORE_DIR/index
    #checkpoint 文件存储路径
    storeCheckpoint=$STORE_DIR/checkpoint
    #abort 文件存储路径
    abortFile=$STORE_DIR/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
    EOF
    
    # 修改进程内存
    sed -i 's/JAVA_OPT="\${JAVA_OPT} -server -Xms8g -Xmx8g"/JAVA_OPT="\${JAVA_OPT} -server -Xms1024m -Xmx1024m -Xmn512m"/' $BASE_DIR/bin/runbroker.sh
    # 启动Broker-A
    nohup $BASE_DIR/bin/mqbroker -c $BASE_DIR/conf/2m-noslave/$ROLE.properties >$BASE_DIR/logs/$ROLE.log 2>&1 &
    sleep 2
    
    # 检查NameServer是否启动
    if netstat -anpt | grep -q :9876; then
        echo "##### mqnamesrv is running..."
    else
        echo "##### mqnamesrv is not running..."
        exit 1
    fi
    # 检查Broker-A是否启动
    if ps -ef | grep -v grep | grep mqbroker | grep -q "$ROLE"; then
        echo "##### $ROLE is running..."
    else
        echo "##### $ROLE is not running..."
        exit 1
    fi

     

posted @ 2025-08-19 17:27  太阳的阳ฅ  阅读(6)  评论(0)    收藏  举报