iT邦幫忙

0

高可用性 at 工作排程器

根據標題餵狗之後只能得到工作排程器無法應用於HA情境(還是我餵錯狗糧導致找不到我要的答案)

會有此需求是因為Server在進行Windows Update時會需要重開機的動作
但目前有部分作業需要將參數帶入本機內執行檔運作

以下情境不可以

  1. 兩台都把排程ON起來
  2. 兩台排程工作時間拉長&工作時間錯開
  3. 寫成windows service(利用cluster來HA)

請問前輩有比較好的bat寫法,或是第三方軟體,或是其他的解法,謝謝

看更多先前的討論...收起先前的討論...
slime iT邦大師 1 級 ‧ 2019-09-06 13:38:23 檢舉
最大的原則:
Windows 有很多程式可以透過遠端呼叫, 包括工作排程 (schtasks)或程式(psexec)

概念上有幾種作法:
1. 第一台執行排程時, 第一項是去把第二台的排程停掉.

Change the properties of scheduled task, Enable or Disable a task:
SCHTASKS /Change [Connect_Options] {[/RU username] [/RP password] [/TR taskrun]} /TN taskname
[/ST starttime] [/RI interval] [ {/ET endtime | /DU duration} [/K] ] [/SD startdate] [/ED enddate]
[/ENABLE | /DISABLE] [/RL level] [/IT] [/Z]

2. 執行時, 在某個網芳紀錄正在執行, 另一台檢查檔案, 若檔案為執行中則不執行.
qpowjohn iT邦新手 5 級 ‧ 2019-09-06 16:12:05 檢舉
有些地方想不通
1. 如果我兩台同時做,那我第一台把第二台的排程停掉之後第一台掛點,那我第二台因為已經被停用了也不會接續工作
2. 您的意思是說在原本的工作排程填入一個開啟檔案的動作,等到結束的時候才關閉,類似一個flag的作用吧,但是我這邊如果兩台同時動作,每5分鐘執行一次,執行時間約10秒鐘,這樣是不是就變成執行時間少於5分鐘了(因為兩台都有排程在跑)。
slime iT邦大師 1 級 ‧ 2019-09-06 18:32:02 檢舉
1. 是, 這種情況也可以另一台的第二個排程自我檢查.
2. 也有其他方式可以搭配, 例如:

A_main , B_main : (同樣內容)
1. 檢查上次執行最後完成時間.
2. 如果已經有 5 分鐘, 進行本次執行.
3. 關掉另一台的排程.
4. 開始 10 秒鐘的動作.
5. 寫入執行完成檔.
6. 啟動另一台的排程.

A_sub, B_sub: (同樣內容)
如果另一台的 main 不是執行中, 本機的 main 卻是停用, 則把本機的 main 改為啟用.
qpowjohn iT邦新手 5 級 ‧ 2019-09-09 15:35:49 檢舉
我目前的想法
在第二台做B_sub
若ping不到第一台,把B_main啟動
若ping到第一台,把B_main停用
雖然不是很完整的HA,但聊勝於無...

尚未有邦友回答

立即登入回答