許多客戶使用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.csdn.net/qq_16542775/article/details/52779812