rocketmq集群安装

878 阅读4分钟

1.Rocketmq组成

Rocketmq由四部分组成

  1. producer 消息的生产者
  2. Consumer 消息的消费者
  3. Broker 消息的储存者
  4. NameServer 注册中心

RocketMQ的启动顺序是先启动NameServer,再启动Broker,这个时候消息队列就已经可以提供服务了

2.单机版安装

  1. 到官网上下载安装包,并解压到本地,我使用的版本是4.3.0

    # wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.3.0/rocketmq-all-4.3.0-bin-release.zip
    # unzip rocketmq-all-4.3.0-bin-release.zip 
    # mv rocketmq-all-4.3.0-bin-release.zip /usr/local/rocketmq
    
  2. 创建日志存储文件夹

    # mkdir /usr/local/rocketmq/store
    # mkdir /usr/local/rocketmq/store/commit
    # mkdir /usr/local/rocketmq/store/consum
    # mkdir /usr/local/rocketmq/store/index
    
  3. rocket 配置文件修改

    # vim /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties
    #可以直接将以下内容覆盖到properties文件中
    
    terName=rocketmq-cluster
    #broker 名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-a
    #0 表示 Master, #0 表示 Slave
    brokerId=0
    #nameServer 地址,如果是集群使用,分号分割
    #假如我这台机器的地址是192.168.99.171
    namesrvAddr=192.168.99.171: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/store
    #commitLog 存储路径
    storePathCommitLog=/usr/local/rocketmq/store/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/rocketmq/store/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/rocketmq/store/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/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. 修改启动脚本参数 (默认会占用8G内存)

    # vim /usr/local/rocketmq/bin/runbroker.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -
    XX:MaxPermSize=320m
    
    # vim /usr/local/rocketmq/bin/runserver.sh
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -
    XX:MaxPermSize=320m"
    
  5. 启动NameServer

    # cd /usr/local/rocketmq/bin
    # nohup sh mqnamesrv &
    
  6. 启动BrokerServer

    # cd /usr/local/rocketmq/bin
    # nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties >>
    # /dev/null 2#&1 &
    
  7. 查看是否安装成功

    # jps
    4370 BrokerStartup
    4319 NamesrvStartup
    4847 Jps
    
  8. 停止服务

    # cd /usr/local/rocketmq/bin
    # sh mqshutdown broker
    # sh mqshutdown namesrv
    

3.主从配置

假设目前有192.169.99.171192.169.99.172两台机器,且已经各自安装好的rocketmq环境了,

在配置前,必须先停掉rocketmq服务

1.配置主服务器(假如192.168.99.171为主节点,192.168.99.172为从节点)

# cd /usr/local/rocketmq/conf/2m-2s-async
# vim broker-a.properties
#broker 名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.99.171:9876;192.168.99.172:9876
#Broker 的角色
#- ASYNC_MASTER 异步复制 Master
#- SYNC_MASTER 同步双写 Master
#- SLAVE
brokerRole=ASYNC_MASTER

2.配置从服务器

# cd /usr/local/rocketmq/conf/2m-2s-async
# vim broker-a-s.properties
#broker 名字,这里的名字必须和主服务的保持一致,这样才能确定对应的主节点
brokerName=broker-a
#0 表示 Master, >0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.99.171:9876;192.168.99.172:9876
#Broker 的角色
#- ASYNC_MASTER 异步复制 Master
#- SYNC_MASTER 同步双写 Master
#- SLAVE
brokerRole=SLAVE

3.启动主服务器

##启动mqnameserv
# cd /usr/local/rocketmq/bin
# nohup sh mqnamesrv &	
##启动broker
# nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties

4.启动从服务器

##启动mqnameserv
# cd /usr/local/rocketmq/bin
# nohup sh mqnamesrv &	
##启动broker
# nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties

rocketmq的主从复制配置很简单,rocketmqconf文件夹下,根据不同的复制方式,创建了不同的文件,比如

2m-2s-async 双主双从 异步复制

2m-2s-sync 双主双从 同步复制

2m-noslave 双主模式

其中每个文件下的properties文件又是根据主配置和从配置划分的,比如2m-2s-async文件夹下

broker-a.properties表示第一台主节点的配置

broker-a-s.properties表示第一台从节点的配置

broker-b.properties表示第二台主节点的配置

broker-b-s.properties表示第二台从节点的配置

这些properties文件的指定方式并不是强制的,只是一种约定而已,然后启动broker传入对应的配置即可

也就是说你想让你某台机器启动是时候是主节点,那么就传入主节点的配置,反之也是一样

# nohup sh mqbroker -c 配置文件路径