Fault Tolerance(FT)

vSphere Fault Tolerance通过创建和维护与主虚拟机相同,并且可在发生故障切换时随时替换主虚拟机的辅助虚拟机,来确保虚拟机的连续可用性,其实就是一为某一个虚拟机创建一个完全相同的副本。可以为虚拟机启用vSphere Fault Tolerance。比获得比vSphere HA所提供的级别更高的可用性和数据保护,从而确保业务连续性。Fault Tolerance时基于ESXi主机平台构建的(使用VMware vLockstep技术),它通过在单独主机上一虚拟锁步方式运行相同的虚拟机来提供连续可用性。

使用FT技术,允许虚拟机在无须中断的情况下从服务器故障恢复,实现零停机时间和零数据丢失。基于vLockstep技术,该技术时主虚拟机和辅助虚拟机保持虚拟同步运行。VMware FT独立于应用程序和操作系统,允许以更低的成本和复杂性保护更多应用程序,并且可以和其他的vSphere功能集成。

(一)vSphere中的FT

vSphere HA通过在主机出现故障时重新启动虚拟机来为虚拟机提供基本级别的保护。vSphere FT可提供更高级别的可用性,允许用户对任何虚拟机运行保护以防止主机发生故障时丢失数据、事务或连接。FT通过确保主虚拟机和辅助虚拟机的状态在虚拟机的指令执行的任何时间点均相同来提供连续可用性。使用ESXi平台上的额VMware vLockstep技术来完成此过程。vLockstep通过使主虚拟机和辅助虚拟机执行相同顺序的X86指令来完成此过程。主虚拟机捕获所有输入和事件(从处理器到虚拟I/O设备),并在辅助虚拟机上进行重放。辅助虚拟机执行与主虚拟机相同的指令序列,而仅单个虚拟机映像(主虚拟机)执行工作负载。如果运行主虚拟机的主机或运行辅助虚拟机的主机发生故障,则会发生即时且透明的故障切换。正常运行的ESXi主机将无缝变成主虚拟机的主机,而不会断开网络连接或中断正在处理的事务。使用透明故障切换,不会有数据损失,并且可以维护网络连接。在进行透明故障切换之后,将重新生成新的辅助虚拟机,并且将重新建立冗余。整个过程是透明且全自动的,并且即使vCenter Server不可用,也会发生。

(二)vSphere FT的工作方式

VMware 容错可通过创建和维护等同于主虚拟机并可在发生故障切换时替换主虚拟机的辅助虚拟机来为虚拟机提供连续可用性。当启用Fault Tolerance时,会创建一个重复虚拟机(称为辅助虚拟机),该虚拟机会以虚拟锁步方式随主虚拟机一起运行。VMware vLockstep可捕获主虚拟机上发生的输入和事件,并将这些输入和事件发送到正在另一个主机上运行的辅助虚拟机。使用此信息,辅助虚拟机的执行将等同于主虚拟机的执行。因为辅助虚拟机与主虚拟机一起以虚拟锁步的方式运行,所以它可以无中断地接管任何点处的执行,从而提供容错保护,如图:

主虚拟机和辅助虚拟机可持续交换检测信号。此交换使得虚拟机对中的虚拟机能够监控彼此的状态,以确保持续提供FT保护。如果运行主虚拟机的主机发生故障,系统会执行透明故障切换,此时会立即启用辅助虚拟机以替换主虚拟机,并且将重新启动新的辅助虚拟机,同时在几秒内重新建立FT冗余。如果运行辅助虚拟机的主机发生故障,则该主机也会立刻被替换。在任一情况下,用户都不会遭遇服务中断和数据丢失的情况。容错虚拟机及其辅助副本不允许在相同主机上运行。此限制可确保出故障的主机不会使两个虚拟机同时丢失。也可以使用虚拟机-主机关联性规则来确定要在其上运行指定虚拟机的主机。如果使用这些规则,应了解对于受这种规则影响的任何主虚拟机,其关联的辅助虚拟机也受这些规则影响,如图:

(三)vSphere FT的要求

在使用FT之前,必须满足的要求包括群集要求、主机要求、虚拟机要求和硬件要求。

群集要求:至少有两台通过FT认证的主机运行相同的FT版本号或主机内部版本号,如FT版本:2.0.1-3.0.0-3.0.0.ESXi主机可以访问相同的虚拟机数据存储和网络,配置了FT日志记录和vMotion网络,vSphere HA群集已创建并启用。

主机要求:主机上的物理处理器必须来自与FT兼容的处理器组。要确认群集内的主机是否兼容,从而判断其是否支持FT。

虚拟机要求:虚拟机文件必须存储在共享存储上。可接受共享的存储解决方案包括光纤通道、(硬件和软件)iSCSI、NFS和NAS。虚拟机必须存储在虚拟RDM或厚置备的虚拟机磁盘(VMDK)文件(已启用“群集功能”选项)中。虚拟机必须在一个受制裁的客户机操作系统上运行。

时间: 2024-10-27 07:25:00

Fault Tolerance(FT)的相关文章

Flink Program Guide (9) -- StateBackend : Fault Tolerance(Basic API Concepts -- For Java)

State Backends 本文翻译自文档Streaming Guide / Fault Tolerance / StateBackend ----------------------------------------------------------------------------------------- 使用Data Stream API编写的程序通常以多种形式维护状态: ·  窗口将收集element或在它被触发后聚合element ·  Transformation方法可能会

Flink Program Guide (7) -- 容错 Fault Tolerance(DataStream API编程指导 -- For Java)

false false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt

虚拟化(五):vsphere高可用群集与容错

vsphere高级功能需要vcenter server和共享存储的支持才能实现.vsphere的高级功能有 vmotion.storage vmotion.vsphere HA.vsphere DRS.存储 DRS.vsphere fault tolerance等. 1.vmotion vmotion是一种可用于将正在运行的虚拟机从一个esxi主机迁移到另一个esxi主机上,并且不会中断服务的功能. 2.storage vmotion 该功能用于将运行中虚拟机的磁盘和配置文件从一个数据存储移至另

MATLAB信号与系统分析(五)——连续时间信号的频谱分析

一.实验目的: 1.掌握傅立叶级数(FS),学会分析连续时间周期信号的频谱分析及MATLAB实现: 2.掌握傅立叶变换(FT),了解傅立叶变换的性质以及MATLAB实现. 二.利用符号运算求傅里叶级数的系数 1.复习几个函数: F1=int(f,v,a,b) - 对f表达式的v变量在(a,b)区间求定积分 F2=subs(s,OLD,NEW)-用新变量NEW代替S中的指定变量OLD. F3=vpa(x,n) : 显示可变精度计算:x为符号变量,n表示要精确计算的位数. 2.周期函数的傅里叶级数的

拜占庭将军问题(一)

一.什么是拜占庭将军问题 拜占庭将军问题(Byzantine Generals Problem,是由莱斯利·兰波特在其同名论文[1]中提出的分布式对等网络通信容错问题.在分布式计算中,不同的计算机通过通讯交换信息达成共识而按照同一套协作策略行动.但有时候,系统中的成员计算机可能出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性.拜占庭将军问题被认为是容错性问题中最难的问题类型之一. 莱斯利·兰波特在其论文中描述了

[原创]分布式系统之缓存的微观应用经验谈(四) 【交互场景篇】

分布式系统之缓存的微观应用经验谈(四) [交互场景篇] 前言 近几个月一直在忙些琐事,几乎年后都没怎么闲过.忙忙碌碌中就进入了2018年的秋天了,不得不感叹时间总是如白驹过隙,也不知道收获了什么和失去了什么.最近稍微休息,买了两本与技术无关的书,其一是 Yann Martel 写的<The High Mountains of Portugal>(葡萄牙的高山),发现阅读此书是需要一些耐心的,对人生暗喻很深,也有足够的留白,有兴趣的朋友可以细品下.好了,下面回归正题,尝试写写工作中缓存技术相关的

造成segmentation fault的可能原因分析(转)

一 造成segment fault,产生core dump的可能原因 1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界 b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符 c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函数,将目标字符串读/写爆.应该使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等

你的C/C++程序为什么无法运行?揭秘Segmentation fault (1)

什么让你对C/C++如此恐惧? 晦涩的语法?还是优秀IDE的欠缺? 我想那都不是问题,最多的可能是一个类似这样的错误: 段错误(Segmentation fault) 这是新手无法避免的错误,也是老手极力回避也经常遇到的错误. 本篇,试图简略地剖析一段会引发这个错误的程序,带来一些启发. 先看两份代码,一份是错误的. 错误代码 #include "string.h" #include <stdlib.h> #include <stdio.h> void func

软件测试(二)之 Failure, Error &amp; Fault

知识回顾 软件测试中的错误主要分为三种:Failure, Error 和 Fault. 下面就分析一下它们的不同: Fault的定义:可能导致系统或功能失效的异常条件(Abnormal condition that can cause an element or an item to fail.),可译为“故障”. Error的定义:计算.观察或测量值或条件,与真实.规定或理论上正确的值或条件之间的差异(Discrepancy between a computed, observed or me