zoukankan      html  css  js  c++  java
  • Linux环境快速搭建RocketMQ双Master模式

    RocketMQ的集群部署方式有多种,其中包括单个Master、多个Master、多Master多Slave模式(异步复制)以及多Master多Slave模式(同步双写)。本次以多Master集群模式为例搭建一个双机Master的RocketMQ集群环境。

    1、双机Master服务器环境

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

    (1)   10.43.98.34  root          nameServer1,brokerServer1    Master1

    (2)   10.43.98.38  root          nameServer1,brokerServer1    Master2

     

    2、Host添加信息

    对两台机器同时执行vi  /etc/hosts  输入如下图所示的信息

    这里我们是将nameServer和broker部署在同一台机器上的,同样也可以分开部署。

    重启网卡:service network restart

    相互ping一下,在34机器上ping 10.43.98.38   ping  rocketmq-nameserver2   ping  rocketmq-master2 。 37机器上也一样。

    然后就是将RocketMQ的压缩包进行解压,解压到/opt目录下,并创建软连接ln -s RocketMQ rocketmq

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

    我是在/tmp目录下来存储产生的数据的,因此进入到/tmp目录下

    mkdir rocketmq

    mkdir rocketmq/data

    mkdir rocketmq/data/commitlog

    mkdir rocketmq/data/consumerqueue

    mkdir rocketmq/data/index

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

    配置文件位置:cd /opt/RocketMQ/conf/2m-noslave/

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

    #所属集群名字
    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=/opt/rocketmq/data
    #commitLog 存储路径
    storePathCommitLog=/opt/rocketmq/data/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/opt/rocketmq/data/consumequeue
    #消息索引存储路径
    storePathIndex=/opt/rocketmq/data/index
    #checkpoint 文件存储路径
    storeCheckpoint=/opt/rocketmq/data/checkpoint
    #abort 文件存储路径
    abortFile=/opt/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

    brokerId=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 /opt/rocketmq/logs

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

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

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

    1)broker的调优

    vi /opt/rocketmq/bin/runbroker.sh

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

    2)nameserver的调优

    vi /opt/rocketmq/bin/runserver.sh

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

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

    # cd /opt/rocketmq/bin

    # nohup sh mqnamesrv &

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

    mqadnin是管理员命令,mqfiltersrv是rocketmq的单独组件,mqnamesrv是NameServer,mqbroker是Broker。

    jps 查看进程

    # tail -f -n 500 /opt/rocketmq/logs/rocketmqlogs/broker.log

    # tail -f -n 500 /opt/rocketmq/logs/rocketmqlogs/namesrv.log

     

    查看状态。

    8、启动BrokerServer A 10.43.98.34和BrokerServer B 10.43.98.37

    BrokerServer A 10.43.98.34

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

    netstat -ntlp

    jps

     tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log

     tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

    BrokerServer B 10.43.98.37

    nohup sh mqbroker -c /opt/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &

    netstat -ntlp

    jps

     tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log

     tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

  • 相关阅读:
    06.SpringMVC之参数绑定
    05.SpringMVC之请求映射
    04.SpringMVC之用
    03.SpringMVC之器
    02.SpringMVC之初体验
    01.SpringMVC之概述
    Spring 中的Null-Safety
    Spring中Resource(资源)的获取
    Spring的事件机制详解
    Spring详解(二)------注解配置IOC
  • 原文地址:https://www.cnblogs.com/wrong5566/p/6078592.html
Copyright © 2011-2022 走看看