1:介绍

1:本次搭建集群采用异步复制,主备有短暂消息延迟,毫秒级
2:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为Master 宕机后,消费者仍然可以从 Slave消费,此过程对应用透明。不需要人工干预。
3:Master 宕机,磁盘损坏情况,会丢失少量消息。这个是 rocket 3.5 之前都存在的,3.6之后可以支持主备切换,这个我们下次搭建。

2:准备

准备了 4台虚拟机,IP 地址准备设置成
192.168.10.151 (broker-a 主 )
192.168.10.152 (broker-a 从)
192.168.10.153 (broker-b 主 )
192.168.10.154 (broker-b 从 )

2.1 :准备虚拟机

如图,我们打开VMware,我们上次装的rocketmq 等等都放在 Master 中,我们根据 master 克隆四台机器出来:
在这里插入图片描述
克隆的时候,机器需要处于 未运行 状态
在这里插入图片描述
点击下一页
在这里插入图片描述

继续下一页
在这里插入图片描述
下一页
在这里插入图片描述
修改名称,我这边依次起名叫 rocketmq-151,rocketmq-152,rocketmq-153,rocketmq-154

2.2:修改虚拟机的ip地址

四台虚拟机创建好,分别启动。
首先对于 rocketmq-151 ,打开后进入命令行界面,输入账号密码
在这里插入图片描述
先删除网卡设备,防止连不上网

rm  -rf  /etc/udev/rules.d/70-persistent-net.rules

在这里插入图片描述
然后 执行下面命令,找到 网卡信息

cd /etc/sysconfig/network-scripts/
ls

在这里插入图片描述
可以看到我的 叫做 ifcfg-ens33,网上很多的都是 ifcfg-eth0,还是要根据自己机器的实际展示为准,进入文件,修改 IP 地址,修改成 192.168.10.151

vi  ifcfg-ens33

在这里插入图片描述

修改完成后,执行重启命令

// 更新网络,刷新 IP 地址
service network restart
reboot

重启之后,通过 xshell 继续连接,注意 IP地址是修改好的
四台机器依次执行上面的操作,只是 ip 分别不同,这点千万注意。

2.3:启动 rocketmq 的 NameServer

我们上面通过 xshell 连接过了,四个节点都要启动, 因此我们可以利用 xshell 同时给很多会话发送相同命令的特性来同时启动 4 个节点的 NameServer

Xshell同时向多个会话发送指令的方法链接: https://blog.csdn.net/weixin_30552635/article/details/95206740

我们进入到 rocketmq 文件夹下的 bin 目录下,后台启动 NameServer(多开端点容易乱)

cd /usr/local/rocketmq-4.7.1/bin
ls
./mqnamesrv &

在这里插入图片描述

可以看到,四台机器的 NameServer 分别启动了

2.4:配置配置文件

首先对于 rocketmq-151,我们来到它存放配置文件的地方

cd ../
cd /conf
ls

在这里插入图片描述

可以看见,rocketmq 官方其实已经给我们准备一些配置文件,我们配置 2主2从异步双写的这个,打开这个文件夹
在这里插入图片描述
名字我们一开始就是一样的,所以就不换了

2.4.1:配置rocketmq-151 是 broker-a 的主节点

按照计划,rocketmq-151 是 broker-a 的主节点,那么我们打开 broker-a.properties文件

vi   broker-a.properties

继续配置,添加对 nameServer 的配置

// 四个节点的都要写上,nameServer之间互不通信,需要分别注册
namesrvAddr=192.168.10.151:9876;192.168.10.152:9876;192.168.10.153:9876;192.168.10.154:9876

在这里插入图片描述
添加完成后,启动 rocketmq-151 的 broker

./mqbroker -c ../conf/2m-2s-async/broker-a.properties 

在这里插入图片描述

2.4.2:配置rocketmq-152 是 broker-a 的从节点

按照计划,rocketmq-152 是 broker-a 的从节点,那么我们打开 broker-a-s.properties文件

vi   broker-a-s.properties

继续配置,添加对 nameServer 的配置

// 四个节点的都要写上,nameServer之间互不通信,需要分别注册
namesrvAddr=192.168.10.151:9876;192.168.10.152:9876;192.168.10.153:9876;192.168.10.154:9876

添加完成后,添加完成后,启动 rocketmq-152 的 broker

./mqbroker -c ../conf/2m-2s-async/broker-a-s.properties 

在这里插入图片描述

2.4.3:配置rocketmq-153 是 broker-b 的主节点

按照计划,rocketmq-153 是 broker-b 的主节点,那么我们打开 broker-b.properties文件

vi   broker-b.properties

继续配置,添加对 nameServer 的配置

// 四个节点的都要写上,nameServer之间互不通信,需要分别注册
namesrvAddr=192.168.10.151:9876;192.168.10.152:9876;192.168.10.153:9876;192.168.10.154:9876

添加完成后,添加完成后,启动 rocketmq-153 的 broker

./mqbroker -c ../conf/2m-2s-async/broker-b.properties 

在这里插入图片描述

2.4.4:配置rocketmq-154 是 broker-b 的从节点

按照计划,rocketmq-154 是 broker-b 的从节点,那么我们打开 broker-b-s.properties文件

vi   broker-a-s.properties

继续配置,添加对 nameServer 的配置

// 四个节点的都要写上,nameServer之间互不通信,需要分别注册
namesrvAddr=192.168.10.151:9876;192.168.10.152:9876;192.168.10.153:9876;192.168.10.154:9876

添加完成后,添加完成后,启动 rocketmq-154 的 broker

./mqbroker -c ../conf/2m-2s-async/broker-b-s.properties 

在这里插入图片描述

2.5 :启动控制台,查看集群情况

我们通过 xshell 随便连接 四台机器中的一个,我这边连接 rocketmq-151,java-jar 启动控制台的springboot 项目,并通过浏览器去访问

// 这里也可以随意制定nameServer中的一个,我这里不指定,到控制台去输入
java -jar rocketmq-console-ng-1.0.1.jar

在这里插入图片描述
能看到,启动成功,端口是 8080,我们到浏览器去访问
在这里插入图片描述
点击 OPS,输入一个nameServer,查看集群情况,注意nameServer 的端口号是 9876,也要输入
在这里插入图片描述

我们点击 Cluster ,查看集群情况
在这里插入图片描述
至此。两主两从的异步双写集群搭建完毕。
注意:虽然前面说过了,这里还是要提示一下,一旦Master 宕机,磁盘损坏情况,会丢失少量消息。这个是 rocket 3.5 之前都存在的,3.6之后可以支持主备切换,这个我们下次搭建

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐