1

我有一个运行 Windows Server 2008 R2 的两节点集群。它本质上是 SQL Server 的主动/被动集群。

我已经在当前活动节点上设置了计划任务。我想在被动节点上设置相同的任务,但让它只在主动节点上运行。

我意识到此版本的 Windows 不支持集群任务,但我认为解决方法可能是创建另一个任务,该任务在节点变为“活动”时触发,从而启用第一个任务,并禁用合作伙伴任务节点变为“被动”时的第一个任务。

不过,我还没有在互联网上找到任何关于做这样的事情的信息,所以我想知道这是否可行,如果可以,怎么办?

4

2 回答 2

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;
}
于 2016-04-08T12:00:50.973 回答
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% 确定这些事件会一直触发(例如,如果一个节点断电并随后重新启动),所以我可能还需要检查其他一些事件。不过看起来很有希望。

于 2013-06-28T11:16:08.663 回答