Windows 故障转移群集 API 仍然有效?
Windows Failover Cluster API still Valid?
我正在寻找部署选项。 2 windows 故障转移群集实例下的 Net Windows 服务。但我坚持使用 Windows 故障集群 API 用于跨 windows 服务实例进行通信。我看不到任何 Ref.用它。它还有效吗?
首选方法是从您的代码中调用 Powershell Cmdlets。
这是我写的 class 集群虚拟机。它应该给你足够的基础去到达你想去的地方。
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Management.Automation;
public static class FailoverClustering
{
public static List<string> GetClusterNode(string cluster)
{
List<string> nodes = new List<string>();
PowerShell powerShell = PowerShell.Create();
powerShell.AddCommand("Get-ClusterNode");
powerShell.AddParameter("Cluster", cluster);
foreach (PSObject result in powerShell.Invoke())
nodes.Add(result.Members["Name"].Value.ToString());
if (powerShell.Streams.Error.Count > 0)
throw new Exception(powerShell.Streams.Error[0].Exception.Message);
powerShell.Dispose();
return nodes;
}
public static ClusteredVirtualMachine AddClusterVirtualMachineRole(string cluster, string virtualMachine)
{
PowerShell powerShell = PowerShell.Create();
powerShell.AddCommand("Add-ClusterVirtualMachineRole");
powerShell.AddParameter("Cluster", cluster);
powerShell.AddParameter("VirtualMachine", virtualMachine);
Collection<PSObject> result = powerShell.Invoke();
if (powerShell.Streams.Error.Count > 0)
throw new Exception(powerShell.Streams.Error[0].Exception.Message);
powerShell.Dispose();
return new ClusteredVirtualMachine(
result[0].Members["Name"].Value.ToString(),
result[0].Members["OwnerNode"].Value.ToString(),
result[0].Members["State"].Value.ToString()
);
}
}
public class ClusteredVirtualMachine
{
public string Name { get; }
public string OwnerNode { get; }
public State State { get; }
public ClusteredVirtualMachine(string name, string ownerNode, string state)
{
Name = name;
OwnerNode = ownerNode;
switch (state)
{
case "Offline": State = State.Offline; break;
case "Online": State = State.Online; break;
}
}
}
public enum State
{
Online,
Offline
}
我正在寻找部署选项。 2 windows 故障转移群集实例下的 Net Windows 服务。但我坚持使用 Windows 故障集群 API 用于跨 windows 服务实例进行通信。我看不到任何 Ref.用它。它还有效吗?
首选方法是从您的代码中调用 Powershell Cmdlets。
这是我写的 class 集群虚拟机。它应该给你足够的基础去到达你想去的地方。
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Management.Automation;
public static class FailoverClustering
{
public static List<string> GetClusterNode(string cluster)
{
List<string> nodes = new List<string>();
PowerShell powerShell = PowerShell.Create();
powerShell.AddCommand("Get-ClusterNode");
powerShell.AddParameter("Cluster", cluster);
foreach (PSObject result in powerShell.Invoke())
nodes.Add(result.Members["Name"].Value.ToString());
if (powerShell.Streams.Error.Count > 0)
throw new Exception(powerShell.Streams.Error[0].Exception.Message);
powerShell.Dispose();
return nodes;
}
public static ClusteredVirtualMachine AddClusterVirtualMachineRole(string cluster, string virtualMachine)
{
PowerShell powerShell = PowerShell.Create();
powerShell.AddCommand("Add-ClusterVirtualMachineRole");
powerShell.AddParameter("Cluster", cluster);
powerShell.AddParameter("VirtualMachine", virtualMachine);
Collection<PSObject> result = powerShell.Invoke();
if (powerShell.Streams.Error.Count > 0)
throw new Exception(powerShell.Streams.Error[0].Exception.Message);
powerShell.Dispose();
return new ClusteredVirtualMachine(
result[0].Members["Name"].Value.ToString(),
result[0].Members["OwnerNode"].Value.ToString(),
result[0].Members["State"].Value.ToString()
);
}
}
public class ClusteredVirtualMachine
{
public string Name { get; }
public string OwnerNode { get; }
public State State { get; }
public ClusteredVirtualMachine(string name, string ownerNode, string state)
{
Name = name;
OwnerNode = ownerNode;
switch (state)
{
case "Offline": State = State.Offline; break;
case "Online": State = State.Online; break;
}
}
}
public enum State
{
Online,
Offline
}