我们只尝试应付fail-stop的故障 在备份服务器上复制状态的一种方法是将主服务器的所有状态,包括CPU、memory、IO设备,连续地送给备份服务器。然而,这种发送状态的方法,尤其是涉及到内存中的变更,其需要的带宽非常大。另一种可以用更少带宽复制服务器的方法类似于状态机。这种思路是将服务器建模为确定性的状态机,他们从相同的初始状态开始,并且确保以相同的顺序接收相同的输入请求,这样就能保持同步。因为大多数服务器或服务有一些不确定性的操作,因此必须使用额外的协调机制来确保主备同步。然而,需要保持主备一致性的额外信息数目,远远少于正在变更的主服务器上状态(主要是内存更新)的数目。
为了检测主或备份虚拟机是否失败,我们的系统既使用相关服务器间的心跳机制,同时也监测 logging channel 上的流量。另外,我们我们必须确保只有主或备份VM执行操作,即使存在脑裂(split brain)的场景,在这种场景中主备服务器互相之间会失去通信。