zoukankan      html  css  js  c++  java
  • RocketMQ单点集群

    目录

    1 参考文档    3

    2 概览    3

    2.1 历史    4

    2.2 作用    4

    2.3 角色    4

    2.4 RocketMQ集群模式架构分析    4

    2.4.1 单节点    4

    2.4.2 主从(异步、同步消息)    4

    2.4.3 双主    4

    2.4.4 双主双从,多主多从模式(异步复制)    5

    2.4.5 双主双从,多主多从模式(同步双写)    5

    2.4.6 详解同步复制异步复制,同步刷盘异步刷盘(一般为同步复制,异步刷盘)    5

    3 系统环境    6

    4 单点安装    6

    4.1 安装openjdk1.8    6

    4.2 安装rocketmq(下载带bin的)    6

    4.2.1 上传到服务器    7

    4.2.2 解压到/usr/local    7

    4.2.3 进入bin目录,修改配置(分别修改runserver.sh 以及 runbroker.sh,因为默认配置内存过大,可能导致启动失败)    7

    4.3 创建RocketMQ存储文件的目录    7

    4.4 修改配置文件    8

    4.5 进入conf目录,替换所有xml中的${user.home},保证日志路径正确    10

    4.6 增加环境变量    11

    4.7 启动RocketMQ    11

    4.8 检查是否启动成功    11

    4.9 停止方式为:先停止broker,在停止namesrv    12

    5 关于rocketmq不支持jdk11得解决办法    12

    5.1 第一个runserver.sh脚本    12

    5.2 第二个脚本runbroker.sh    14

    5.3 第三个脚本tools.sh    16

    6 增加rocketMQ web管理页面rocketmq-console(基于openjdk1.8openjdk11启动会报错)    18

    6.1 安装流程    18

    6.1.1 安装git    18

    6.1.2 下载rocketmq-console    18

    6.1.3 修改配置文件    18

    6.2 下载安装maven    20

    6.3 添加环境变量    20

    6.4 生成jar    20

    6.5 启动rocketmq web    20

    6.6 配置web访问密码    20

    7 搭建rocketmq集群    22

    7.1 conf目录文件介绍    22

    7.2 搭建一主一从(同步复制,异步刷盘)    22

    7.2.1 上传包到主172.26.103.76服务器    23

    7.2.2 两台 服务器分别配置jdk    23

    7.2.3 创建RocketMQ存储文件的目录    23

    7.2.4 更改上传到主服务器的配置文件    24

    7.2.5 进入conf目录,替换所有xml中的${user.home},保证日志路径正确    27

    7.2.6 进入bin目录,修改配置(分别修改runserver.sh 以及 runbroker.sh,因为默认配置内存过大,可能导致启动失败)    27

    7.2.7 把在主上172.26.103.76配置好的整体推送到从服务器172.26.103.77    28

    7.2.8 主从两台服务器分别增加环境变量    28

    7.2.9 分别启动主从    28

    7.2.10 两台机器分别检查是否启动成功    29

    7.3 两主两从(同步复制,异步刷盘)    30

    7.3.1 上传包到主172.26.103.76服务器    30

    7.3.2 四台 服务器分别配置jdk    30

    7.3.3 创建RocketMQ存储文件的目录(主172.26.103.76上面操作)    31

    7.3.4 更改上传到主服务器的配置文件    31

    7.3.1 进入conf目录,替换所有xml中的${user.home},保证日志路径正确(还是在172.26.103.76主服务器上操作)    35

    7.3.2 进入bin目录,修改配置(分别修改runserver.sh 以及 runbroker.sh,因为默认配置内存过大,可能导致启动失败)    35

    7.3.3 把在主上172.26.103.76配置好的整体推送到其他三台服务器    36

    7.3.4 分别在四台服务器上配置环境变量    36

    7.3.5 四台分别启动    36

    7.3.6 查看集群状态    37

    7.3.7 其他的双主配置,以及异步配置,只是配置文件不同,其他都一样的。    38

    8 遇到的问题    38

    8.1 所有的jdk,不管是yum安装的还是解压缩的,都要添加到环境变量,/bin/tools.sh 会通过环境变量来运行java    38

    9 常用命令    39

    9.1 查看帮助    39

    9.2 集群相关命令    39

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 参考文档

     

    https://blog.csdn.net/xiaoye319/article/details/102481093

     

     

    1. 概览

    简介

    https://www.jianshu.com/p/16c34951a6c4

    1. 历史

    初始由阿里创建,后捐献给apache基金会,现属于apache项目

     

    1. 作用

    应用解耦 流量消峰 消息分发(提供不同消息订阅方使用)

    1. 角色

    NameServer(协调管理) Broker(暂存消息) Producer(消息生产者) Consumer(消息消费者)

     

     

    1. RocketMQ集群模式架构分析

     

    1. 单 master 模式

    也就是只有一个 master 节点,称不上是集群,一旦这个 master 节点宕机,那么整个服务就不可用,适合个人学习使用。

     

    1. 多 master 模式

    多个 master 节点组成集群,单个 master 节点宕机或者重启对应用没有影响。

    优点:所有模式中性能最高

    缺点:单个 master 节点宕机期间,未被消费的消息在节点恢复之前不可用,消息的实时性就受到影响。

    注意:使用同步刷盘可以保证消息不丢失,同时 Topic 相对应的 queue 应该分布在集群中各个节点,而不是只在某各节点上,否则,该节点宕机会对订阅该 topic 的应用造成影响。

     

    1. 多 master 多 slave 异步复制模式

    在多 master 模式的基础上,每个 master 节点都有至少一个对应的 slave。master

    节点可读可写,但是 slave 只能读不能写,类似于 mysql 的主备模式。

    优点: 在 master 宕机时,消费者可以从 slave 读取消息,消息的实时性不会受影响,性能几乎和多 master 一样。

    缺点:使用异步复制的同步方式有可能会有消息丢失的问题。

     

    1. 多 master 多 slave 同步双写模式

    同多 master 多 slave 异步复制模式类似,区别在于 master 和 slave 之间的数据同步方式。

    优点:同步双写的同步模式能保证数据不丢失。

    缺点:发送单个消息 RT 会略长,性能相比异步复制低10%左右。

    刷盘策略:同步刷盘和异步刷盘(指的是节点自身数据是同步还是异步存储)

    同步方式:同步双写和异步复制(指的一组 master 和 slave 之间数据的同步)

    注意:要保证数据可靠,需采用同步刷盘和同步双写的方式,但性能会较其他方式低

     

    1. 详解同步复制异步复制,同步刷盘异步刷盘(一般为同步复制,异步刷盘)

    同步复制、异步复制

      如果一个broker组有MasterSlave,消息需要从Master复制到Slave上,有同步和异步两种复制方式。

    同步复制是等MasterSlave

    均写成功后才反馈给客户端写成功状态;异步复制方式是只要Master写成功即可反馈给客户端写成功状态

      这两种复制方式各有优劣,在异步复制方式下,系统拥有较低的延迟和较高的吞吐量,但是如果Master

    出了故障,有些数据因为没有被写入Slave,有可能会丢失;在同步复制方式下,如果Master出故障,Slave

    上有全部的备份数据,容易恢复,但是同步复制会增大数据写入延迟,降低系统吞吐量。

      同步复制和异步复制是通过Broker配置文件里的brokerRole参数进行设置的,这个参数可以被设置成

    ASYNC_MASTERSYNC_MASTERSLAVE三个值中的一个。

      实际应用中要结合业务场景,合理设置刷盘方式和主从复制方式,尤其是SYNC_FLUSH方式,由于频繁

    的触发写磁盘动作,会明显降低性能。

     

     

    1. 系统环境

    2020-03-05

    系统版本

    centos7.7

    rocketmq版本

    rocketmq-all-4.5.0-bin-release.zip

    jdk版本

    openjdk1.8

    硬件

    24G

     

    下载地址http://rocketmq.apache.org/dowloading/releases/

     

    1. 单点安装

    2. 安装openjdk1.8

    yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

     

    所有的jdk,不管是yum安装的还是解压缩的,都要添加到环境变量,/bin/tools.sh 会通过环境变量来运行java

    yum安装的openjdk配置环境变量

    JAVA_HOME=/usr/lib/jvm/java

    JRE_HOME=/usr/lib/jvm/java/jre

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    export JAVA_HOME JRE_HOME PATH CLASSPATH

     

    java -version

    jps

    echo $JAVA_HOME

     

     

    1. 安装rocketmq(下载带bin的)

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

    1. 上传到服务器

    2. 解压到/usr/local

     

    1. 进入bin目录,修改配置(分别修改runserver.sh 以及 runbroker.sh,因为默认配置内存过大,可能导致启动失败)

    RocketMQ对内存的要求比较高,最少1G,如果内存太少,会影响RocketMQ的运行效率和执行性能。我们需要修改bin目录下的runbroker.sh和runserver.sh文件

     

    cd /usr/local/rocketmq-4.5/bin

    vim runserver.sh

    本来的4g

    JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

    按照实际机器配置修改1g

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

     

    vim runbroker.sh

    本来的8g

    JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

    按照实际机器配置修改1g

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

     

    1. 创建RocketMQ存储文件的目录

    cd /usr/local/rocketmq-4.5/

    mkdir logs

    mkdir store

    cd store/

    mkdir commitlog

    mkdir consumequeue

    mkdir index

     

    文件夹说明:

    logs:存储RocketMQ日志目录

    store:存储RocketMQ数据文件目录

    commitlog:存储RocketMQ消息信息

    consumequeue、index:存储消息的索引数据

     

    1. 修改配置文件

    cp broker.conf broker.conf.bak

    vim broker.conf

    #所属集群名字

    brokerClusterName=rocketmq-cluster

    #broker名字,注意此处不同的配置文件填写的不一样

    brokerName=broker-a

    #0 表示Master, > 0 表示slave

    brokerId=0

    #nameServer 地址,分号分割

    namesrvAddr=192.168.0.75:9876;127.0.0.1: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

    #磁盘空间警戒阈值,超过这个值则停止接受消息,默认值90

    #diskSpaceWarningLevelRatio=90

    #强制删除文件阈值,默认85

    #diskSpaceCleanForciblyRatio=85

    #存储路径

    storePathRootDir=/usr/local/rocketmq-4.5/store

    #commitLog存储路径

    storePathCommitLog=/usr/local/rocketmq-4.5/store/commitlog

    #消费队列存储路径

    storePathConsumeQueue=/usr/local/rocketmq-4.5/store/consumequeue

    #消息索引存储路径

    storePathIndex=/usr/local/rocketmq-4.5/store/index

    #checkpoint 文件存储路径

    storeCheckpoint=/usr/local/rocketmq-4.5/store/checkpoint

    #abort 文件存储路径

    abortFile=/usr/local/rocketmq-4.5/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

     

    1. 进入conf目录,替换所有xml中的${user.home},保证日志路径正确

    sed -i 's#${user.home}#/usr/local/rocketmq-4.5#g' *.xml

     

    1. 增加环境变量

    echo 'export PATH=$PATH:/usr/local/rocketmq-4.5/bin' >>/etc/profile

    source /etc/profile

     

    1. 启动RocketMQ,

    注意先启动namesrv再启动broker

    必须先cd到bin目录下,不然会报错

    cd /usr/local/rocketmq-4.5/bin/

    启动namesrv

    nohup sh mqnamesrv &

    再启动broker

    nohup sh mqbroker -c /usr/local/rocketmq-4.5/conf/broker.conf > /dev/null 2>&1 &

     

     

    停止RocketMQ的方法

    mqshutdown broker

    mqshutdown namesrv

     

     

    1. 检查是否启动成功

    jps命令为java自带的,如果yum安装没有jps说明未安装jdk-devel包

    [root@oracle-01 bin]# jps

    15969 BrokerStartup

    15762 NamesrvStartup

    16861 Jps

    有此两个说明运行成功

     

    rocketmq对外端口为9876

    broker端口为10911

     

    1. 停止方式为:先停止broker,在停止namesrv

    mqshutdown broker

    mqshutdown namesrv

     

    1. 关于rocketmq不支持jdk11得解决办法

    https://www.cnblogs.com/wintersoft/p/10881601.html

     

    经测试rocketmq4.5.0 rocketmq4.3.2 都可以使用此配置

    需要更改三个启动脚本

     

    1. 第一个runserver.sh脚本

    nameserver:

    vim /opt/rocketmq/bin/runserver.sh

     

    删除 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection和-XX:-UseParNewGC和-XX:+PrintGCDetails

     

    -Xloggc:改成-Xlog:gc:

     

    删除 JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"

     

    #!/bin/sh

    # Licensed to the Apache Software Foundation (ASF) under one or more

    # contributor license agreements. See the NOTICE file distributed with

    # this work for additional information regarding copyright ownership.

    # The ASF licenses this file to You under the Apache License, Version 2.0

    # (the "License"); you may not use this file except in compliance with

    # the License. You may obtain a copy of the License at

    #

    # http://www.apache.org/licenses/LICENSE-2.0

    #

    # Unless required by applicable law or agreed to in writing, software

    # distributed under the License is distributed on an "AS IS" BASIS,

    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

    # See the License for the specific language governing permissions and

    # limitations under the License.

    #===========================================================================================

    # Java Environment Setting

    #===========================================================================================

    error_exit ()

    {

    echo "ERROR: $1 !!"

    exit 1

    }

    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java

    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java

    [ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"

    export JAVA_HOME

    export JAVA="$JAVA_HOME/bin/java"

    export BASE_DIR=$(dirname $0)/..

    export CLASSPATH=${BASE_DIR}/lib/rocketmq-namesrv-4.5.0.jar:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}

    #export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}

    #echo "BASE_DIR:$BASE_DIR"

    #echo "CLASSPATH:$CLASSPATH"

    #===========================================================================================

    # JVM Configuration

    #===========================================================================================

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

    #JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

    JAVA_OPT="${JAVA_OPT} -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8"

    JAVA_OPT="${JAVA_OPT} -verbose:gc -Xlog:gc:/dev/shm/rmq_srv_gc.log"

    JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"

    JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"

    #JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"

    JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"

    JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

     

    $JAVA ${JAVA_OPT} $@

     

     

    1. 第二个脚本runbroker.sh

    broker:

    vim /opt/rocketmq/bin/runbroker.sh

     

    如果主从都在同一个服务器上 vim /opt/rocketmqs/bin/runbroker.sh

     

    删除 -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy 和 JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m" 和-XX:+PrintGCDetails

     

    -Xloggc:改成-Xlog:gc:

     

    删除 JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"

     

    #!/bin/sh

    # Licensed to the Apache Software Foundation (ASF) under one or more

    # contributor license agreements. See the NOTICE file distributed with

    # this work for additional information regarding copyright ownership.

    # The ASF licenses this file to You under the Apache License, Version 2.0

    # (the "License"); you may not use this file except in compliance with

    # the License. You may obtain a copy of the License at

    #

    # http://www.apache.org/licenses/LICENSE-2.0

    #

    # Unless required by applicable law or agreed to in writing, software

    # distributed under the License is distributed on an "AS IS" BASIS,

    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

    # See the License for the specific language governing permissions and

    # limitations under the License.

     

    #===========================================================================================

    # Java Environment Setting

    #===========================================================================================

    error_exit ()

    {

    echo "ERROR: $1 !!"

    exit 1

    }

     

    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java

    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java

    [ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"

     

    export JAVA_HOME

    export JAVA="$JAVA_HOME/bin/java"

    export BASE_DIR=$(dirname $0)/..

    export CLASSPATH=${BASE_DIR}/lib/rocketmq-broker-4.5.0.jar:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}

    #export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}

    #echo "BASE_DIR:$BASE_DIR"

    #echo "CLASSPATH:$CLASSPATH"

     

    #===========================================================================================

    # JVM Configuration

    #===========================================================================================

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

    #JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

    JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"

    JAVA_OPT="${JAVA_OPT} -verbose:gc -Xlog:gc:/dev/shm/mq_gc_%p.log"

    JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"

    JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"

    JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"

    JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"

    #JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"

    JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"

    JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

     

    numactl --interleave=all pwd > /dev/null 2>&1

    if [ $? -eq 0 ]

    then

    if [ -z "$RMQ_NUMA_NODE" ] ; then

    numactl --interleave=all $JAVA ${JAVA_OPT} $@

    else

    numactl --cpunodebind=$RMQ_NUMA_NODE --membind=$RMQ_NUMA_NODE $JAVA ${JAVA_OPT} $@

    fi

    else

    $JAVA ${JAVA_OPT} $@

    fi

     

    1. 第三个脚本tools.sh

    tools:

    vim /opt/rocketmq/bin/tools.sh

    删除 JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext"

    #!/bin/sh

    # Licensed to the Apache Software Foundation (ASF) under one or more

    # contributor license agreements. See the NOTICE file distributed with

    # this work for additional information regarding copyright ownership.

    # The ASF licenses this file to You under the Apache License, Version 2.0

    # (the "License"); you may not use this file except in compliance with

    # the License. You may obtain a copy of the License at

    #

    # http://www.apache.org/licenses/LICENSE-2.0

    #

    # Unless required by applicable law or agreed to in writing, software

    # distributed under the License is distributed on an "AS IS" BASIS,

    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

    # See the License for the specific language governing permissions and

    # limitations under the License.

    #===========================================================================================

    # Java Environment Setting

    #===========================================================================================

    error_exit ()

    {

    echo "ERROR: $1 !!"

    exit 1

    }

    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java

    [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java

    [ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"

    export JAVA_HOME

    export JAVA="$JAVA_HOME/bin/java"

    export BASE_DIR=$(dirname $0)/..

    export CLASSPATH=${BASE_DIR}/lib/*:${BASE_DIR}/conf:.:${CLASSPATH}

    #export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}

    #echo "BASE_DIR:$BASE_DIR"

    #echo "CLASSPATH:$CLASSPATH"

    #===========================================================================================

    # JVM Configuration

    #===========================================================================================

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"

    JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

    $JAVA ${JAVA_OPT} $@

     

     

    1. 增加rocketMQ web管理页面rocketmq-console(基于openjdk1.8,openjdk11启动会报错)

    参考文档

    https://www.cnblogs.com/immense/p/11406399.html

    github配置文档

    https://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_CN.md

    maven下载地址

    https://archive.apache.org/dist/maven/maven-3/

    rocketmq-console版本

    release-rocketmq-console-1.0.0

    maven版本

    apache-maven-3.6.0-bin.zip

    git

    yum install git 任意版本

     

    1. 安装流程

      1. 安装git

    yum install git -y

    1. 下载rocketmq-console

    git clone https://github.com/apache/rocketmq-externals.git

    mv rocketmq-externals/rocketmq-console/ /usr/local/rocketmq-4.5/

    1. 修改配置文件

    vim /usr/local/rocketmq-4.5/rocketmq-console/src/main/resources/application.properties

    实际需要修改的只有

    rocketmq.config.dataPath

    server.port

    rocketmq.config.namesrvAddr

    rocketmq.config.loginRequired

    ###管理后台访问上下文路径,默认为空,如果填写,一定要前面加"/",后面不要加,否则启动报错

    server.contextPath=

    ###web访问端口

    server.port=8181

    ### SSL setting

    #server.ssl.key-store=classpath:rmqcngkeystore.jks

    #server.ssl.key-store-password=rocketmq

    #server.ssl.keyStoreType=PKCS12

    #server.ssl.keyAlias=rmqcngkey

     

    #spring.application.index=true

    spring.application.name=rocketmq-console

    spring.http.encoding.charset=UTF-8

    spring.http.encoding.enabled=true

    spring.http.encoding.force=true

    logging.config=classpath:logback.xml

    ####Name Server地址,修改成你自己的服务地址192.168.26.29:9876;192.168.26.206:9876

    rocketmq.config.namesrvAddr=

    #if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true

    rocketmq.config.isVIPChannel=

    # rocketmq-console数据路径

    rocketmq.config.dataPath=/usr/local/rocketmq-4.5/rocketmq-console/data

    #set it false if you don't want use dashboard.default true

    rocketmq.config.enableDashBoardCollect=true

    #set the message track trace topic if you don't want use the default one

    rocketmq.config.msgTrackTopicName=

    rocketmq.config.ticketKey=ticket

     

    #Must create userInfo file: ${rocketmq.config.dataPath}/users.properties if the login is required

    #是否开启密码验证登录,默认不开启 ,默认用户名密码admin/admin

    rocketmq.config.loginRequired=true

     

    1. 下载安装maven

    wget https://archive.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz

    tar xf apache-maven-3.6.0-bin.tar.gz -C /usr/local/

     

    1. 添加环境变量

    echo 'export PATH=$PATH:/usr/local/apache-maven-3.6.0/bin' >>/etc/profile

    source /etc/profile

    测试是否生效

    mvn -v

     

    1. 生成jar包

    cd /usr/local/rocketmq-4.5/rocketmq-console/

    mvn clean package -Dmaven.test.skip=true

    这段时间会很长,执行完成,会多出一个target目录。在target下生成了需要运行的jar

     

    1. 启动rocketmq web

    nohup java -jar target/rocketmq-console-ng-1.0.0.jar &>/dev/null &

     

    http://39.101.223.167:8181/

     

    1. 配置web访问密码

    vim /usr/local/rocketmq-4.5/rocketmq-console/src/main/resources/application.properties

    在之前上面的 rocketmq-console配置文件内配置的data路径下创建users.properties文件

     

    vim /usr/local/rocketmq-4.5/rocketmq-console/data/users.properties

    把下面的复制进去就好了,密码文件创建后需要重新启动一下rocketmq-console,否则密码文件不生效

    [root@iZ8vb87v6wieobhdkmk73jZ data]# jps

    20208 Jps

    1441 NamesrvStartup

    19909 rocketmq-console-ng-1.0.1.jar

    1493 BrokerStartup

    [root@iZ8vb87v6wieobhdkmk73jZ data]# kill 19909

    [root@iZ8vb87v6wieobhdkmk73jZ rocketmq-console]# cd /usr/local/rocketmq-4.5/rocketmq-console/

    [root@iZ8vb87v6wieobhdkmk73jZ rocketmq-console]# nohup java -jar target/rocketmq-console-ng-1.0.0.jar &>/dev/null &

     

    users.properties

    # 该文件支持热修改,即添加和修改用户时,不需要重新启动console

    # 格式, 每行定义一个用户, username=password[,N] #N是可选项,可以为0 (普通用户) 1 (管理员)

     

    #定义管理员

    admin=test123456,1

     

    #定义普通用户

    #user1=user1

    #user2=user2

     

     

    1. 搭建rocketmq集群

    2. conf目录文件介绍

    [root@iZ8vb87v6wieobhdkmk73jZ conf]# tree

    .

    ├── 2m-2s-async #两主两从异步用此目录下的配置文件

    │   ├── broker-a.properties #a的主配置文件

    │   ├── broker-a-s.properties # a的从配置文件

    │   ├── broker-b.properties #b的主配置文件

    │   └── broker-b-s.properties #b的从配置文件

    ├── 2m-2s-sync #两主两从同步用此目录下的配置文件

    │   ├── broker-a.properties

    │   ├── broker-a-s.properties

    │   ├── broker-b.properties

    │   └── broker-b-s.properties

    ├── 2m-noslave #双主用此目录下的文件

    │   ├── broker-a.properties

    │   ├── broker-b.properties

    │   └── broker-trace.properties #暂时没用到

    ├── broker.conf #单点搭建可以用此配置文件

     

    1. 2m-2s-async:22从异步
    2. 2m-2s-sync :22从同步
    3. 2m-noslave :2主没有从

     

     

    1. 搭建一主一从(同步复制,异步刷盘)

     

    两台服务器

    配置12G

    172.26.103.76

    172.26.103.77

     

    1. 上传包到主172.26.103.76服务器

    rocketmq-all-4.5.0-bin-release.zip

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

    mv rocketmq-all-4.5.0-bin-release /usr/local/rocketmq-4.5.0

     

    1. 两台 服务器分别配置jdk

    yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

     

    所有的jdk,不管是yum安装的还是解压缩的,都要添加到环境变量,/bin/tools.sh 会通过环境变量来运行java

    yum安装的openjdk配置环境变量

    JAVA_HOME=/usr/lib/jvm/java

    JRE_HOME=/usr/lib/jvm/java/jre

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    export JAVA_HOME JRE_HOME PATH CLASSPATH

     

    java -version

    jps

    echo $JAVA_HOME

     

    1. 创建RocketMQ存储文件的目录

    cd /usr/local/rocketmq-4.5.0/

    mkdir logs

    mkdir store

    cd store/

    mkdir commitlog

    mkdir consumequeue

    mkdir index

     

    文件夹说明:

    logs:存储RocketMQ日志目录

    store:存储RocketMQ数据文件目录

    commitlog:存储RocketMQ消息信息

    consumequeue、index:存储消息的索引数据

     

    1. 更改上传到主服务器的配置文件

    先修改主配置文件

    vi /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a.properties

    主要需要注意修改的:

    brokerClusterName #所属集群名字

    brokerName #broker名字,注意此处不同的配置文件填写的不一样

    brokerId #0 表示Master, > 0 表示slave

    namesrvAddr #nameServer 地址,分号分割 172.26.103.76:9876;172.26.103.77:9876

    storePathRootDir #存储路径

    brokerRole # Broker 的角色

    flushDiskType #刷盘方式

     

    #所属集群名字

    brokerClusterName=rocketmq-cluster

    #broker名字,注意此处不同的配置文件填写的不一样

    brokerName=broker-a

    #0 表示Master, > 0 表示slave

    brokerId=0

    #nameServer 地址,分号分割

    namesrvAddr=172.26.103.76:9876;172.26.103.77: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

    #磁盘空间警戒阈值,超过这个值则停止接受消息,默认值90

    #diskSpaceWarningLevelRatio=90

    #强制删除文件阈值,默认85

    #diskSpaceCleanForciblyRatio=85

    #存储路径

    storePathRootDir=/usr/local/rocketmq-4.5/store

    #commitLog存储路径

    storePathCommitLog=/usr/local/rocketmq-4.5/store/commitlog

    #消费队列存储路径

    storePathConsumeQueue=/usr/local/rocketmq-4.5/store/consumequeue

    #消息索引存储路径

    storePathIndex=/usr/local/rocketmq-4.5/store/index

    #checkpoint 文件存储路径

    storeCheckpoint=/usr/local/rocketmq-4.5/store/checkpoint

    #abort 文件存储路径

    abortFile=/usr/local/rocketmq-4.5/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

     

     

     

    修改从配置文件(还是在主服务器上操作)

    cat /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a.properties >/usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a-s.properties

     

    vim /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a-s.properties

    配置文件与主一样

    主要需要注意修改的:

    brokerId #0 表示Master, > 0 表示slave,设置为1

    brokerRole # 从得Broker 的角色为SLAVE

     

    1. 进入conf目录,替换所有xml中的${user.home},保证日志路径正确

    sed -i 's#${user.home}#/usr/local/rocketmq-4.5.0#g' *.xml

     

     

    1. 进入bin目录,修改配置(分别修改runserver.sh 以及 runbroker.sh,因为默认配置内存过大,可能导致启动失败)

    RocketMQ对内存的要求比较高,最少1G,如果内存太少,会影响RocketMQ的运行效率和执行性能。我们需要修改bin目录下的runbroker.sh和runserver.sh文件

     

    cd /usr/local/rocketmq-4.5/bin

    vim runserver.sh

    本来的4g

    JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

    按照实际机器配置修改1g

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

     

    vim runbroker.sh

    本来的8g

    JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

    按照实际机器配置修改1g

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

     

     

    1. 把在主上172.26.103.76配置好的整体推送到从服务器172.26.103.77

    rsync -e "ssh -p 522" -avz /usr/local/rocketmq-4.5.0 172.26.103.77:/usr/local/

     

     

    1. 主从两台服务器分别增加环境变量

    echo 'export PATH=$PATH:/usr/local/rocketmq-4.5.0/bin' >>/etc/profile

    source /etc/profile

    1. 分别启动主从

    注意先启动namesrv再启动broker

    必须先cd到bin目录下,不然会报错。

    启动主服务器:

    cd /usr/local/rocketmq-4.5.0/bin/

    启动namesrv

    nohup sh mqnamesrv &

    再启动broker

    nohup sh mqbroker -c /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a.properties > /dev/null 2>&1 &

     

    启动从服务器:

    cd /usr/local/rocketmq-4.5.0/bin/

    启动namesrv

    nohup sh mqnamesrv &

    再启动broker

    nohup sh mqbroker -c /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a-s.properties > /dev/null 2>&1 &

     

    1. 两台机器分别检查是否启动成功

    jps

    ss -lntup #端口9876 10911

    查看集群状态

    mqadmin clusterList -n 172.26.103.77:9876

     

    如果有rocketmq-console web管理界面,也可以在这看

     

     

     

     

     

     

    1. 两主两从(同步复制,异步刷盘)

     

    四台服务器

    配置12G

    172.26.103.76

    a

    172.26.103.77

    a

    172.26.103.78

    b

    172.26.103.79

    b

     

    1. 上传包到主172.26.103.76服务器

    rocketmq-all-4.5.0-bin-release.zip

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

    mv rocketmq-all-4.5.0-bin-release /usr/local/rocketmq-4.5.0

     

    1. 四台 服务器分别配置jdk

    yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

     

    所有的jdk,不管是yum安装的还是解压缩的,都要添加到环境变量,/bin/tools.sh 会通过环境变量来运行java

    yum安装的openjdk配置环境变量

    JAVA_HOME=/usr/lib/jvm/java

    JRE_HOME=/usr/lib/jvm/java/jre

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    export JAVA_HOME JRE_HOME PATH CLASSPATH

    source /etc/profile

    java -version

    jps

    echo $JAVA_HOME

     

    1. 创建RocketMQ存储文件的目录(主172.26.103.76上面操作)

    cd /usr/local/rocketmq-4.5.0/

    mkdir logs

    mkdir store

    cd store/

    mkdir commitlog

    mkdir consumequeue

    mkdir index

     

    文件夹说明:

    logs:存储RocketMQ日志目录

    store:存储RocketMQ数据文件目录

    commitlog:存储RocketMQ消息信息

    consumequeue、index:存储消息的索引数据

     

    1. 更改上传到主服务器的配置文件

    先修改a主配置文件

    vi /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a.properties

    主要需要注意修改的:

    brokerClusterName #所属集群名字

    brokerName #broker名字,同一个主从的名字应相同,双主的应改为broker-a,broker-b

    brokerId #0 表示Master, > 0 表示slave

    namesrvAddr #nameServer 地址,分号分割 172.26.103.76:9876;172.26.103.77:9876

    storePathRootDir #存储路径

    brokerRole # Broker 的角色

    flushDiskType #刷盘方式

     

    #所属集群名字

    brokerClusterName=rocketmq-cluster

    #broker名字,注意此处不同的配置文件填写的不一样

    brokerName=broker-a

    #0 表示Master, > 0 表示slave

    brokerId=0

    #nameServer 地址,分号分割

    namesrvAddr=172.26.103.76:9876;172.26.103.77:9876;172.26.103.78:9876;172.26.103.79: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

    #磁盘空间警戒阈值,超过这个值则停止接受消息,默认值90

    #diskSpaceWarningLevelRatio=90

    #强制删除文件阈值,默认85

    #diskSpaceCleanForciblyRatio=85

    #存储路径

    storePathRootDir=/usr/local/rocketmq-4.5/store

    #commitLog存储路径

    storePathCommitLog=/usr/local/rocketmq-4.5/store/commitlog

    #消费队列存储路径

    storePathConsumeQueue=/usr/local/rocketmq-4.5/store/consumequeue

    #消息索引存储路径

    storePathIndex=/usr/local/rocketmq-4.5/store/index

    #checkpoint 文件存储路径

    storeCheckpoint=/usr/local/rocketmq-4.5/store/checkpoint

    #abort 文件存储路径

    abortFile=/usr/local/rocketmq-4.5/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

     

     

    修改a从配置文件(还是在172.26.103.76主服务器上操作)

    cat /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a.properties >/usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a-s.properties

    vim /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a-s.properties

    配置文件与主一样

    主要需要注意修改的:

    brokerId #0 表示Master, > 0 表示slave,设置为1

    brokerRole # 从得Broker 的角色为SLAVE

     

     

    修改b主配置文件(还是在172.26.103.76主服务器上操作)

    cat /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a.properties >/usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-b.properties

    vim /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-b.properties

    配置文件与a主一样

    主要需要注意修改的:

    brokerId #0 表示Master, > 0 表示slave,

    brokerName #broker-a 修改为broker-b

     

     

    修改b从配置文件(还是在172.26.103.76主服务器上操作)

    cat /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a-s.properties >/usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-b-s.properties

    vim /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-b-s.properties

    配置文件与a从一样

    主要需要注意修改的:

    brokerName #broker-a 修改为broker-b

     

     

    1. 进入conf目录,替换所有xml中的${user.home},保证日志路径正确(还是在172.26.103.76主服务器上操作)

    sed -i 's#${user.home}#/usr/local/rocketmq-4.5.0#g' *.xml

     

     

    1. 进入bin目录,修改配置(分别修改runserver.sh 以及 runbroker.sh,因为默认配置内存过大,可能导致启动失败)

    RocketMQ对内存的要求比较高,最少1G,如果内存太少,会影响RocketMQ的运行效率和执行性能。我们需要修改bin目录下的runbroker.sh和runserver.sh文件

     

    cd /usr/local/rocketmq-4.5/bin

    vim runserver.sh

    本来的4g

    JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

    按照实际机器配置修改1g

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

     

    vim runbroker.sh

    本来的8g

    JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

    按照实际机器配置修改1g

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

     

     

    1. 把在主上172.26.103.76配置好的整体推送到其他三台服务器

    rsync -e "ssh -p 522" -avz /usr/local/rocketmq-4.5.0 172.26.103.77:/usr/local/

    rsync -e "ssh -p 522" -avz /usr/local/rocketmq-4.5.0 172.26.103.78:/usr/local/

    rsync -e "ssh -p 522" -avz /usr/local/rocketmq-4.5.0 172.26.103.79:/usr/local/

     

    1. 分别在四台服务器上配置环境变量

    echo 'export PATH=$PATH:/usr/local/rocketmq-4.5.0/bin' >>/etc/profile

    source /etc/profile

     

    1. 四台分别启动

    注意先启动namesrv再启动broker

    必须先cd到bin目录下,不然会报错

     

    172.26.103.76 a主启动

    cd /usr/local/rocketmq-4.5.0/bin/

    启动namesrv

    nohup sh mqnamesrv &

    再启动broker

    nohup sh mqbroker -c /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a.properties >>/dev/null 2>&1 &

     

    172.26.103.77 a从启动

    cd /usr/local/rocketmq-4.5.0/bin/

    启动namesrv

    nohup sh mqnamesrv &

    再启动broker

    nohup sh mqbroker -c /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-a-s.properties >>/dev/null 2>&1 &

     

    172.26.103.78 b主启动

    cd /usr/local/rocketmq-4.5.0/bin/

    启动namesrv

    nohup sh mqnamesrv &

    再启动broker

    nohup sh mqbroker -c /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-b.properties >>/dev/null 2>&1 &

     

    172.26.103.79 b从启动

    cd /usr/local/rocketmq-4.5.0/bin/

    启动namesrv

    nohup sh mqnamesrv &

    再启动broker

    nohup sh mqbroker -c /usr/local/rocketmq-4.5.0/conf/2m-2s-sync/broker-b-s.properties >>/dev/null 2>&1 &

     

    1. 查看集群状态

    mqadmin clusterList -n 172.26.103.79:9876

    如果有rocketmq-console web管理界面,也可以在这看

     

     

    1. 其他的双主配置,以及异步配置,只是配置文件不同,其他都一样的。

     

     

    1. 遇到的问题

    2. 所有的jdk,不管是yum安装的还是解压缩的,都要添加到环境变量,/bin/tools.sh 会通过环境变量来运行java

    yum安装的openjdk配置环境变量

    JAVA_HOME=/usr/lib/jvm/java

    JRE_HOME=/usr/lib/jvm/java/jre

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    export JAVA_HOME JRE_HOME PATH CLASSPATH

    https://www.jianshu.com/p/17fb50162d3d

    执行命令报错

     

    1. 别人的迁移经历

    https://www.cnblogs.com/zhyg/p/10132598.html

     

     

    1. 关于rocketmq info日志一直打印导致日志很大的问题

    https://blog.csdn.net/weixin_38071106/article/details/88946941

    替换/usr/local/rocketmq/conf 下所有的.xml结尾的文件内的INFO为WARN

    cd /usr/local/rocketmq/conf

    sed -i 's#level value="INFO"#level value="WARN"#g' *.xml

     

    1. 常用命令

    https://blog.csdn.net/gwd1154978352/article/details/80829534

     

    1. 查看帮助

    查看帮助:

    sh mqadmin help 命令名称

    例如,查看updateTopic的使用

    sh mqadmin help updateTopic

    1. 集群相关命令

    查看集群信息:

    -m 打印更多信息 (增加打印出如下信息 #InTotalYest, #OutTotalYest, #InTotalToday ,#OutTotalToday)

    -n nameserve服务地址列表,格式ip:port;ip:port;

    -h 打印帮助

    mqadmin clusterList -n 10.45.47.168:9876

     

     

     

     

     

     

    一辈子最重要的就是选择,认真对待每一次选择,因为它是有限的。
  • 相关阅读:
    puppeteer 离线安装chromium
    如何在Taro项目中使用Iconfont(阿里图标)
    POI3.8内存中限制行数为100问题记录
    centos下puppeteer调用chromium报错,缺少包
    VS Code 简单配置运行Java
    使用VSCode 断点调试 js项目,html页面
    Java--Excel--poi 边框、单元格换行、 背景色、合并单元格相关
    浅析Spring Aware
    Spring MVC 注解
    异常处理
  • 原文地址:https://www.cnblogs.com/-luoke/p/12696777.html
Copyright © 2011-2022 走看看