zoukankan      html  css  js  c++  java
  • RocketMQ环境搭建(双master模式)

    介绍:

      多Master模式,一个集群无Slave,全是Master,例如2个Master或者3个Master。

      优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)。性能最高。

      缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会收到影响

    1. 服务器环境:

    服务器A      
    192.168.192.130
    服务器B
    192.168.192.131

    2.编辑服务器A和服务器B的hosts文件,添加同样的内容

    vim /etc/hosts
    
    192.168.192.130 rocketmq-nameserver1
    192.168.192.130 rocketmq-master1
    192.168.192.131 rocketmq-nameserver2
    192.168.192.131 rocketmq-master2

    3.重启一下两台机器的网卡并且两台服务器相互ping一下,看是否通

    重启网卡
    $ service network restart

    #130上ping 131 ping rocketmq-nameserver2 ping rocketmq-master2

    #131上ping 130

    ping rocketmq-nameserver1
    ping rocketmq-master2

    4. 上传alibaba-rocketmq-3.2.6.tar.gz 到两台服务器上面的/usr/local下解压,改名(两个服务器操作相同)

    tar -vxzf alibaba-rocketmq-3.2.6.tar.gz
    mv alibaba-rocketmq-3.2.6 rocketmq

    5.在两台服务器上面创建存储路径(两个服务器操作相同)

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

    6.编辑两台服务器上面rocketmq的配置文件(两个服务器操作相同)

    6.1 修改broker-a.properties文件

    vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
    
    #所属集群名字
    borkerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-a
    #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
    #删除文件时间点,默认凌晨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

    6.2 修改broker-b.properties文件

    vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
    
    #所属集群名字
    borkerClusterName=rocketmq-cluster
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=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
    #删除文件时间点,默认凌晨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

    7.修改两台机器的日志配置文件(两个服务器操作相同)

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

    8.修改启动脚本参数,JVM调优(两个服务器操作相同)

    #broker调优
    vim /usr/local/rocketmq/bin/runbroker.sh
     

    #nameserver调优
    vim /usr/local/rocketmq/bin/runserver.sh

    9.启动NameServer(两个服务器操作相同)

    cd /usr/local/rocketmq/bin
    nohup sh mqnamesrv &
    jps--看进程

    10.启动BrokerServer A 服务器A

    cd /usr/local/rocketmq/bin
    nohup sh mqbroker -c /usr/local/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

    11.启动BrokerServer B 服务器B

    cd /usr/local/rocketmq/bin
    nohup sh mqbroker -c /usr/local/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

    12. 停止broker命令

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

    13.停止nameserver命令

    sh bin/mqshutdown namesrv

    参考:

    [1]官网,http://rocketmq.apache.org/docs/quick-start/

    [2]博客,https://www.cnblogs.com/wrong5566/p/6078592.html

    [3]文档,RocketMQ用户指南3.2.4

  • 相关阅读:
    构建调试Linux内核网络代码的环境MenuOS系统
    关于iOS开发证书的一些总结(很有用)
    iOS原型模式
    iOS不用调用,running time自动执行方法
    关于网络设计服务结构的一些理解
    iOS 6.0之后支持一个页面横屏的方法
    iOS返回一个前面没有0,小数点后保留两位的数字字符串
    CoreData总结
    分享一个复用代码块的博客
    分享一个可以打开沙盒的软件
  • 原文地址:https://www.cnblogs.com/happyflyingpig/p/8111388.html
Copyright © 2011-2022 走看看