WSFC2016 VM顺序组与管理组

在我们管理虚拟化场景或群集应用场景时,可能经常会经常碰见一个需求,即依赖性顺序,开发人员可能会需要保证一系列联合工作虚拟机或群集应用的启动顺序,确保最底层需要的资源启动后,再按照顺序陆续启动其它资源。

针对于依赖性启动的需求,如果是在没有群集的单机Hyper-V场景下,我们可以通过设置虚拟机的自动启动属性来解决此问题,例如,一套sharepoint环境,有DC,DB,AP,WEB,我们可以依次设置各虚拟机自动启动的延迟时间,0,30,50,80。这样做了之后,在单机情况下,当宿主机重新启动,可以按照延迟顺序逐步启动虚拟机以达到依赖性启动的需求,但这项设置仅限单机使用,当我们将虚拟机移动至其它节点,则自动启动延迟设置失效,需要每次重新设置

虚拟机迁移至其它节点后设置失效

WSFC2012时代优化了群集优先级功能,我们在2012时代,通过群集优先级也可以完成控制群集应用的依赖性启动,针对于群集优先级老王在日常管理操作篇博客做了详细介绍,大家感兴趣可以去看,在群集中点击VM或其它群集角色,可以看到更改启动优先级的选项,设置之后,群集角色会按照高中低顺序启动,针对于不自动启动,则在故障转移后需要管理员手动启动。

优先级设置在节点冷启动,移动至最佳节点,故障转移,维护模式下都会生效,优先级设置帮助确定好迁移或启动顺序,群集依据放置规则执行操作,优先级设置是群集级别,不会因为群集角色迁移到其它节点而失效,不仅可以针对虚拟机设置,也可以针对需要联合工作的群集角色设置

本场景中,我们设置四个虚拟机的优先级别,分别为,高,中,低,低。

直接关闭HV02,可以看到虚拟机已经被迁移至HV01

直接看cluster log可以看到优先级处理过程

通过查看clusterlog我们可以看出,优先级设置是生效的,当故障转移时,会按照我们给定的优先级顺序,进行联机处理虚拟机虚拟机,这在一些场景下是有作用的。

但是也有它所做不到的地方,例如,当我们的依赖关系达到四层的时候,像我们这种DC,DB,AP,WEB的场景下,就只好设置WEB和AP都为低,这样两个应用就会随机起来,而不能完全满足我们对于依赖性启动的需求。

而且在2012时代开始,如果我们对于虚拟机设置为低优先级还是有一定风险的,例如,如果我们发生故障转移,高优先级的虚拟机如果因为没有资源而无法被放置启动,是会关机回收低优先级虚拟机资源的,如果您的环境资源很足够,当然不会发生这种问题,但如果服务器资源有限就需要注意了。

还有一点,根据老王的观察,优先级启动这个功能很好,它在帮助我们编排群集资源的处理顺序方面很好,可以帮助我们很好的解决启动风暴的问题,可以在资源有限的情况下确保高优先级的资源始终优先启动,这项功能它可以工作的很好,但是对于依赖性启动,老王认为优先级设置还有待提升,其一是只有三层依赖关系可以设置,其二是依赖性启动处理的不够明显,大家看clusterlog就能看出,各个虚拟机的联机处理时间挨着很近,即是说可能会发生一种情况,DC可能没完全启动起来,只是虚拟机资源联机了,但是系统没完全启动起来,SQL就开始联机启动了,这样依赖性启动意义也就不大了,因为优先级设置没办法控制依赖性启动的间隔,例如没办法控制高优先级启动多长时间后,再启动中优先级。

优先级设置这项功能,在老王看来,属于群集的一种附属功能,它是在维持群集可用性的情况下的一种策略设置,只是负责确定一个顺序,但是当计划内,计划外移动转移发生时,它做的只是快速确定顺序,然后群集快速按照它确定好的顺序进行放置处理群集资源。

在WSFC2016时代,针对于群集资源管理,推出了顺序组的功能,简单来说,我们现在可以自己定义群集虚拟机或群集角色之间的依赖关系了,想创建多少层依赖关系,就创建多少层,每层依赖关系对应的是一个个的顺序组,每个顺序组里面可以有多个虚拟机或群集应用,当我们创建依赖关系,是基于顺序组的级别去创建依赖关系,一项重要的改变是,当我们使用新的顺序组功能时,每个顺序组启动后,默认会等待20秒的时候,当一个依赖顺序组启动后,等待20秒再启动下一个顺序组,这个等待时间可以更改,此功能为群集级别,不论虚拟机迁移到其它任何节点都会生效,因此我们可以说,这是项真正的依赖性启动处理解决方案。

整理下思路,我们现在有了顺序组功能,我们可以手动去创建顺序组,每个组里面可以包括多个虚拟机或群集角色。构建完成顺序组后,我们可以在群集上手动创建依赖关系,指定一层一层的顺序组依赖关系,最终,应该当我们要启动最底层依赖关系的一台虚拟机,会检测到上一个依赖顺序组虚拟机还没启动,上层虚拟机要启动又需要最上层顺序组,结果所有虚拟机按照顺序启动,每一层虚拟机启动后,默认都会等待20秒再启动下一层顺序组中虚拟机,该时间可控。

VM顺序组配置相关Powershell命令

创建管理顺序组

New-ClusterGroupSet: 创建一个顺序组

Get-ClusterGroupSet: 获取当前顺序组

Set-ClusterGroupSet: 配置顺序组设置

Remove-ClusterGroupSet: 删除一个顺序组

Add-ClusterGroupToSet: 添加VM或其它群集角色至顺序

Remove-ClusterGroupFromSet: 从顺序组中删除VM或其它群集角色

配置顺序组内依赖关系

Add-ClusterGroupDependency: 添加顺序组内虚拟机的依赖关系

Get-ClusterGroupDependency: 获取顺序组内虚拟机的依赖关系

Remove-ClusterGroupDependency: 删除顺序组内虚拟机的依赖关系

配置顺序组间依赖关系

Add-ClusterGroupSetDependency: 添加跨顺序组之间的依赖关系

Get-ClusterGroupSetDependency: 获取跨顺序组之间的依赖关系

Remove-ClusterGroupSetDependency: 删除跨顺序组之间的依赖关系

#创建顺序组

$Cluster = "pecluster.oa.com"

New-ClusterGroupSet -CimSession $Cluster -Name "DC"

New-ClusterGroupSet -CimSession $Cluster -Name "SharepointDB"

New-ClusterGroupSet -CimSession $Cluster -Name "SharepointApp"

New-ClusterGroupSet -CimSession $Cluster -Name "SharepointWeb"

可以看到老王之前说过的20秒等待时间,即当前顺序组启动20秒后,再启动其它顺序组,例如,如果您知道,某些顺序组启动时间会很长,例如SharepointDB虚拟机,那么您就可以单独设置它的等待时间长一些,例如我们手动设置为30秒,即依赖于SharepointDB的顺序组,需要等待30秒,SharepointDB启动后,再启动下一层。

其它参数介绍

StartupDelayTrigger 定义了当开始依赖关系处理时,对于顺序组的处理方式

Online :不进行等待时间,只要资源状态变为联机就启动下个顺序组

Delay:默认设置,等待StartupDeplay设置的时间到了才启动下个顺序组

StartupCount  定义开始处理依赖关系之前,顺序组内必须已经经过延迟上线的角色数量

只有组内所有角色都经过延迟上线后才处理后面(默认)

0 只要组中大部分角色都上线就处理后面顺序组

N 用户自行定义顺序组中启动多少角色可以处理后面顺序组

IsGlobal :有趣的参数,假设您构建了很多个顺序组,您的群集里面有DHCP,Fileserver,DC虚拟机等基础架构角色,那么您可以把它们顺序组设置为IsGlobal=1,这样设置之后,依赖关系将always always 第一联机IsGlobal=1的顺序组,再处理其它的,适用于群集里面多个基础架构服务,其它顺序组都对它们有所依赖的场景。

#示例:Set-ClusterGroupSet -name ServerInfra -IsGlobal 1

当前我们创建完了顺序组,群集知道你有这样一个规划了,但是顺序组里面没有资源,现在是空的,我们需要把对应的虚拟机或其它群集角色添加进去

#添加虚拟机至顺序组

#DC

Add-ClusterGroupToSet -CimSession $Cluster -Name DC -Group "DC"

#SharepointDB

Add-ClusterGroupToSet -CimSession $Cluster -Name SharepointDB -Group "SPDB"

#SharepointApp

Add-ClusterGroupToSet -CimSession $Cluster -Name SharepointApp -Group "SPAP"

#SharepointWeb

Add-ClusterGroupToSet -CimSession $Cluster -Name SharepointWeb -Group "SPWEB"

这里的Name是顺序组的名称,后面Group是虚拟机名称,如果是其它群集角色则也添加群集角色名称,这里每一个顺序组中可以添加多个虚拟机或群集角色,老王这里只添加一台作为测试,如果您在一个顺序组中添加了多台虚拟机或群集角色,那么您还可以配置顺序组内的依赖关系。

#查看顺序组,可以看到顺序组中各成员

OK,三步走,创建顺序组,添加各顺序组成员,接下来该创建顺序组之间依赖关系了

#创建顺序组之间依赖关系

Add-ClusterGroupSetDependency -CimSession $Cluster -Name SharepointWeb -Provider SharepointApp

Add-ClusterGroupSetDependency -CimSession $Cluster -Name SharepointApp -Provider SharepointDB

Add-ClusterGroupSetDependency -CimSession $Cluster -Name SharepointDB -Provider DC

#获取群集内顺序组之间依赖关系

根据老王的测试,发现顺序组依赖功能仅在群集节点冷启动下生效,即是说,只有在节点关机开机时,我们创建的这套依赖关系才会生效。本例中,我们将虚拟机全部关机,然后启动SharepointWEB,看看会不会根据依赖关系自动把其它虚拟机都启动起来

关闭所有虚拟机

启动SPWEB

可以看到,已经按照我们构建的依赖关系进行逐步唤醒各个依赖顺序组,并唤醒各个顺序组中虚拟机,每唤醒一个依赖顺序组后,都会按照该顺序组设定的开机等待时间,等待时间到了才会继续唤醒下个顺序组。

确保所有依赖关系顺序组都已经启动完成,最终SPWEB才会启动

查看clusterlog可以看到顺序组依赖工作过程

设置顺序组及依赖关系,群集DM记录信息进入群集数据库,并通过GUM同步至所有节点

群集通过RCM操作处理顺序组依赖启动功能

通过以上实验相信大家可以看出顺序组依赖关系这项功能是怎么回事了,可以说这是一项真正解决群集应用依赖启动问题的功能,我们自己构建顺序组及依赖关系,虚拟机关机再开机时,RCM遵照我们的构建进行操作处理,实质上,RCM处理依赖关系,首先看的是顺序组,我们实现这样一套自己构建的东西后,实际群集操作的依赖关系是按照顺序组为单位进行操作,然后幕后顺序组再对应到虚拟机或群集角色,我们完成虚拟机到顺序组的映射,顺序组到依赖关系的映射,最后使本来不具备依赖关系功能的虚拟机应用上依赖关系功能

总结下顺序组依赖功能的利与弊

  1. 群集级别功能,单台配置,全群集生效,配置信息记录至群集数据库同步至全群集节点及仲裁磁盘
  2. 不仅可以应用于虚拟机,还可以应用于其他群集角色
  3. 可以任意构建依赖关系模型,支持跨顺序组之间构建依赖关系,也支持顺序组内构建依赖关系,可以手动调整顺序组延迟启动时间,依赖延迟操作,较为灵活,适用于真正有依赖启动需求的场景
  4. 缺点,只能是节点冷启动,或虚拟机关机开机时依赖关系才会生效,手动移动至最佳节点,维护模式不会生效,希望以后维护模式,手动移动至最佳节点也可以用上就厉害了,这样如果跨站点迁移的话,当我们迁移Web,就会也把DB,AP也一起迁移过去

2016里面除了针对于群集的顺序组,还有个针对于虚拟机的管理组功能,老王特定把这两个功能拿到一起来讲,怕大家给它们两个弄混

首先,两者最大的一个区别,顺序组是2016群集的功能,VM管理组是2016Hyper-V的功能,顺序组主要为了解决资源启动时的依赖关系问题,VM管理组主要是解决虚拟机批量管理的问题。

简单来讲,VM管理组,是我们在Hyper-V 2016上面创建出来的一个逻辑的组,它的主要作用

  1. 同一个VM管理组内虚拟机可以一起进行Hyper-V复制
  2. VM管理组支持嵌套管理组进行管理操作
  3. Hyper-V 2016中使用Shared Drive的虚拟机支持Hyper-V复制,但需要依赖于VM管理组功能

#创建VM管理组

New-VMGroup -Name "DC" -GroupType VMCollectionType

New-VMGroup -Name "SPDB" -GroupType VMCollectionType

New-VMGroup -Name "SPWEB" -GroupType VMCollectionType

New-VMGroup -Name "SPAP" -GroupType VMCollectionType

#添加虚拟机进入VM管理组 ,可以添加多个虚拟机进入同一个管理组,()后面逗号隔开继续输入即可

Add-VMGroupMember -Name "DC" -VM (Get-VM "DC")

Add-VMGroupMember -Name "SPDB" -VM (Get-VM "SPDB")

Add-VMGroupMember -Name "SPAP" -VM (Get-VM "SPAP")

Add-VMGroupMember -Name "SPWEB" -VM (Get-VM "SPWEB")

#获取VM管理组中虚拟机

(Get-VMGroup -Name "SPDB").VMMembers

#获取宿主机所有虚拟机的管理组信息

Get-VM | FT Name, Groups

同一个VM管理组中可以有多个虚拟机,同一个虚拟机可以属于多个管理组

由于Hyper-V复制不允许群集内,只允许单机对单机,单机对群集,或群集对群集,所以老王暂时把HV02退出群集节点,勾选允许作为复制副本,群集开启hyper-v replica boker角色,允许作为复制副本

#基于组级别创建VM复制关系

Enable-VMReplication -VM (Get-VMGroup SPDB).VMMembers -ReplicaServerName HV02 -ReplicaServerPort 80 -AuthenticationType Kerberos -CompressionEnabled 1 -ReplicationFrequencySec 30 -AutoResynchronizeEnabled 1

#查看复制状态

VM管理组除了VMCollectionType这种组类型,还有一种ManagementCollectionType组类型,当我们如果需要嵌套管理组资源则需要创建这种VM管理组类型

#创建VM管理组ManagementCollectionType类型

#嵌套添加VM管理组至新类型管理组中

Add-VMGroupMember -VMgroup (Get-VMGroup "MGroup") -VMGroupMember (Get-VMGroup "DC"),(Get-VMGroup "SPDB"),(Get-VMGroup "SPAP"),(Get-VMGroup "SPWEB")

#获取嵌套VM管理组架构

#尝试针对于嵌套VM管理组启动复制,发现不成功,也在意料之内,Hyper-V复制应该是只支直接组内就是虚拟机的类型,否则获取不到VM参数即不成功。

至此,老王为大家简单介绍了下VM管理组功能,这是一项Hyper-V 2016的功能,只不过都是和组相关,特地拿出来说下,可以看到VM管理组的功能,主要定位于Hyper-V层面,可以针对于组级别进行复制操作,可以进行嵌套组管理,目前看来功能还不是很多,老王看来目前为止,主要的意义在于,针对于组级别做Hyper-V复制,可以解决原来share vhdx虚拟机不能复制的问题,期待日后更多Hyper-V的管理操作也可以通过这种管理组的方式批量操作,这项功能英文叫VM Group,老王将它翻译为VM管理组,因为老王这项功能更侧重与管理,如果单说组过于抽象,也和顺序组功能区别开,本篇文章就到这里,希望看到的朋友都会有收获,后续几篇还将继续微软WSFC 2016管理操作方面的新功能进行讲解,一切都是刚刚开始

时间: 2024-10-17 04:07:38

WSFC2016 VM顺序组与管理组的相关文章

Linux用户和组权限管理

一.文件的权限 文件的权限主要针对三类对象进行定义 owner:属主u:   group:属组g:    other :其他o 每个文件针对每类访问者都定义了三种权限: r:Readable   w: Writable    x: eXcutable 对文件来说 r: 可使用文件查看类工具获取其内容 w: 可修改其内容 x: 可以把此文件提请内核启动为一个进程 对目录来说 r : 可以使用ls查看此目录中文件列表 w: 可在此目录中创建文件,也可删除此目录中的文件 x: 可以使用ls -l查看此

【Linux系统】用户与组账号管理实例与讲解

用户账号与组账号管理 下面是我对用户账号与组账号之间的一些整理与实例配置. 在Linux系统中用户和组账号分为以下几点: 超级用户:root用户是Linux默认的超级用户具有相当于windows系统中的administrator的作用. 普通用户:普通用户的账号需要由root或其它管理员用户创建. 程序用户:用于添加Linux系统中的一些特定的低权限的用户.(这些用户只用于维持或某个程序的正常运行) 组账号 基本组(私有组):每一个账号都有自己的属于自己的组. 附加组(公共组):与其他用户在同一

Linux命令之账户和组的管理

Linux系统对账号和组的管理是通过ID号来实现的,用户ID称为UID,组ID称为GID.其中,UID为0,代表超级管理员,即root账号.组分为基本组和附加组,一个用户在同一时刻只能有一个基本组,但可以加入多个附加组.系统默认在创建用户时会同时创建同名的组,并且为基本组. 一 创建用户和组: 1 useradd:创建新账号 选项:-c    账号描述信息,一般为全称 -d    设置家目录,默认为/home/用户名 -e    设置账户的失效日期,格式为2017-10-30 -g    设置账

linux中用户和组的管理

一.用户的帐号管理   ①添加帐号:useradd 选项: -c, --comment 'COMMENT':在创建用户时为用户添加注释信息,一般为全名. -d, --home/PATH/TO/HOME_DIR:在创建用户的时候为用户指定家目录的绝对路径,被指定的目录应该是事先不存在的目录: -g, --gid GROUPNAME:在创建用户时,为用户指定主组: -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:在创建用户时,为用户添加附加组: -m, --cr

12.用户和组账户管理

1.用户账户 A.普通用户账户:普通用户在系统上的任务是进行普通操作 B.超级用户账户:管理员在系统上的任务是对普通用户和整个系统进行管理.对系统具有绝对的控制权,能够对系统进行一切操作. 2.组账户 A. 私有组:当创建一个用户时没有指定属于哪个组,Linux就会建立一个与用户同名的私有组,此私有组只含有该用户. B.标准组:当创建一个用户时可以选定一个标准组,如果一个用户同时属于多个组时,登录后所属的组为主组,其他的为附加组. 3.账户系统文件 A./etc/passwd 每行定义一个用户账

如何批量部署Office 2013 (五)——使用组策略管理Office

本节内容将为您介绍如何使用组策略管理Office,方法如下: 1.登录到DC中,找到C:\Windows\SYSVOL\domain\Policies目录,建立一个名为PolicyDefinitions的文件夹 2.将Office 2013的组策略模板拷贝到这个文件夹下 3.打开AD用户和计算机,将目标计算机和用户移动到Office这个OU中 4.按下Windows+R打开运行窗口输入gpmc.msc回车 5.右键点击Office 2013这个组策略对象,点击"编辑" 6.展开&quo

Linux系统下用户与组的管理

Linux系统下用户与组的管理 一.用户及组基本概述 Linux 系统上,用户管理是基于用户名和密码的方式进行资源的分配. 1.uid(用户身份标识) (1)root用户 uid为0 (2)普通用户:1--65535 系统用户 系统已经已经存在专门用来对系统服务或者系统资源进行管理的 1--499(CentOS 6.X) 1--999 (CentOS 7.X) 登录用户(平时专门做系统管理的用户) 500+ (CentOS 6.X) 1000+ (CeentOS 7.X) 2.gid(用户组身份

运维基础--Linux用户和组的管理

用户和组的管理 系统中,创建用户和群组的目的,就是对系统资源进行权限的统一分配管理.好比说,在一个公司内的资源,不同级别的在职员工对资源的利用权限需要进行统一分配: 如何避免权限分配后的滥用呢? 用户进行权限使用的时候,都必须遵守Cisco公司开发的AAA认证体系,即: Authentication:认证,核实身份是否正确 Authorization: 授权,对已经核实身份的用户进行资源分配 Accounting: 审计,监管资源被使用的情况: 进行资源认证的必要性最主要来源于计算机系统资源的有

以Graphicslayer为管理组来管理Element.

转自原文 以Graphicslayer为管理组来管理Element. 前言 在AE开发过程中,我们经常使用Element(元素).它的出现让地图与用户之间的交互增加了不少的效果.在地图上,可以通过各种element元素来表现我们需要的效果.例如高亮显示中用到element比较频繁.往往需要往地图中添加一个element来显示效果.当在地图上element越来越多时,而且还是通过不同的功能添加进来的,那么,这么多而复杂的element 就需要用一种管理方法来进行有序管理,让element有他的归属