1:介绍2:准备
2.1 :准备虚拟机2.2:修改虚拟机的ip地址2.3:启动 rocketmq 的 NameServer2.4:配置配置文件
2.4.1:配置rocketmq-151 是 broker-a 的主节点2.4.2:配置rocketmq-152 是 broker-a 的从节点2.4.3:配置rocketmq-153 是 broker-b 的主节点2.4.4:配置rocketmq-154 是 broker-b 的从节点 2.5 :启动控制台,查看集群情况 1:介绍
1:本次搭建集群采用异步复制,主备有短暂消息延迟,毫秒级
2:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为Master 宕机后,消费者仍然可以从 Slave消费,此过程对应用透明。不需要人工干预。
3:Master 宕机,磁盘损坏情况,会丢失少量消息。这个是 rocket 3.5 之前都存在的,3.6之后可以支持主备切换,这个我们下次搭建。
准备了 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 从 )
如图,我们打开VMware,我们上次装的rocketmq 等等都放在 Master 中,我们根据 master 克隆四台机器出来:
克隆的时候,机器需要处于 未运行 状态
点击下一页
继续下一页
下一页
修改名称,我这边依次起名叫 rocketmq-151,rocketmq-152,rocketmq-153,rocketmq-154
四台虚拟机创建好,分别启动。
首先对于 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 restartreboot
重启之后,通过 xshell 继续连接,注意 IP地址是修改好的
四台机器依次执行上面的操作,只是 ip 分别不同,这点千万注意。
我们上面通过 xshell 连接过了,四个节点都要启动, 因此我们可以利用 xshell 同时给很多会话发送相同命令的特性来同时启动 4 个节点的 NameServer
Xshell同时向多个会话发送指令的方法链接: https://blog.csdn.net/weixin_30552635/article/details/95206740
我们进入到 rocketmq 文件夹下的 bin 目录下,后台启动 NameServer(多开端点容易乱)
cd /usr/local/rocketmq-4.7.1/binls./mqnamesrv &
可以看到,四台机器的 NameServer 分别启动了
2.4:配置配置文件首先对于 rocketmq-151,我们来到它存放配置文件的地方
cd ../cd /confls
可以看见,rocketmq 官方其实已经给我们准备一些配置文件,我们配置 2主2从异步双写的这个,打开这个文件夹
名字我们一开始就是一样的,所以就不换了
按照计划,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之后可以支持主备切换,这个我们下次搭建