【三】RocketMQ集群搭建

集群搭建方式

前置配置

 1. 安装JDK 11.0.5
 2. 修改RocketMQ的启动脚本:
 3. bin/runserver.sh
 4. bin /runbroker.sh 
 5. bin/tools.sh
 6. 4台linux台服务器(本文是虚拟机Centos7)

集群特点

NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有NameServer。

Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳。Producer完全无状态,可集群部署。

Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息,也可以从Slave订阅消息,
订阅规则由Broker配置决定。

集群模式

单Master模式

这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。

  1. 修改vim /etc/hosts ip映射(4台服务器均修改)

    192.168.132.200 node1
    192.168.132.201 node2
    192.168.132.202 node3
    192.168.132.203 node4
    
    
  2. 启动NameServer

    ### 首先启动NameServer
    $ nohup sh mqnamesrv &
    ### 检查Name Server是否启动成功
    $ tail -f ~/logs/rocketmqlogs/namesrv.log
    The Name Server boot success...
    
  3. 启动Broker

    ### 首先启动broker
    $ nohup sh bin/mqbroker  -c  /usr/local/rocketmq-4.5.1/conf/broker.conf &
    ### 检查broker是否启动成功。如果看到broker的下面的语句表示启动成功
    $ tail -f ~/logs/rocketmqlogs/broker.log
    The broker[broker-a,192.169.1.2:10911] boot success...
    

    在这里插入图片描述

多Master模式

一个集群无Slave,全是Master,例如2个Master或者3个Master,这种模式的优缺点如下:

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

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

  1. 启动NameServer

    ### 首先启动NameServer
    $ nohup sh mqnamesrv &
    ### 检查Name Server是否启动成功
    $ tail -f ~/logs/rocketmqlogs/namesrv.log
    The Name Server boot success...
    
  2. 启动Broker集群

    ### 启动Master的broker:broker-a
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
    ### 在另外一台服务器上启动另一个Master的broker:broker-b
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
    ### 在另一台服务器上启动broker-a的Slave
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &
    ### 在另一台服务器上启动broker-b的Slave
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &
    
多Master多Slave模式(异步)

每个Master配置一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟
(毫秒级),这种模式的优缺点如下:
优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,
消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模
式几乎一样;
缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

  1. 启动NameServer

    ### 首先启动NameServer
    $ nohup sh mqnamesrv &
    ### 检查Name Server是否启动成功
    $ tail -f ~/logs/rocketmqlogs/namesrv.log
    The Name Server boot success...
    
  2. 启动Broker集群

    ### 在机器A,启动第一个Master,例如NameServer的IP为:192.168.1.1
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
     
    ### 在机器B,启动第二个Master,例如NameServer的IP为:192.168.1.1
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
     
    ### 在机器C,启动第一个Slave,例如NameServer的IP为:192.168.1.1
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &
     
    ### 在机器D,启动第二个Slave,例如NameServer的IP为:192.168.1.1
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &
    
多Master多Slave模式(同步)

每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,
才向应用返回成功,这种模式的优缺点如下:

优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用
性都非常高;

缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的RT会略高,且目前版
本在主节点宕机后,备机不能自动切换为主机。

  1. 启动NameServer

    ### 首先启动NameServer
    $ nohup sh mqnamesrv &
    ### 检查Name Server是否启动成功
    $ tail -f ~/logs/rocketmqlogs/namesrv.log
    The Name Server boot success...
    
  2. 启动Broker集群

    ### 在机器A,启动第一个Master,例如NameServer的IP为:192.168.1.1
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &
     
    ### 在机器B,启动第二个Master,例如NameServer的IP为:192.168.1.1
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &
     
    ### 在机器C,启动第一个Slave,例如NameServer的IP为:192.168.1.1
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &
     
    ### 在机器D,启动第二个Slave,例如NameServer的IP为:192.168.1.1
    $ nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刚仔灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值