RocketMQ多主(noslave)集群搭建

RocketMQ多主(noslave)集群搭建

1. 环境准备

1.1 准备2台服务器地址为:

  • 192.163.1.11

  • 192.163.1.12

并且保证两台机器能供互相ping通

1.2 JDK环境11

sudo apt-get install openjdk-11-jdk

2. 安装RocketMQ

2.1 下载地址

https://mirrors.bfsu.edu.cn/apache/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip

2.2 上传至服务器

上传至/usr/local/environment文件夹中

2.3 解压缩

unzip rocketmq-all-4.8.0-bin-release.zip
#并将文件夹重命名为rocketmq

3.RocketMQ适配jdk-11

由于当前版本和jdk-11版本有较多的冲突。如果要使用jdk-11就需要修改一些配置

3.1 修改runserver.sh文件

vim /usr/local/environment/rocketmq/bin/runserver.sh
  • 删除配置属性:
    • -XX:+UseConcMarkSweepGC
    • -XX:+UseCMSCompactAtFullCollection
    • -XX:-UseParNewGC
    • -XX:+PrintGCDetails
  • 修改Xloggc配置属性:
    • -Xloggc:改成-Xlog:gc:
  • 替换Export配置:
    • 删除/注释:

      export CLASSPATH="${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}"
      
    • 替换成如下配置

      export CLASSPATH=${BASE_DIR}/lib/rocketmq-namesrv-4.8.0.jar:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}
      
  • JAVA_OPT属性
    • 删除如下配置:

      JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"
      
    • 修改配置:

      #将原配置:
      JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
      
      #修改成如下:
      JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
      

3.2 修改runborker.sh文件

vim /usr/local/environment/rocketmq/bin/runbroker.sh
  • 删除配置属性:
    • -XX:+PrintGCDateStamps
    • -XX:+PrintGCApplicationStoppedTime
    • -XX:+PrintAdaptiveSizePolicy
    • -XX:+PrintGCDetails
  • 修改Xloggc配置属性:
    • -Xloggc:改成-Xlog:gc:
  • 替换Export配置:
    #删除或者注释如下配置:
    export CLASSPATH="${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}"
    
    #替换成如下配置:
    export CLASSPATH=${BASE_DIR}/lib/rocketmq-broker-4.8.0.jar:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}
    
  • JAVA_OPT属性
    #删除或注释如下配置:
    JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
    #删除或注释如下配置:
    JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"
    
    
    #将原配置:
    JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    #修改成如下:
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    

4. 配置RocketMQ

4.1 创建存储路径

mkdir /usr/local/environment/rocketmq/store
mkdir /usr/local/environment/rocketmq/store/commitlog
mkdir /usr/local/environment/rocketmq/store/consumequeue
mkdir /usr/local/environment/rocketmq/store/index

4.2 配置broker文件

4.2.1 配置broker-a.properties

vim /usr/local/environment/rocketmq/conf/2m-noslave/broker-a.properties

配置如下:

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.11:9876;192.168.1.12: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/environment/rocketmq/store
#只保留storePathRootDir路径,如果配置下列路径,重新启动broker会失败
#原因是文件路径已存在
#commitLog 存储路径
#storePathCommitLog=/usr/local/environment/rocketmq/store/commitlog
#消费队列存储路径存储路径
#storePathConsumeQueue=/usr/local/environment/rocketmq/store/consumequeue
#消息索引存储路径
#storePathIndex=/usr/local/environment/rocketmq/store/index
#checkpoint 文件存储路径
#storeCheckpoint=/usr/local/environment/rocketmq/store/checkpoint
#abort 文件存储路径
#abortFile=/usr/local/environment/rocketmq/store/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

4.2.1 配置broker-b.properties

与broker-a.properties唯一不同的就是brokerName属性

brokerName=broker-b

其他均相同

4.3 修改日志配置文件

mkdir -p /usr/local/environment/rocketmq/logs
cd /usr/local/environment/rocketmq/conf && sed -i 's#${user.home}#/usr/local/environment/rocketmq#g' *.xml

上段代码表示:进入conf目录,替换所有xml中的${user.home},保证日志路径正确

注意:sed -i在这里起一个批量替换的作用

sed -i 's#原字符串#新字符#g' 替换的文件

5. 启动MQ

5.1 启动NameServer【两台机器】

cd /usr/local/environment/rocketmq/bin
nohup sh mqnamesrv &

5.2 启动BrokerServer A ( 第1台)

cd /usr/local/environment/rocketmq/bin
nohup sh mqbroker -c /usr/local/environment/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &

5.3 启动BrokerServer B( 第2台)

cd /usr/local/environment/rocketmq/bin
nohup sh mqbroker -c /usr/local/environment/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &

结果:使用rocketmq-console浏览:

在这里插入图片描述

6.停止MQ

#关闭namesrv服务:
sh bin/mqshutdown namesrv
#关闭broker服务 :
sh bin/mqshutdown broker
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Docker中安装RocketMQ,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Docker。如果没有,请先安装Docker。 2. 下载RocketMQ的Docker镜像。你可以通过以下命令从Docker Hub下载官方的RocketMQ镜像: ``` docker pull rocketmqinc/rocketmq ``` 3. 创建一个网络用于RocketMQ的容器之间的通信。运行以下命令创建一个用户定义网络: ``` docker network create rocketmq-network ``` 4. 启动RocketMQ Name Server容器。运行以下命令启动一个名为`rocketmq-namesrv`的容器,并将其连接到上一步创建的网络: ``` docker run -d --name rocketmq-namesrv --network rocketmq-network -p 9876:9876 rocketmqinc/rocketmq:latest sh mqnamesrv ``` 5. 启动RocketMQ Broker容器。运行以下命令启动一个名为`rocketmq-broker`的容器,并将其连接到上一步创建的网络: ``` docker run -d --name rocketmq-broker --network rocketmq-network -e "NAMESRV_ADDR=rocketmq-namesrv:9876" -p 10911:10911 -p 10909:10909 rocketmqinc/rocketmq:latest sh mqbroker -c /opt/rocketmq-4.9.0/conf/2m-noslave/broker.conf ``` 注意:上述命令中的`rocketmq-broker`名称和`NAMESRV_ADDR`地址需要与你自己的设置相匹配。你可以根据需要修改`broker.conf`文件来配置Broker。 6. 现在,RocketMQ的Name Server和Broker容器应该已经启动了。你可以使用RocketMQ的客户端进行连接和使用。 这样就完成了在Docker中安装RocketMQ的过程。希望对你有所帮助!如有其他问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值