天天看點

WSFC 群集編排任務計劃

任務計劃是作業系統中重要的元件,通過任務計劃,電腦可以自動幫助我們在某條件下觸發某操作,以完成任務

對應到現實生活類似于現在的智能電飯鍋,你每天早上需要吃早餐,但是又不想做,就用智能電飯鍋做了個定時操作,每天早上七點,用小火幫我煮好粥,到點起來吃就可以了,作業系統中的任務計劃也是相通的概念,意義在于通過電腦自動幫助我們完成任務,不用每次親力親為

任務計劃通常被用于作業系統或後端的應用程式,例如定期執行稽核收集腳本,定期生成硬體報告,定期處理應用程式緩存,等等

進階電腦使用者可以用任務計劃,自動幫助我們執行某事,例如你知道今天下午三點要做某事,但是你三點有事不在,就可以做個任務計劃,到時間電腦自動幫你完成

企業IT管理者可以用任務計劃,幫助我們來完成自動化的伺服器收集監視,或需要重複性執行的操作

應用開發人員可以用任務計劃,定期自動執行應用程式所需配置,例如定期啟動某個exe,定期處理某個緩存

當我們提任務計劃,通常我們是指計劃某事,然後做某事,而不僅僅是計劃,是以電腦中的任務計劃與月曆提醒有所差別,所謂的提醒軟體隻是提醒你去做某事,但不會幫你去做

任務計劃在Windows Server 上面和Windows Client 上面都有,最早老王記得Server 2000上面就曾看到過,那時它叫做任務計劃,一直到2003,2003任務計劃和2000時代并不太大差别,當建立任務計劃時會跑一個向導,可以指定任務要執行的程式,運作任務的周期,每天,每周,每月,一次性,計算機啟動時,登入時,執行任務密碼,建立完成後任務計劃可以在控制台-任務計劃檔案夾下看到

到了Sever 2008和vista時代,任務計劃得到了增強,改名為任務計劃程式,移至管理工具中,裡面将任務計劃更明确的劃分為 觸發器 - 操作 - 條件 三個層級,滿足什麼觸發前提下觸發任務計劃,觸發之後要執行什麼操作,執行操作之前有哪些條件需要滿足,例如可以設定隻在作業系統空閑時間執行等等,對于界面上面顯示也更加友好,支援顯示任務曆史執行記錄,支援導出任務,導入任務

在那個時代不像現在,那時代微軟還沒有powershell3.0,DSC,SCO這些強大的自動化工具,那時微軟自身并沒有太多自動化工具,是以,如果管理者需要執行一些自動化管理操作,通常會選擇ps1+任務計劃,VBS+任務計劃,BAT+任務計劃,寫好一個腳本,然後配合任務計劃,定期執行

到了Powershell 3.0,Windows Server 2012,任務計劃程式得到了更進一步的增強,支援直接通過Powershell去管理建立任務計劃,更加的靈活友善

示例:

注冊任務計劃操作,已注冊的Job不會因為Powershell的控制台關閉而消失

Register-ScheduledJob -Name querydriver -ScriptBlock  {driverquery }

建立任務計劃操作變量

$job=Get-ScheduledJob -Name querydriver

建立任務計劃觸發器

下午七點半執行,每隔五天執行一次

$jobtrigger=New-JobTrigger -Daily -At "19:30 PM" -DaysInterval 5

為任務計劃操作配置設定觸發器

$job=Get-ScheduledJob -Name querydriver | Add-JobTrigger -Trigger $jobtrigger

Powershell建立的任務計劃将在背景異步執行,同樣也是底層調用了任務計劃,隻不過通過powershell包上一層,管理起來更加靈活,建立完成的任務計劃可以在任務管理程式 taskschd.msc 裡面看到,Powershell 建立的任務計劃位于Windows - Powershell - ScheduledJobs檔案夾

檢視任務計劃

Get-ScheduledJob -Name querydriver

删除任務計劃

Get-ScheduledJob -Name querydriver  | Unregister-ScheduledJob

禁用任務計劃

Get-ScheduledJob -Name querydriver | Disable-scheduledjob

以上為大家簡單講了下任務計劃來龍去脈,以及最新2012開始對于Powershell管理的支援,下面我們切入主題,群集編排任務計劃

也是在2012動态資料中心時代新增進來的功能,雖然我們有了通過powershell管理任務計劃的功能,但是這隻能在單台機器執行,如果是一個大規模群集的話,需要将任務計劃複制到其它節點才可以,如果節點過多也過于麻煩,通過群集編排任務計劃,提供了三種在群集内編排任務計劃的方法

任何節點:将任務計劃注冊到群集中,執行程式放在群集共享磁盤,當到達觸發條件時會在任意1個節點上執行任務計劃,适用于對于群集稽核日志,報告收集,應用程式預熱等需求,我不需要在每個節點上面執行,隻要有一個節點執行了就好,如果上次執行的節點當機,下次會挑選其它的正常節點執行。

資源特定:将任務計劃注冊到群集中,執行程式放在群集共享磁盤,當到達觸發條件時,自動針對于群集的指定資源執行,該類型任務計劃與群集資源綁定,資源遷移到那個節點,任務計劃就在那個節點執行,如果資源被删除,則任務也被删除,适用于針對群集磁盤執行碎片整理操作,預設情況下對于CSV,永遠不會執行磁盤整理操作,如果您在CSV上面存放了大量動态VHDX,建議您建立一個此類型的編排任務,定期自動執行磁盤整理,将幫助CSV提升性能。

群集範圍:将任務計劃注冊到群集中,執行程式放在群集共享磁盤,當到達觸發條件時,任務計劃程式将在所有有效的群集節點上執行,例如如果您希望在登入到任何節點時要打開一個或一組工具,則可以将這種任務添加為群集範圍任務

群集編排任務從2012開始引入至今,目前還是隻能通過powershell方式管理,所有群集編排任務的管理指令如下

Get-ClusteredScheduledTask        查詢叢集任務

Register-ClusteredScheduledTask 注冊叢集任務

Set-ClusteredScheduledTask         更新已經注冊的叢集任務

Unregister-ClusteredScheduledTask 取消注冊群集任務

本例老王以建立一個資源特定類型的群集編排任務計劃為例

1.建立編排操作

$action = New-ScheduledTaskAction - Execute C\ClusterStorage\Volume2\1.bat

内容如下,老王實作了CSV的碎片整理,由于屬于群集磁盤,是以對于CSV執行磁盤整理指令前需置為重定向模式,整理結束後再行恢複

2.建立編排觸發器,每周周五晚上十一點執行

$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At "23:00"

3.将編排操作,編排觸發器注冊至群集編排任務

Register-ClusteredScheduledTask –Cluster hvclus –TaskName csvdefrag –TaskType ResourceSpecific –Resource "群集磁盤3"–Action $action –Trigger $trigger

TaskType其他類型參數:AnyNode  ,ClusterWide,注冊後不可變更編排任務類型

經過群集編排注冊的任務計劃會顯示在任務計劃程式-Windows -Failover Clustering檔案夾中,此檔案夾在未建立群集編排任務計劃前處于隐藏狀态,建立編排任務後顯示,雖然UI界面也可以建立任務,但是UI界面建立的任務計劃無群集編排效果,僅用作單機,當節點被群集逐出後,所有該檔案夾的任務都将被删除

建立完成群集編排任務後,可以看到,資源特定類型的編排任務僅在資源所有者節點為準備就緒狀态,其它節點上也會顯示群集編排任務,但為禁用狀态

移動資源至12HV02後,群集編排任務計劃在12HV01上面禁用,12HV02上面就緒

任意節點類型編排任務,将随機在一個節點上面就緒,如果該節點當機,則尋找其它正常節點就緒

群集範圍類型編排任務,将在所有節點上面就緒,達到觸發器條件時,所有節點一起執行,如果節點從群集被逐出,則編排任務将自動删除

老王這裡把群集編排任務計劃的操作程式放在群集共享磁盤中,是處于高可用考慮,您也可以嘗試把操作程式放在所有節點本地磁盤相同位置

查詢群集内所有編排任務計劃

Get-ClusteredScheduledTask –Cluster hvclus

查詢群集内特定資源類型編排任務計劃

Get-ClusteredScheduledTask –Cluster hvclus –TaskType ResourceSpecific

查詢群集内特定名稱的編排任務計劃

Get-ClusteredScheduledTask –Cluster hvclus –TaskName csvdefrag

更新群集編排任務計劃

變更觸發器條件

$trigger = New-ScheduledTaskTrigger -At 22:00  -Daily

更新編排任務計劃

Set-ClusteredScheduledTask –Cluster hvclus–TaskName csvdefrag -Trigger $trigger

查詢編排任務計劃觸發器條件

(Get-ClusteredScheduledTask -TaskName csvdefrag).TaskDefinition.Triggers

取消注冊群集編排任務計劃,取消後任務将從各節點删除

Unregister-ClusteredScheduledTask -Cluster hvclus -TaskName csvdefrag

本文轉自 老收藏家 51CTO部落格,原文連結:http://blog.51cto.com/wzde2012/2069696

繼續閱讀