RockeyMQ集群代建

1:单节点 

  优点:配置简单,同步方式发送,消息一条都不会丢失.

 缺点:要是宕机的话,就不可用了,在测试环境用的比较多.

 

2:主从模式

 优点:如果主节点宕机了,从节点还能对外进行消费,但不支持写入

 缺点:存在着短暂的延时,主从同步需要时间,但都是毫秒级别的,目前的话不支持主从切换,只能通过shell脚本进行检测,停止broker进行重启主从切换

 

3:双主

 优点:配置简单,可以通过RAID磁盘策列确保一个消息的可靠性

 缺点:master宕机期间,未被消费的消息都不能进行一个对外的提供,影响可用性

 

4:双主双重 (异步刷盘)

优点:磁盘损坏,丢失的消息非常的少,master宕机了,任然可以重slave去获取消费

缺点:主备同步存在短暂的延时

 

5:双主双重,多主多重模式(同步方式)

优点:同步双写方式,主备成功后才返回,可用性非常的高

缺点:性能会比异步的底

 

一般公司用的主要是 2,4,5

 

 

官方架构图

 

 双主双重同步双写模式,producer和Consumer交互需要从NameSvr获取相当于的路由信息进行交互

1、Name Server是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。

2、每个Broker与Name Server集群中的所有节点建立长连接,定时注册Topic信息到所有Name Server。

3、Producer与Name Server集群中的其中一个节点(随机选择)建立长连接,定期从Name Server取Topic路由信息。

4、Consumer与Name Server集群中的其中一个节点(随机选择)建立长连接,定期从Name Server取Topic路由信息。

5.broker分为master和slave,一个master对应多个slave 但一个slave只能有一个master

 

 

 

 

同步刷盘和异步刷盘

 

 同步刷盘安全性高,用户请求进来到应用常驻内存,在保存到磁盘,最后响应给用户

 异步刷盘:性能高,用户请求进来到应用常驻内存直接返回,再去更新磁盘,但数据不可靠,假设在返回的瞬间宕机了,数据也丢失了

 

 

同步双写,异步刷盘

 

 

同步双写就是用户请求进来,发送到master主节点,在同步到slave从节点,最后返回给用户,异步刷盘就是主从节点各自开个线程去备份磁盘,假设master宕机了,也不影响slave的数据备份,数据安全性高,如果master和slave都宕机了,那数据就丢失了,这种概率非常的小

 

 

 

主从代建:

准备两台服务器,安装JDK,MAVEN

 

如果服务器内存没4G的话,各自修改内存配置

修改 distribution/target/apache-rocketmq/bin/runserver.sh

  vi   runserver.sh

 

 

 

1 修改完成后 按Esc键  :wq 保存

 

守护进程启动   nohup sh bin/mqnamesrv &

 

 

 

查看启动日志   tail -f nohup.out

 

 

 

 

jps 查看进程,NameSer启动成功

 

 

 

 

另一台服务器做相同的操作

 

主服务器节点配置

进入 conf 文件

 

 

 

2m-2s-async  两主两从 异步方式

2m-2s-sync    两主两从同步方式

2m-noslave     两主没有从节点

 

配置  2m-2s-async

 

 

 

 

broker-a.properties  master 主节点配置

broker-a-s.properties  master 主节点对应的从节点配置

broker-b.properties  主节点2配置

broker-b-s.properties  主节点2对应的从节点配置

 

主从的话只用第一个就行了

编辑 vi  broker-a.properties

 

 

 

 

 

namesrvAddr :配置主从的ip,用逗号分隔

brokerClusterName :集群的名称

brokerId :0代表是master主节点, 大于0代表从节点
 
deleteWhen:每天执行删除文件的时间,默认凌晨4点
 
brokerRole: 角色 
flushDiskType:刷盘策列 默认为ASYNC_FLUSH(异步刷盘) , 和另外一个是 SYNC_FLUSH(同步刷盘)
 
 
 
配置从节点 服务器 2
 
编辑 vi  broker-a-s.properties
 

 

 修改 namesrvAddr 主从IP地址

   brokerId=1 从节点

 

回退到 rockeymq 目录

sh bin/mqshutdown broker 停止broker
sh bin/mqshutdown namesrv 停止nameSrv
 

服务器 1 启动主节点  nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &

 

服务器 2 启动从节点  

nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties &
 
 

 

 

 控制台查看是否代建成功

 进入 rocketmq-externals-master/rocketmq-console  修改两个东西

 1: vi pom.xml   官方的版本号 去掉后面的字母

 

 

2:进入 rocketmq-externals-master/rocketmq-console/src/main/resources 修改 application.properties

vi application.properties

 增加 rocketmq.config.namesrvAddr=主节点ip;从节点IP
 

 

 

 回退到 rocketmq-externals-master/rocketmq-console 

 打包 mvn install -Dmaven.test.skip=true

 

 

 

打包完成后生成一个 target 目录  进入 target

 

 

守护进程启动 

  nohup java -jar rocketmq-console-ng-1.0.0.jar &

 

 

外网访问控制台   外网ip:8080

 

 

 

代建成功:

1:打不开的话可以到服务器安全组配置相对应的开放端口号

2:

systemctl stop firewalld 关闭防火墙

 

 
posted on 2020-03-31 12:04  散漫的烟灰  阅读(191)  评论(0编辑  收藏  举报