如何使用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.csdn.net/qq_16542775/article/details/52779812