Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lec 4:主从备份 #7

Open
chaozh opened this issue Apr 22, 2017 · 1 comment
Open

Lec 4:主从备份 #7

chaozh opened this issue Apr 22, 2017 · 1 comment
Labels

Comments

@chaozh
Copy link
Owner

chaozh commented Apr 22, 2017

课前阅读论文:Fault-Tolerant Virtual Machines (2010)
视频:Lecture4
讲义:英文
代码实验:Lab2-Raft 2A

本期问题(请大家在本issue中直接回答):论文中VM FT如何处理网络分区问题?即网络分区中断导致备份机器以为主机已经失效,自动成为主机进行服务,致使全网络中出现多台主机。

@chaozh
Copy link
Owner Author

chaozh commented Jun 24, 2017

主从备份是增加容错性最直观的思路(热备模式),其可以处理一个副本单例发生“failure-stop”错误的情况,即某个副本单例完全停止服务(确保程序退出是其最终状态),要认知这种手段并不能处理程序出bug或人工配置出现错误的情况,因为程序bug不会被该手段感知(但可以借助checksums来感知),甚至会把错误复制到所有副本,而且关键程序bug通常不是发生“failure-stop”错误。使用这个策略需要考虑的是n个副本的经济成本问题。

主从备份有两种实现策略:

  • 状态同步 state transfer 主机执行命令后,将自身状态同步到备机(类似快照同步),主要问题是状态通常信息量比较大,而网络传输较慢,可以借助硬件特性来实现
  • 状态机复制 replicated state machine 主机和备机执行相同的操作序列(类似日志同步),实现起来稍微复杂一些,通常是应用层来实现

主从备份实现通常需要考虑的问题:

  • 哪些状态或操作需要同步到备机(粒度与内容的问题)
  • 主机需要等待备机吗
  • 什么时候需要切换到备机
  • 切换时异常是否对外可见
  • 如何加快切换过程

文章例子出自VMWare通过主从备份实现了商业级高可用虚拟机,实际运用仅需20M带宽通信且少于10%的性能损耗,但注意VM状态同步运行实际上使用的是状态机复制机制(类似binlog)。检测主/备失败方法是通过udp心跳以及监控log channel上的流量。核心是要保证主备各种情况下都是在同样的状态下按同样的顺序处理同样的日志。

特别的是存储上使用的是share disk模式,使用共享存储来避免脑裂问题。备机在go live之前,在共享存储上执行一个test and set操作,若执行失败,则自杀。若无法访问共享存储,则不断重试直到可以访问。使用共享存储解决脑裂问题不会引入额外的不可用。

PS:选择这篇文章是因为其依靠状态机复制机制来实现了机器级别的状态同步

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant