Windows Server 2012 Hyper-V故障转移集群虚拟机亲和性策略

简介:
 
今天收到一个邮件咨询如何在Windows Server 2012实现虚拟机亲和性策略, 熟悉VMware vSphere解决方案的技术宅肯定会比较熟悉一个叫做DRS的动态迁移策略, 其中可以配置VM亲和性策略控制两个虚拟机应用运行在不同的物理ESXi主机上。这个功能还是很实用的,例如如果虚拟机应用运行了一个Guest集群,那么其中一个基本需求就是让来宾虚拟机运行在不同的物理主机上,如果DRS控制策略处于性能考虑让两个来宾虚拟机运行在同一台物理主机上则集群的高可用性就失去了;另一个常见的案例是在站点集群的解决方案中,如果你希望通过集群控制在一个站点内进行故障切换,站点间通过在线迁移转移虚拟机的灵活性;那么这样的功能在Windows Server 2012 Hyper-V中是否提供呢?
在Windows Server 2012中对高可用性进行了大量增强,包括了:
1. 虚拟机复制
2. 网络聚合
3. 集成的高可用性
4. 虚拟机应用监控
5. 集群感知更新
6. 集群切换优先级控制
7. 虚拟机亲和性策略  
在我的博客里面曾经对上面标注的两个功能有过介绍,那么今天借这个机会正好和大家分享一下通过网上多篇文档学习到的虚拟机亲和性策略的设置方法。
故障转移群组切换时依照如下的策略控制切换目标物理主机,
首先,该物理节点属于可能物理节点列表成员。
其次,根据首选物理节点顺序选择切换节点。
如果首选物理节点列表中的节点属于亲和性控制组成员,则切换策略会跳到下一首选物理节点,以此类推。
当所有首选节点均处于亲和性策略控制组成员,为了保证高可用性,集群服务会忽略亲和性策略选择一个首选节点作为故障切换节点。
 根据上面的切换策略控制条件, 需要配置的就包括了可用节点列表,首选节点列表,和亲和性策略这三个部分。
 1.可用节点列表
在Windows Server 2012的故障转移集群中,选择设置可用节点
如果你熟悉Powershell,也可以通过CMDLET完成上述工作:
如果没有导入故障转移群的Powershell管理模块,需要先导入该模块
Import-Module FailoverClusters
确认安装了故障转移集群以及RSAT模块,如果没有安装,则先安装该模块
Get-WindowsFeature failover-clustering | Install-WindowsFeature –IncludeManagementTools
设置VMtest1和VMtest2两个虚拟机的可用物理节点主机为shuttle1和shuttle2
Get-ClusterResource -Name "VMtest1", "VMtest2" | Set-ClusterOwnerNode -Owners shuttle1,shuttle2
2. 设置首选节点列表
在Windows Server 2012的故障转移集群中,选择设置首选节点,
当然,也可以通过Powershell的CMDLET完成上述工作:
如果没有导入故障转移群的Powershell管理模块,需要先导入该模块
Import-Module FailoverClusters
确认安装了故障转移集群以及RSAT模块,如果没有安装,则先安装该模块
Get-WindowsFeature failover-clustering | Install-WindowsFeature –IncludeManagementTools
设置虚拟机VMtest1的首选物理节点为按照Shuttle1,Shuttle2顺序
Get-ClusterGroup VMtest1 | Set-ClusterOwnerNode shuttle1, shuttle2
清除首选节点配置
Get-ClusterGroup VMtest1 | Set-ClusterOwnerNode ""
3. 设置亲和性策略
这个最核心的部分我没发现如何通过GUI界面完成,只能通过Powershell,不过用CMDLET个人感觉更习惯一些:)
虽然Cluster.exe可以用于定义了亲和性策略,不过从Windows Server 2012后这种方式即将过期,因此并不推荐采用这种方式;使用这种方式需要先安装故障转移集群命令行接口模块
Get-WindowsFeature FailoverCluster-CmdInterface | Install-WindowsFeature
设置VMtest1,VMtest2虚拟机的亲和性组为App Servers和Critical Servers,也就是App Servers和Critical Servers组中的虚拟机VMtest1和VMtest2不能同时被放置到一个故障转移集群中的同一物理节点上 (注意:这个设置只能做Reset,就是每次配置都不是增量而是覆盖设置的)
cluster group VMtest1 /prop AntiAffinityClassNames = "App Servers", "Critical Servers"
cluster group VMtest2 /prop AntiAffinityClassNames = "App Servers", "Critical Servers"
清除设置
cluster group VMtest1 /prop AntiAffinityClassNames = ""
cluster group VMtest2 /prop AntiAffinityClassNames = ""
(可以用通配符)
推荐用Powershell如对于虚拟机或虚拟机组设置应用亲和性策略,方法是通过设置AntiAffinityClassNames的属性值。
首先,确定AntiAffinityClassNames属性的当前设置方式是通过 Get-ClusterGroup CMDLET。
Get-ClusterGroup | Select AntiAffinityClassNames
(默认情况下,该命令取值为空,说明还没做任何设置)
该CMDLET同样需要导入故障转移群的Powershell管理模块,需要先导入该模块
Import-Module FailoverClusters
确认安装了故障转移集群以及RSAT模块,如果没有安装,则先安装该模块
Get-WindowsFeature failover-clustering | Install-WindowsFeature –IncludeManagementTools
最后,对该属性位进行设置和添加方法,各位自己去如法炮制吧:-)
(Get-ClusterGroup VMtest1).AntiAffinityClassNames = "Critical Servers"
(Get-ClusterGroup VMtest1).AntiAffinityClassNames += "App Servers"
(Get-ClusterGroup VMtest2).AntiAffinityClassNames = "Critical Servers"
(Get-ClusterGroup VMtest2).AntiAffinityClassNames += "App Servers"
个人感觉这个方法比在Windows 2008R2中设置容易太多了, 2008R2里面你要配置定义多个字符串变量,还是挺复杂的:
# 创建字符变量"antiaffinityclassnames"
$antiaffinityclassnames = New-Object System.Collections.Specialized.StringCollection
# 定义亲和性类"App Servers"
$antiaffinityclassnames.Add("App Servers")
# 定义亲和性类"Critical Servers"
$antiaffinityclassnames.Add("Critical Servers")
# 分配虚拟机到已经定义的亲和性类AntiAffinityClassNames property
(Get-ClusterGroup VMtest1).AntiAffinityClassNames = $antiaffinityclassnames
(Get-ClusterGroup VMtest2).AntiAffinityClassNames = $antiaffinityclassnames









本文转自 翟老猫 51CTO博客,原文链接:http://blog.51cto.com/3387405/1123166,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
监控 算法 Java
Java虚拟机(JVM)垃圾回收机制深度剖析与优化策略####
本文作为一篇技术性文章,深入探讨了Java虚拟机(JVM)中垃圾回收的工作原理,详细分析了标记-清除、复制算法、标记-压缩及分代收集等主流垃圾回收算法的特点和适用场景。通过实际案例,展示了不同GC(Garbage Collector)算法在应用中的表现差异,并针对大型应用提出了一系列优化策略,包括选择合适的GC算法、调整堆内存大小、并行与并发GC调优等,旨在帮助开发者更好地理解和优化Java应用的性能。 ####
59 0
|
27天前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
160 9
|
1月前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
2月前
|
监控 算法 Java
Java虚拟机垃圾回收机制深度剖析与优化策略####
【10月更文挑战第21天】 本文旨在深入探讨Java虚拟机(JVM)中的垃圾回收机制,揭示其工作原理、常见算法及参数调优技巧。通过案例分析,展示如何根据应用特性调整GC策略,以提升Java应用的性能和稳定性,为开发者提供实战中的优化指南。 ####
50 5
|
2月前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。
167 4
|
2月前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
|
2月前
|
监控 安全 网络安全
Windows Server管理:配置与管理技巧
Windows Server管理:配置与管理技巧
125 3
|
2月前
|
存储 安全 网络安全
Windows Server 本地安全策略
由于广泛使用及历史上存在的漏洞,Windows服务器成为黑客和恶意行为者的主要攻击目标。这些系统通常存储敏感数据并支持关键服务,因此组织需优先缓解风险,保障业务的完整性和连续性。常见的威胁包括勒索软件、拒绝服务攻击、内部威胁、恶意软件感染等。本地安全策略是Windows操作系统中用于管理计算机本地安全性设置的工具,主要包括用户账户策略、安全选项、安全设置等。实施强大的安全措施,如定期补丁更新、网络分段、入侵检测系统、数据加密等,对于加固Windows服务器至关重要。
109 1
|
虚拟化 Windows 测试技术
Hyper-V 3 虚拟机快照之三 应用和删除快照
http://wangshujiang.blog.51cto.com/225623/934495 第二部分介绍了如何创建和查看快照,本部分介绍如何还原快照和删除快照。 第一部分 还原快照 当系统崩溃、操作中出现错误或者误删文件时,可以使用快照还原功能还原到之前正常状态,前提是在更改或者更新之前创建了快照。
1033 0