zoukankan      html  css  js  c++  java
  • RocketMQ学习笔记(4)----RocketMQ搭建双Master集群

    前面已经学习了RockeMQ的四种集群方式,接下来就来搭建一个双Master(2m)的集群环境。

    1. 双Master服务器环境

    序号    ip      用户名    密码        角色            模式

    (1)   47.105.145.123  root          nameServer1,brokerServer1     Master1

    (2)   47.105.149.61  root            nameServer2,brokerServer2      Master2

    2. 修改hosts环境

      两台机器同时修改:vim /etc/hosts

      

      重启网卡:service network restart

      在ip123上ping 47.105.149.61, nameServer2,brokerServer2。在61上也同理:

      

    3. 安装RocketMQ

      从官网上下载RocketMQ,官网地址:http://rocketmq.apache.org/

      解压到:/usr/local/middle/下,两台机器一样。

      

    2. 创建数据存储路径(两台机器都要创建)

      创建文件夹。如下

    mkdir /usr/local/middle/rocketmq/data
    #commitLog 存储路径
    mkdir /usr/local/middle/rocketmq/data/commitlog
    #消费队列存储路径存储路径
    mkdir /usr/local/middle/rocketmq/data/consumequeue
    #消息索引存储路径
    mkdir /usr/local/middle/rocketmq/data/index
    #checkpoint 文件存储路径
    mkdir /usr/local/middle/rocketmq/data/checkpoint
    #abort 文件存储路径
    mkdir /usr/local/middle/rocketmq/data/abort

     

    4. 修改RocketMQ的配置文件:broker-a.properties  broker-b.properties

      配置文件位置:cd /usr/local/middle/rocketmq/conf/2m-noslave/

      

      因为有两个master主节点,所以主节点1启动依赖broker-a.properties,主节点2启动依赖broker-b.properties,如果是三个Master,那么还会有一个broker-c.properties,以此类推

    # 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.
    #所属集群名字
    brokerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-a|broker-b
    #0 表示 Master, >0 表示 Slave
    brokerId=0
    #nameServer地址,分号分割
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
    #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
    defaultTopicQueueNums=4
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #Broker 对外服务的监听端口
    listenPort=10911
    #删除文件时间点,默认凌晨 0点
    deleteWhen=00
    #文件保留时间,默认 48 小时
    fileReservedTime=120
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    #存储路径
    storePathRootDir=/usr/local/middle/rocketmq/data
    #commitLog 存储路径
    storePathCommitLog=/usr/local/middle/rocketmq/data/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/usr/local/middle/rocketmq/data/consumequeue
    #消息索引存储路径
    storePathIndex=/usr/local/middle/rocketmq/data/index
    #checkpoint 文件存储路径
    storeCheckpoint=/usr/local/middle/rocketmq/data/checkpoint
    #abort 文件存储路径
    abortFile=/usr/local/middle/rocketmq/data/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 

    rokerId=0表示是master,大于0则表示是slave;

    另外BrokerName=broker-a要对应;在34机器上是broker-a,在第二台机器37上则是broker-b。分别在34和37上修改broker-a.properties和broker-b.properties。

    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876。这个要和之前配置的名称相互对应。

    对外服务的通信端口是9876。

    文件默认大小是1G,当写满后再自动创建。#commitLog每个文件的大小默认1G

     5. 修改日志配置文件

    在rocketmq文件夹下创建一个logs目录 mkdir /usr/local/middle/rocketmq/logs

    然后执行cd /usr/local/middle/rocketmq/conf && sed -i 's#${user.home}#/usr/local/middle/rocketmq#g' *.xml进行日志文件的替换,sed是linux的替换命令。两台机器同样操作。

    6. 修改启动脚本参数(JVM参数的调优) 

      两台机器都要改,因为我们之前将nameServer和broker放在了同一台机器上,所以需要分别对nameServer和broker进行jvm的性能调优。生产环境默认即可不要修改。

      1)broker的调优

      vim /usr/local/middle/rocketmq/bin/runbroker.sh

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

      2)nameserver的调优

      vim /usr/local/middle/rocketmq/bin/runserver.sh

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

    7. 启动nameserver

      启动两台机器的NameServer:先启动两台机器的NameServer,再启动两台机器的Borker,关机的时候顺序相反,先关闭两台机器的Broker,再关闭两台机器的Nameserver。 

      cd /usr/local/middle/rocketmq/bi

      nohup sh mqnamesrv &

      上面这条命令nohup是起一个守护线程。

      jps 查看进程

      

    8、启动BrokerServer A 和BrokerServer B 

      Broker A (ip后为123)

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

      Broker B(ip后为61) 

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

      使用jps 查看进程:

      

      查看broker的日志

      这样就表示每台机器的nameserver和broker都成功启动,且集群成功连接。

    9. 关闭nameserver和broker

      先关闭broker

      sh mqshutdown broker

      在关闭nameserver

      sh mqshutdown namesrv

      

    原文 RocketMQ学习笔记(4)----RocketMQ搭建双Master集群

  • 相关阅读:
    nginx 指定多个域名跨域请求配置 find ./ ! -path "./node_modules/*" -name *.js |xargs egrep basePath
    所以 if a 代表如果a有值的时候执行的内容,有值才能执行是True if not a 代表 a无值是空的时候执行的内容 not False 是True才能执行 代表空值的时候执行
    python 逻辑运算符
    git的突出解决--git rebase之abort、continue、skip
    chromium source get
    How JavaScript works in browser and node?
    chromium windows compile 浏览器编译 vs2017 win10
    Git Reset 三种模式
    webkit js
    用electron自己的nodejs写的depot_tools 工具下载 构建源码
  • 原文地址:https://www.cnblogs.com/xiaoshen666/p/10867486.html
Copyright © 2011-2022 走看看