我有一个运行Windows Server 2008 R2的双节点群集。它本质上是SQL Server的主动/被动群集。
我已在当前活动节点上设置了计划任务。我想在被动节点上设置相同的任务但是要让它只在主动节点上运行。
我意识到这个版本的Windows不支持集群任务,但我认为解决方法可能是创建另一个在节点变为“活动”时触发的任务,从而启动第一个任务,以及一个合作伙伴任务在节点变为“被动”时禁用第一个任务。
我没有在互联网上找到关于做这样的事情的任何事情,所以我想知道这是否可行,如果是这样的话?
答案 0 :(得分:1)
我使用通用脚本来启用和禁用任务:
WshShell = new ActiveXObject("WScript.Shell");
strEnableTask = "schtasks /change /ENABLE /TN \"\\Task\"";
strDisableTask = "schtasks /change /DISABLE /TN \"\\Task\"";
function Open() {
return true;
}
function Online() {
oExec = WshShell.Run(strEnableBackup, 0, true);
return oExec.ExitCode;
}
function LooksAlive() {
return true;
}
function IsAlive() {
return true;
}
function Offline() {
oExec = WshShell.Run(strDisableBackup, 0, true);
return oExec.ExitCode;
}
function Close() {
return true;
}
function Terminate() {
return true;
}
答案 1 :(得分:0)
我想我找到了办法。
要从命令行启用或禁用任务,我可以使用schtasks命令:
schtasks /Change /TN "MyTask" /ENABLE
schtasks /Change /TN "MyTask" /DISABLE
我可以将这些命令放在.bat文件中,并通过创建任务并使用以下设置设置触发器来激活群集时触发它们运行:
Begin the task: On an event
Log: Microsoft-Windows-FailoverClustering/Operational
Source: FailoverClustering
EventID: 1201
当群集脱机时,将触发具有EventID 1204的类似任务。
结合所有这些意味着我可以在我的集群的两个节点上创建任务,并且只在主动节点上启用它。
有一点需要注意的是,我还没有测试过它!我也不是100%确定这些事件总会触发(例如,如果节点断电并随后重新启动),那么我可能还需要检查其他一些事件。虽然看起来很有希望。