第七章 虚拟机和应用监控
虚拟机和应用监控是一个经常被人忽视,但又确实是HA的一个强大功能,可能由于它是HA的新功能、新组件,且通常默认配置下该功能没被启用。我们将试图收集所有虚拟机和应用监控的相关信息,但它是一个非常简单的产品,实际不是你期望的那样。
图40:虚拟机与应用监控
为什么你需要虚拟机和应用监控?
虚拟机和应用监控和HA分别扮演着不同的响应级别,虚拟机和应用监控是单个主机或者应用程序发生故障时响应,而HA是主机发生故障时响应。举个例子,一个虚拟机发生故障,如机器蓝屏,那么应用监控就会触发,反应给管理员或者应用开发者。
虚拟机/应用监控是如何工作的?
当需要时,虚拟机监控可以重置个别虚拟机,虚拟机和应用监控同HA类似,也使用心跳检测,在这个例子中,如果虚拟机上VMware Tools的心跳有一段时间未收到,虚拟机将被重新启动,这个心跳时被HA检测的,并不会跨越网络,只在主机上。
图41:虚拟机监控敏感性
当开启了虚拟机/应用监控,如图41,敏感级别将被配置,默认配置应该适用于很多场景中,低敏感度意味着允许丢失较多的心跳信号,机器运行在错误的位置较高,但是,如果发生故障,而敏感度较低,那么停机时间就越长,当发生故障需要快速响应时,应该选择高敏感度,和你预计的一样,它正好和低敏感度相反,高级设置见表5,该表已被启用,但有普及意义。
表5:虚拟机监控敏感度
要记住一件重要的事,那就是虚拟机监控不会无限重启虚拟机,除非客户根据需求设置相关策略,这是为了避免重复发生的问题,默认情况下,当虚拟机在一个小时内重启了三次,接下来将不再进行尝试,除非设定的时间值已经过去,接下来可以在默认的值中改变高级设置,可以在图41中选择。
尽管VMware Tools产生心跳信号相当可靠,VMware进一步增加了验证机制,为了避免虚拟运行在错误的位置,虚拟机监控还会监控虚拟机的活动I/O,当没有收到心跳信号或者没有磁盘读写或者网络活动已经过去120秒,默认情况下,虚拟机都会被重置,高级设置里可以通过 “das.iostatslnterval”参数修改时间值。
建议调整“das.iostatsinterval”配合HA使用。
基本设计原则
正确配置”“das.iostatsinterval”时间值。
虚拟机监控实现细节
在vSphere 5.0之前,虚拟机/应用监控是通过HA的VPXA组件来实现的,而在vSphere5.0中,HA代理自身可以启动它,意思是说“虚拟机/应用监控”逻辑上是和HA代理一起的,代理使用性能管理来监控磁盘和网络I/O,虚拟机/应用监控使用量计算磁盘和网络,一旦足够的心跳信号丢失,将会触发配置策略。
在开始之前,虚拟机/应用监控使用的心跳信号就像是主机级别的HA,HA 代理监控心跳信号,并负责重启虚拟机,当然,信息还会被上传到vCenter中,但是是通过的管理网络,而不是业务网络,这意味着,当虚拟机的业务网络发生故障时,仍会收到虚拟机的心跳信号,当发生故障,且以下三个条件都出现后,将触发HA重新启动虚拟机。
1. 没有收到来自VMware Tools的心跳信号
2. 超过120秒没有网络I/O
3. 超过120秒没有存储I/O
就像主机级别的HA,当虚拟机即将重启,HA的代理在vCenter上独立工作。
时间选择
虚拟机/应用监控功能监控来自客户端的心跳信号,如果满足配置策略,心跳信号丢失,将会重置虚拟机,HA能监控的不只是VMware Tools进程中的心跳信号故障,还能监控来自客户代理的心跳信号加强故障。
如果虚拟机监控心跳在T-0停止,在HA将宣告心跳故障时间范围为81s到119s之间,那么最短时间在此时间段之前,而对于客户端应用心跳,HA会在61s到89s的范围内宣告故障,一旦应用心跳被声明故障,HA会尝试重置虚拟机,但是,对于VMware Tools的心跳,HA会首先检查虚拟机在过去的2分钟内IO是否有问题,如果没有IO,虚拟机将重置,由于HOSTD需要发布I/O状态,这个检查将使重置延迟20秒,大约在T-0后一分钟重置虚拟机。
时间细节:范围取决于当监视到心跳停止关联HOSTD文件,对于比较弱的VMware Tools心跳,在HOSTD运行后心跳停止。这意味着,在T+31,主机上的FDM代理将会被通告tools的黄色状态,然后在HA反应的T+61时刻变成红色状态,HA最少30秒监控到心跳失败,导致最小时间为T+91,HA可以通过设置das.failureterval的策略增加30s的监测时间,对于以上的场景,只到T+59s,FDM都不会被通知到(T=0发生故障,T+29HOSTD宣告它,开启心跳失败计时,在T+59 HOSTD报告黄色状态,T+89报告红色状态)。
当心跳故障来自于来宾代理,将不会有黄色状态发出,所以没有额外增加的30秒时间。
截屏
作为虚拟机监控的一部分,还有一个非常实用的功能,我们称之为虚拟机控制台截屏,在虚拟机监控重置虚拟机之前,将会截取正确的屏幕,这个功能被加入到vCenter 4.0中,当虚拟机因为不知名的原因冻结时,它是非常有用的功能,截屏可以被用作虚拟机操作系统的排错,它存储了虚拟机的工作目录,可以在虚拟机的监控选项中查看记录的事件。
基本设计原则
虚拟机和应用监控可以大幅提高可用性,它是HA的一部分,所以我们强烈推荐。
应用监控
在vSphere 4.1中,VMware介绍应用监控是虚拟机监控的一部分,应用监控是一个全新的功能,它可以增加组件的弹性,如图42所示,在vSphere 4.1的应用监控中,一个隐藏的API被创建,在vSphere 5.0中,SDK以HA SDK的形式出现在大家面前,在vSphere5.1中它是客户SDK的一部分。
图42:虚拟机和应用监控
客户端SDK目前主要用于应用程序开发人员,如提供给像赛门铁克这样的合作伙伴来开发解决方案,从而提高虚拟机监控以及HA在不同的响应级别的应变能力,在一个赛门铁克的案例中,一个简易版本的Veritas Cluster Server(VCS)用于开启应用程序的可用性监控,包括响应问题。请注意,VCS本身不是一个多节点的群集解决方案,而是一个单点的解决方案。
赛门铁克应用HA,之所以这么叫,因为它触发应用程序起来,并再次重新启动运行,赛门铁克的应用HA知道哪些服务应该被启动,哪些服务应该被停止,然后,如果一定数量的服务发生故障,HA将被要求采取重新启动虚拟机的行动。
虽然应用监控相对较新,只有少数的合作伙伴目前具备探索能力,在我们看来,它给整个水平增加了弹性,你的内部开发团队可以利用API提供的接口功能,或者你可以使用VMware合作伙伴开发的解决方案。我们已经测试了有赛门铁克开发的应用HA,个人觉得它是架构中缺失的一环,它可以使你的虚拟化层和应用层一体化,它确保你作为一个系统管理员,能保护复制按照正确的顺序重新启动,它避免了在重启或者维护中出现常见的错误。
应用认知API
在vSphere 5.0之前,应用认知API是不向客户公开的,只提供给合作伙伴,在vSphere 5.0中,应用认知API向所有人开放,我们觉得此处不适合深入分析怎样使用它,但是我们确实想简要的讨论它。应用认知API允许任何人和它沟通,包括脚本,它能够制造无限可能,当前有6个功能定义:
VMGuestAppMonitor_Enable()
Enables Monitoring
VMGuestAppMonitor_MarkActive()
Call every 30 seconds to mark application as active
VMGuestAppMonitor_Disable()
Disable Monitoring
VMGuestAppMonitor_IsEnabled()
Returns status of Monitoring VMGuestAppMonitor_GetAppStatus()
Returns the current application status recorded for the application
VMGuestAppMonitor_Free()
Frees the result of the VMGuestAppMonitor_GetAppStatus() call
这些功能可以被你的开发团队使用,但是应用监控还提供一个新的可执行文件,这使得您可以使用这个功能而不需要编译完整的二进制。这个命令时vmware-appmonitoring.exe,采用下列的参数,这不是巧合相似的功能。
Enable
Disable
markActive
isEnabled
getAppStatus
在执行此命令时输出如下介绍
C:\VMware-GuestAppMonitorSDK\bin\win32>vmware-appmonitor.exe Usage: vmware-appmonitor.exe {enable | disable | markActive | isEnabled | getApp Status}
有多种方式利用应用监控增加弹性,提高应用水平。