16ESXi集群HA.docx
《16ESXi集群HA.docx》由会员分享,可在线阅读,更多相关《16ESXi集群HA.docx(15页珍藏版)》请在冰豆网上搜索。
16ESXi集群HA
HA高可用性
第一部分:
配置管理集群中的HA功能
第二部分:
配置管理FaultTolerance(HA和FT集成在集群功能中,配合DRS和vMotion完成)
第三部分:
VMwareDataRecovery(独立的功能插件)
服务器不同层面的HA
应用层(RAC、RHCS等)
|
OS(WFCWindowsFailoverCluster)
|
Vsphere虚拟化层面(HA,FT)
|
物理层面(NIC,Mulitpath,Power等)
■vSphereHA介绍,主要动作。
PowerOFF/网络隔离
||
ESXi1ESXi2
||
vm1vm2vm3vm4
vm1==========》重启==》(需要一定时间,存在服务中断)
vm2
■vSphere5HA的新特性
FDM技术提供的增强特性
FDM是FaultDomainManager的缩写,它的前身在ESX4叫作AAM,是用来管理HA的最重要的一个组件。
它负责Cluster的心跳、主机之间的通信,和vCenter的通信、协调虚拟机的位置、调度虚拟机的重启、记录日志等等。
Hostd代理,负责监控直接和虚拟机打交道,例如让虚拟机开机、监控虚拟机的状态等。
FDM需要Hostd的帮助来完成对虚拟机的操作(例如开机)。
简而言之,FDM依赖hostd,如果hostd失效了,FDM也会暂停工作。
针对ESXi主机HA监控针对单个vm虚拟机的HA监控
■针对主机监控,ESXi主机HA
【Master和Slave】架构,5.0的HA功能新特性:
================
1.ESX4的时候,节点分成Primary和Secondary,最先加入cluster的5个节点成为Primary,并各自存有一份AAMDatabase。
vSphere5对此进行了简化。
现在不再有Primary和Secondary的概念了,取而代之的是Master和Slave。
一个Cluster中只有一台Master,其余都是Slave。
2.可以同时使用管理网络和存储网络进行通讯检测,错误检查更加准确
3.引入IPv6.的支持
4.加入2种网络故障情景检测(网络分割)and(网络隔离).
■Master作用
Master的作用是管理整个集群,作为集群的主要管理者,它监控虚拟机的运行状态,判断某一个ESXi主机是否宕机,它监控每个VM的位置,并判断VM是否需要在其他主机上重启。
对于一个集群来说,Master是其上所有虚拟机的“主人”。
1.Master监控slave主机,当slave主机出现故障时,重启“slave主机中”的虚拟机。
2.Master监控所有被保护“虚拟机的”电源状态,如果被保护的虚拟机出现故障,它将重启这个虚拟机。
3.Master管理在Cluster内部的主机清单,并且对添加和删除Cluster内部的主机进行管理,新增、删除主机)
4.Master管理被保护虚拟机的清单,在每一次用户发起开关机操作时,更新这个清单,vCenter会要求Master保护或者不保护某些虚拟机,vm开机后,监控,保护。
。
。
。
用户正常关闭vm,脱离保护,不监控
5.Master缓存Cluster配置,Master通知和提醒slave主机,Cluster配置的修改
6.Master发送心跳信息给slave主机,让slave主机知道master的存在
7.Master报告状态信息给vCenter,vCenter正常情况下只和Master通讯
■Slave的作用
1.Slave主机监视本地运行的虚拟机状态,把这些虚拟机运行状态的“显著变化”发送给Master。
)
2.Slave监控Master的健康状态,如果Master出现故障,Slave将会参与“新的Master”的选举)
3.Slave运用vSphereHA特性,这些特性不需要Master的协调。
这些特性包括”VMHealthMonitoring”
■查看主机在Cluster中的状态。
(必须集群开启HA之后)
主机---摘要Master/Slave
■【Master的选举】
没有Master的集群就会Fail了。
当Master失效时怎么办?
集群不能没有Master,因此Master的选举会马上被触发。
Master选举会在以下情况被触发:
HA创建时;
Master宕机;
Master处于isolated或者集群出现了partitioned状态;
Master被置于维护状态或Standby状态;
集群被重新配置时;
Master和vCenter失去了联系;
选举需要15秒时间。
选举通过UDP协议(端口8182)进行。
■选举的规则是:
拥有最多的datastore的主机当选。
如果主机拥有的datastore一样多,ID。
■ESXi主机故障类型和检测
vSphereHA群集的首选主机负责检测从属主机的故障。
根据检测到的故障类型,在主机上运行的虚拟机可能需要进行故障切换。
在vSphereHA群集中,检测三种类型的主机故障:
主机网络故障检测:
电源故障+网络故障+虚拟机故障
Master主机必须检测并相应地处理故障。
Master主机必须可以区分故障主机与处于网络分区中的主机或已与网络隔离的主机。
首选主机使用网络和数据存储检测信号来确定故障的类型。
主机电源故障
主机停止运行,电源中断(即发生电源故障)。
.主机网络:
主机失去与Master主机的网络连接。
networkpartition(网络分割)
主机失去与Master、网络管理流量,隔离地址流量,以及其它Slave流量。
networkisolation
(网络隔离:
严重)
主机上的虚拟机检测:
VM虚拟机它蓝屏状态。
两种类型的网络故障,networkisolation(网络隔离)和networkpartition(网络分割)
■networkpartition(网络分割)
一个lave通过网络联系不到master,但是它和其它ESXi主机的网络连接没有问题,甚至例如还能正常和网关(隔离地址)通信,提供对外服务)。
那么该Slave并不认为自己是故障状态,继续使用Heartbeatdatastores的信号(两者相互读写存储上的文件的方式)来与Master通信,确保Master知道自己现在的情况。
Master会再根据存储上的信号来进一步判断Slave到底是分割,还是隔离,以便做出相应的处理。
■networkisolation(网络隔离)
一个或多个slave丢失了所有的管理网络连接,这样的slave既不能联系到master也不能联系到其他ESXi主机,也无法ping通网关(隔离地址)
这种情况下,slave主机主动通过heartbeatdatastores来通知master它已经是隔离状态,具体上这个slave是通过使用一个特殊的二进制件:
host-X-poweron来通知vSphereHAmaster能够采取适当的措施来确保保护VMs.
注:
如果确保网络基础结构具有足够的冗余度且至少有一个网络路径始终可用,
则主机网络隔离应该在极少数情况下才出现。
|GW|(隔离地址)
|
------------------------------------------------------------------
|SW|
------------------------------------------------------------------
|--------X------------|||
MS1S2S3
vmvmvmvmvmvmvmvm
||||
=======================================
||||
SAN存储
networkpartition(网络分割):
此时S1能连接GW,能连接其他S,但是不能和M通信,
S1不会主动向M发出故障信号。
M通过存储HA继续监控S1
M向存储中写文件,S1读取文件,通过存储网络沟通M和S1的健康状况,以便M判断如何处理S1上的VM
|GW|(隔离地址)
|
■
------------------------------------------------------------------
|SW|
------------------------------------------------------------------
■■■■
|X||
|---------X------------|----------X------------||
MS1S2S3
vmvmvmvmvmvmvmvm
||||
=======================================
||||
SAN存储
Networkisolation(网络隔离):
S1丢失所有的管理网络。
S1无法ping通M,此时,会主动ping其它集群成员,平隔离地址,如果还是不通,S1会认为自己已经处于网络隔离状态,此时需要通过“”存储网络“”通知M进行保护,S1主机通过heartbeatdatastores生成一个特殊的二进制件:
host-X-poweron来打上相应的标记,来通知M它已经是隔离状态,vSphereHAmaster能够采取适当的措施来确保保护VMs.
■vSphereHA保护VMs具体过程:
当一个slave已经检测到自己是网络隔离状态,它会生成一个特殊二进制文件host-X-poweron文件在heartbeatdatastores上,master看到这个标志,它就知道了slave已经是isolation状态,
然后master通过vSphereHA锁定其他文件(datastores上的其他文件).
当slave主机看到这些文件已经被锁定,它知道master正在执行重启VMs的响应.
然后slave才可以执行配置过的隔离响应动作(对自己的虚拟机的动作)。
(如正常关机或者关闭电源(虚拟机)以释放该虚拟机锁定的存储资源,让它可以在其他主机上运行起来)
|GW|
|
------------------------------------------------------------------
|SW|
------------------------------------------------------------------
|X||
|--------X------------|--------X------------||
MS1S2S3
vm■vm1■vm2vm3vm5vm6vm7
||||
=======================================
||||
SAN存储
|
vm1的vmdk虚拟磁盘文件
此时S1已经处于隔离状态,如果将隔离响应设置为保持虚拟机开机,那么
如果S1主机上的vm1实例将一直处于开机状态,这个vmdk文件会被该vm1锁定。
将实例转移到其它ESXi主机时,新的实例将无法读取该vmdk文件。
我们可以通过隔离响应,设置S1将该虚拟机“关机/关电源”,释放vmdk,这样vm1就能在其他的
ESXi主机上顺利重启。
脑裂情况================================
如果某台主机禁用其隔离响应(即隔离时使虚拟机处于打开电源状态,锁定vm的vmdk文件)
且无法访问管理和存储网络(无法通过存储发送隔离信息给Master,无法关闭vm,释放vmdk。
)
此时可能发生“裂脑”情况。
在这种情况下,即使虚拟机的原始实例仍在孤立主机上运行,孤立主机也会丢失磁盘锁且虚拟机会故障切换至另一主机。
孤立主机恢复后,能够重新访问虚拟机的数据存储时,将会有两个虚拟机副本,但原来独立主机上的副本无权访问vmdk文件,这样便避免了数据损坏。
为了从此情况中恢复,ESXi会针对已丢失硬盘锁的虚拟机生成一个问题(关于主机何时摆脱隔离状态并认识到无法重新获取磁盘锁)。
vSphereHA将自动回答该问题,这就使已丢失磁盘锁的虚拟机实例关闭电源,只留下具有磁盘锁的实例。
注意:
vSphereHA有一定的局限性:
===============================
1.vSphereHA只能提供VM级别的FO,而不能提供Service和Application的FO。
2.vSphereHA不能提供“0时差”的切换,因为启动VM的时间是未知的。
■在集群中启用和配置HA
集群-----右键------打开HA功能----确定,
此时会有一个较长的过程,主要是在集群成员ESXi主机上安装集群代理软件,选举Master
配置完成后,在集群成员ESXi主机的摘要中,会看到vSphereHA为:
正在运行,表示HA功能已经成功的在集群中启用。
管理网络冗余警报解决办法:
如果条件有限不想给管理网络做冗余,又不想看到该报警,可以将HA高级选项das.ignoreRedundantNetWarning 设置为“True”即可。
■HA面板的选项
■vSphere全局设置
主机监控状态,是否启用主机监控。
(确保集群正常运作的关键)
会ESXi主机启用网络监控,每秒发送ping包检测。
检测健康状况。
在需要进行ESXi主机网络中断的维护时,要关闭这个项目,以免造成Master误判断。
主机隔离响应机制要求启用“主机监控状态”。
如果“主机监控状态”处于禁用状态,则主机隔离响应将同样不会发生。
■接入控制
启用:
不允许违反可用性限制的虚拟机,在ESXi主机上打开电源
禁用:
允许违反可用性限制的虚拟机,打开电源
例如:
S1主机被判断为隔离,触发隔离相应(设置为关机),此时,S1上的虚拟机会关机,释放vmdk锁,并且尝试在S2主机上重启。
如果S2上资源紧缺时,例如S1上的vm1将要在S2上重启,vm1要求3G内存,此时S2只空闲1G内存,
如果接入控制启用:
则vm1无法在S2上开机。
如果接入控制禁用:
vm1在S2上强制开机,此时S2想尽办法凑齐资源,包括启用虚拟内存,会大幅度影响该vm1的性能。
■接入控制策略(启用接入控制时生效)
设置“集群能够承载何种规模的主机失败”。
让集群中的ESXi成员主机作资源预留,确保失败主机的vm能够有足够的资源在其它成员上开机。
1:
按个数计算,例如,只能负载“1”台主机的失败,(集群中的主机配置各有高低时,不推荐使用个数。
)
2:
按照CPU和内存的资源比例计算:
集群资源总和的百分比。
2+2+2+2+2=10G20%=2G。
此时各个成员预留资源,最多能够负担“2G的内存”的失败。
3:
设置使用一台专门的ESXi主机作为预备主机,接管集群成员失败的vm
■vm虚拟机监控选项
■虚拟机重新启动优先级(“此处为全局”,下方虚拟机菜单可以针对某个虚拟机做级别调整,或者使用全局配置)
失败
ESXi1S1ESXi2S2
|
|
vm1vm2vm3========》
此时,对vm1,vm2,vm3确定一个重启的优先顺序,确保最先得到新主机中的资源,级别低的vm可能面临无法启动的境地。
例1,可能需要先打开提供基础架构服务(如DNS或DHCP)的虚拟机电源,再打开群集内的其他虚拟机电源。
虚拟机的重新启动优先级设置因用户需求而有所不同。
请为提供最重要服务的虚拟机分配较高的重新启动优先级。
例如2,在多层应用程序中,可以根据虚拟机上所驻留的功能来对分配进行排序。
■高。
将为应用程序提供数据的数据库服务器。
■中等。
使用数据库中的数据并在网页上提供结果的应用程序服务器。
■低。
接收用户请求、将查询传递到应用程序服务器并将结果返回给用户的Web服务器。
■主机隔离响应(需要开启主机监控状态)。
当成员ESXi主机确定自己已经处于“隔离状态”,对该主机上的“”虚拟机“”做何种操作。
确定当vSphereHA群集内的某个主机失去其管理网络连接但仍继续运行时出现的情况。
可使用隔离响应使vSphereHA""关闭""独立主机上运行的""虚拟机电源"",然后在非独立主机上将其重新启动。
当主机无法与其他主机上运行的代理通信且无法ping其隔离地址时,该主机确定其已被隔离。
发生这种情况时,主机将向存储发送隔离信号,让Master得知自身情况,此时自身主机会执行其隔离响应。
响应包括:
■“保持打开电源”(默认)
■“关闭电源然后进行故障切换”(断电)
■“关机然后进行故障切换”(正常关机,可以保留其状况)=====安装VMwareTools
(在vSphereClient中,后两个选项分别为“关闭电源”和“关机”)。
还可以为各个虚拟机自定义此属性。
要使用“关机”设置,必须在虚拟机的客户机操作系统中安装VMwareTools。
关机操作优于关闭虚拟机电源操作
将虚拟机关机的优点在于可以保留其状况。
关闭虚拟机不会将最近的更改刷新到磁盘中,也不会提交事务
在关机完成时,正在关机的虚拟机需要更长时间进行故障切换。
未在300秒内或在高级属性das.isolationshutdowntimeout中指定的秒数内关机的虚拟机将被关闭电源。
■vm虚拟机监控(默认禁用)
■禁用
如果在设置的时间内没有收到单个虚拟机的VMwareTools检测信号,虚拟机监控将重新启动该虚拟机。
同样,如果没有收到虚拟机正在运行的应用程序的检测信号,应用程序监控也可以重新启动该虚拟机。
可以启用这些功能,并配置vSphereHA监控无响应时的敏感度。
启用虚拟机监控后,虚拟机监控服务(使用VMwareTools)将通过检查正在客户机内运行的VMwareTools进程的常规检测信号和I/O活动来评估群集内的每个虚拟机是否正在运行。
如果没有收到检测信号或I/O活动,则很有可能是客户机操作系统出现故障,或未分配给VMwareTools用来完成任务的时间。
在这种情况下,虚拟机监控服务会先确定虚拟机已发生故障,然后决定重新引导虚拟机以还原服务。
有时,仍然正常工作的虚拟机或应用程序会停止发送检测信号。
为了避免不必要的重置,虚拟机监控服务还监控虚拟机的I/O活动。
如果在故障时间间隔内未收到任何检测信号,则会检查I/O统计间隔(群集级别属性)。
I/O统计间隔确定在前两分钟(120秒)内是否已发生与虚拟机有关的任何磁盘或网络活动。
如果没有,则重置该虚拟机。
可以使用高级属性das.iostatsinterval更改此默认值(120秒)。
您可以配置监控敏感度的级别。
高敏感度监控可以更快得出已发生故障的结论。
然而,如果受监控的虚拟机或应用程序实际上仍在运行,但由于资源限制等因素导致未收到检测信号,高敏感度监控可能会错误地认为此虚拟机发生了故障。
低敏感度监控会延长实际故障和虚拟机重置之间服务中断的时间。
请选择一个有效折衷满足需求的选项。
下表介绍了监控敏感度的默认设置。
也可以通过选中自定义复选框来指定监控敏感度和I/O统计间隔的自定义值
■虚拟机服务级别/应用程序做监控(需要“监控对象软件”能够和vmTool做接口,通信)
要启用应用程序监控,必须先获取相应的SDK(或使用可支持VMware应用程序监控的应用程序),然后使用它来设置要监控的应用程序的自定义检测信号。
完成此操作后,应用程序监控的工作方式将与虚拟机监控的工作方式大致相同。
如果在指定时间内没有收到应用程序的检测信号,将重新启动其虚拟机。
目前只有少数的软件能够支持。
######################
在有更好的功能出现之前,推荐应用程序和服务的监控由OS自身完成,比如Redhat的HA
######################
■虚拟机监控敏感度:
低(2分钟)中(60秒)高(30秒)
====》重启虚拟机
■数据存储检测信号(选择存储设备作为“存储监控”的介质)
前提,必须是共享存储
■只选择单个存储(坏掉就会停止存储heartbeat)
■任意选择存储(只要还有能使用的存储,就继续使用。
)
■从选择的存储中,按优先级选择。
(坏掉1个,可以用第2个)
■测试HA功能===========================
实施HA的前提条件:
1、隔离地址设置正确,ESXi可以和隔离地址通信。
2、ESXi之间确保至少有一条网管网络可以通信。
3、设置好用于存储信号检测的。
数据存储(共享存储)
4、两台ESXi主机都是同一个VDS的成员,保证虚拟机重启迁移后不会丢失端口
5、确保ESXi主机的”防火墙“放行 ”HA流量“(默认放行)
6、ESXi上的虚拟机都放置于共享存储之上。
测试1:
集群的隔离响应设置为保持电源开启。
触发主机的网络隔离(使ESXi主机和master以及隔离地址都断开),观察隔离响应,观察集群状态。
此时,保持开机状态的虚拟机,不会被转移。
测试2:
和上一个测试一样,诱发ESXi的”网络隔离“,但是,此时将集群的”隔离响应”设置为“关闭电源”,观察此时ESXi上面的正在运行的虚拟机,会不会故障切换到其它的ESXi主机上运行。
测试3:
直接关闭一台ESXi的电源,模拟主机故障,观察在ESXi上运行的虚拟机,是否会自动切换到
其它的ESXi主机上,并且重启。
测试4:
测试虚拟机保护(在集群配置中,虚拟机选项-----仅虚拟机监控)。
总结:
----------------------------------
HA可以监控的对象:
ESXi主机VM虚拟机少数的服务和程序
对于ESXi主机的监控,监控方式:
|--------主机电源监控
|--------主机的网络监控------|网络分割