如何使用Windows Server 2012配置群集任务
许多客户使用Windows任务计划程序在其服务器上执行定期的计划维护任务,运行审核检查,生成报告,甚至更新应用程序数据缓存。 Windows任务计划程序中的任务在满足给定触发器(条件)时执行操作。
在以前的Windows Server版本中,您可以为作为故障转移群集一部分的单个节点(服务器)创建本地任务,但任务计划程序对整个群集并不感知。在大型32或64节点集群上配置和管理任务可能比将其维护在单台机器上更具挑战性。将任务从一台机器手动复制到另一台机器会变得耗时且容易出错。 在Windows Server 2012中,您现在可以将群集计划任务用于要在群集上运行的任务,从而大大提高了体验。有三种类型的群集计划任务:
· Any Node:任务在群集中只启用一个实例(其它节点上的任务处于禁用状态),因此该任务仅在一台机器中触发。此任务将存在于群集中,直到任务被取消注册或群集被销毁为止。
示例:如果您有一个将信息从群集中导出并发送报告的程序,则只需要在一台计算机中运行,并且不用关心是哪一台。这可以设成任何节点任务。
· Resource Specific:和群集中的指定资源绑定,只启用一个任务实例。该任务将在与拥用指定资源相同的节点上运行。因此,如果将集群资源移动到另一个节点,那么任务也是如此。与任何节点任务不同,如果此资源被删除,则任务也是如此。
示例:如果您有一块物理磁盘,并且您想要每月对磁盘进行碎片整理。这是资源特定任务的一个很好的例子。
· Cluster Wide:在集群的每个节点中都启用任务的一个实例。在这种情况下,当满足触发器时,该操作将在那时还在群集中且满足触发条件的节点中执行。
示例:如果要在登录到任何节点时打开一个或一组工具,则可以将其作为“群集范围”任务添加。
使用PowerShell管理集群任务
现在来看看如何使用PowerShell配置和管理集群任务。 有四个基本PowerShell命令可用于配置,查询或修改群集任务。
命令 |
描述 |
Get-ClusteredScheduledTask |
查询集群任务。 |
Register-ClusteredScheduledTask |
注册一个集群任务。 |
Set-ClusteredScheduledTask |
修改已注册的集群任务。 |
Unregister-ClusteredScheduledTask |
取消注册集群任务。 |
在Windows Server 2012中,来自不同模块的PowerShell命令首次使用时会自动加载。 请注意,上述PowerShell命令可通过TaskScheduler模块使用。 请注意,命令中有“Clustered”前缀作为命令名词的一部分。 如果您尝试使用没有集群字样的命令,那么您将不会创建一个群集任务,也不会查询群集中的任务,而是在常规节点(服务器)作用域上应用任务。
需要更多信息? 记住您可以从PowerShell窗口运行以下任何命令:
· [name of the cmdlet] -?
· Get-help [name of the cmdlet] –full
注册集群任务
在这个集群任务的入门,我们将向您展示如何通过3个简单的步骤创建Resource Specific任务:
1. 选择操作
$action = New-ScheduledTaskAction -Execute C:\ClusterStorage\Volume1\myprogram.exe
这将创建我的任务要执行的操作。 正如您可以在Execute参数的值中看到的,我的程序位于集群中的共享卷(CSV)上,这就使其对我的集群已具有高可用,并且可以从所有节点访问。
2. 选择触发时机
$trigger = New-ScheduledTaskTrigger -At 13:00 –Daily
这将在集群中创建启动我的任务的触发器。 对于这个例子,我想每天在13:00运行我的程序。
3. 注册群集任务
Register-ClusteredScheduledTask –ClusterMyCluster –TaskName MyResourceSpecificTask –TaskType ResourceSpecific –ResourceMyResourceName –Action $action –Trigger $trigger
Register-ClusteredScheduledTask –ClusterMyCluster –TaskName MyAnyNodeTask –TaskType AnyNode –Action $action –Trigger$trigger
Register-ClusteredScheduledTask –ClusterMyCluster –TaskName MyClusterWideTask –TaskType ClusterWide –Action $action–Trigger $trigger
你完成了 您的群集现在有一个任务,每天在13:00运行。
一旦你注册了任务,你仍然可能要查询它,甚至取消注册。 为此,您可以执行以下操作:
查询集群任务
Get-ClusteredScheduledTask允许您通过以下方式查询集群中的任务:
· 集群中的任务
· 某种类型的任务
· 任务名称
查询集群中所有的任务
Get-ClusteredScheduledTask–Cluster MyCluster
查询指定类型的任务
Get-ClusteredScheduledTask–Cluster MyCluster –TaskType ResourceSpecific
根据名称查询任务
Get-ClusteredScheduledTask–Cluster MyCluster –TaskName MyResourceSpecificTask
更新集群任务
注册任务后,其操作和触发器可以独立修改。 在这个例子下,我们要更新触发器,不要在13:00执行,而是将在23:00执行那时所有人都离开办公室了。
$trigger =New-ScheduledTaskTrigger -At 23:00 –Daily
Set-ClusteredScheduledTask–Cluster MyCluster –TaskName MyResourceSpecificTask –Trigger$trigger
类似地,如果要更新操作,则可以创建新操作并将其分配给任务。
如何查看触发器的值
要查看操作和触发器的当前值,请转到任务的“TaskDefinition”。 此任务定义包含触发器和操作。这是我们更新任务后如何查看触发器以及任务的输出的示例。
(Get-ClusteredScheduledTask -TaskNameMyResourceSpecificTask).TaskDefinition.Triggers
输出:
Enabled : True
EndBoundary :
ExecutionTimeLimit :
Id :
Repetition : MSFT_TaskRepetitionPattern
StartBoundary : 2012-05-15T23:00:00
RandomDelay : P0DT0H0M0S
PSComputerName :
取消注册集群任务
Unregister-ClusteredScheduledTask允许您通过指定集群名和任务名称来删除任务。
Unregister-ClusteredScheduledTask –Cluster MyCluster –TaskNameMyResourceSpecificTask
任务计划程序(taskschd.msc)管理单元
虽然群集计划任务只能通过PowerShell进行管理,但它们也显示在“ Failover Clustering”文件夹下的任务计划程序界面中。
常见问题(FAQ):
如果“资源特定”任务的资源被删除,我的任务会发生什么?
可能会发生我们为“特定资源”任务选择的资源从群集中删除。 在这种情况下,任务也将从集群中删除。
去掉一个节点 我的任务是否仍然在节点中?
作为从集群中逐出节点的过程的一部分,任务被删除。
注册后可以更改我的任务类型吗?
不能。已注册的任务无法从任何节点,群集范围或资源特定转换。
我仍然可以在群集节点上创建非群集任务吗?
可以。 所有群集任务都将在路径<PATH>下创建。 因此,只要您的非群集任务处于不同的路径下,您可以随时在单个群集节点上创建它们。重要的是要注意,作为从集群中逐出节点的过程的一部分,<PATH>下的所有任务都将被清除。
总结
在Windows Server 2012中,群集计划任务可以快速方便地创建 - 它们可用于维护群集,集群资源(如磁盘),甚至集群上运行的应用程序。
翻译自:https://blogs.msdn.microsoft.com/clustering/2012/05/31/how-to-configure-clustered-tasks-with-windows-server-2012/
注意:
不支持将群集任务配置为在特定用户凭据下运行。 集群任务总是以具有管理员权限的“Local System”运行。
任务中用Windows身份认证连接SQL Server时需要将所有节点的机器名做为登录名并配置相应权限
任务中访问共享目录,需要给所有节点机器名开放权限或代码中指定凭据
参考:C# 访问共享文件夹或者磁盘(需要用户名密码)http://blog.****.net/qq_16542775/article/details/52779812