首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

业务稳定性迁移实验

在业务安全中,不仅仅要考虑业务是否有被攻击的可能,同时也要考虑整个业务的稳定性

如果大家认为这是运维要考虑的事情安全不需要考虑就有些片面了,在整体架构中,安全协同运维做好架构方面的设计是十分必要的,人无完人,只有方方面面都考虑到才能保证业务的安全。

在我们的架构中核心是zookeeper,今天想讲的是zookeeper的平滑故障迁移,这实际上应该是故障应急演练,当然认为这是运维工作的可以跳过。

什么是zookeeper:

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

zookeeper的原理:

ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题

即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer,具体算法可见Fast Paxos。

因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。

zookeeper的基本运行流程:

1、选举Leader。

2、同步数据。

3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。

4、Leader要具有最高的执行ID,类似root权限。

5、集群中大多数的机器得到响应并接受选出的Leader。

实验理论

3台zookeeper形成稳定的集群,当其中一台发生故障时,另外两台接替故障的一台继续工作

当follower出现问题时,leader不会发生变化,此时将迁移的对象接入,由于持续工作的两台配置文件没有变更,所以迁移的对象无法接入,处于notrunning状态,改变配置重启follower节点

停止被迁移的zookeeper将迁移对象接入,此时应是被迁移对象与leader形成一个集群正常工作,改变第三个节点的配置文件形成迁移后的3节点集群

实验环境

4台zookeeper

IP:

172.31.253.111

172.31.253.112

172.31.253.113

172.31.253.115

实验步骤

1.配置zookeeper(112,113,115为一个集群,目前集群为原始集群,即为无故障集群,集群上放test作为数据标识)

112配置文件:zoo.cfg

Myid:1

113配置文件:zoo.cfg

Myid:2

115配置文件:zoo.cfg

Myid:3

启动集群,查看集群状态

112follower:

113follower:

115leader:

115是leader,保留115,从follower开始模拟112发生故障,替换112->111

4.替换

111配置文件:

Myid:1

启动111并查看状态

此时的集群状态:

111:not running(对状态有质疑的请往上翻看实验理论)

112:follower

113:follower

115:leader

查看数据:

存在测试数据test(标识数据)

将113的配置文件变更

停掉112重启并查看状态

此时集群状态:

111:follower

113:follower

115:leader

查看数据:

将115配置文件变更后重启

数据依旧存在并且完成zookeeper的故障机替换

注:在启动113时如果没有停掉112,会导致115,112为一个集群,111,113为一个集群,出现两个leader,数据在两个集群中同时存在,数据虽然不受影响

但集群会有瞬时的中断,在此过程中会造成数据丢失的风险,所以一定注意要将替换下的zookeeper停掉!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200305A0W46Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券