1

I have windows cluster (2012 R2) with 2 nodes with role of generic services. In case when I shutdown/reboot live node services on the standby node are starting automatically however it dosn't work if I simulate network adapter failure by disabling the interface. Is it possible to achieve failover in case of network failure? I am not using Windows Hyper-V so Protected network option will not work.

Thanks

2 Answers 2

3

The simplest way for you would be using a PowerShell script that will migrate your roles to a healthy node in case of network failure.

Usually, if a network adapter fails an event is logged into windows server system log. Just create a windows task that will run the PowerShell script and bind it to that specific event. You can recheck the interface status from within the script and decide whether to move roles or not.

0

The answer already given is indeed a method of "manually" moving groups in your cluster.

However to answer the question:

Is it possible to achieve failover in case of network failure?

Yes, that is possible, but let me explain an aspect of Failover Clustering.

Failover Cluster has many "fault detection methods" and one of them is implemented by what is called the IsAlive/LooksAlive method executed by the RHS.exe (Resource Host Subsystem) of cluster.

Basically (unless defaults have been changed) the RHS is calling a "LooksAlive" on every resource every 5 seconds. This is a "small" test to determine that the Resource "looks that it is still alive".

If this "LooksAlive" test is failing: it [RHS] will run a "IsAlive" test on the resource. This would be a more "thorough" test, which ultimately determines if the resource is functioning.

It [the RHS] is also running "IsAlive" every 30 seconds, regardless of the "LooksAlive" is successful or failing.

If an "IsAlive" is failing, then it [cluster] will post an "Event 1069" to the System Event log, indicating that the resource has failed.

After failing Failover Cluster will make a decision what to do with the failed resource. And it will base this on a couple of factors:

  • What is the restart threshold of the resource: it may or may not try to restart the resource to see if it comes online (without failing over)
  • If it has exhausted the restart threshold: it will determine if the resource failure should affect the "group" (by default it does)
  • If indeed the threshold is exhausted, and the resource affects the group, it [cluster] will make a failover decision (group move to another node if available)

I will leave it there, there are many other functional area's we should discuss in order to fully understand the clusters decisions

So, in order to "test" an "automatic failover" we need to understand what this "IsAlive/LooksAlive" test is actually doing.

We need to make sure that we have at least an "IP address" resource in the cluster application group, to ensure that cluster is checking this, to capture the network failure.

If you are running "Generic Services" then your group should look like this:

Application-Group
 - Generic Service
   |- Physical disk (only if your app needs it)
   |- Network Name
      |- IP address

The "IsAlive/LooksAlive" which "picks up" a network failure, is in the "IP address", the definition can be seen here --> this article is written for Windows 2003, but is largely still true in regards its content, and even quoted in an excellent article about Failover Clustering written by a team member of the Failover Cluster team of Microsoft.

From that, we know that the "IsAlive" is implemented the same as "LooksAlive" in regards to an "IP address" resource. It basically checks if the IP address is bound to the appropriate NIC in the TCP/IP-stack of the OS. (which you can see if you run ipconfig)

In order to test such a failover, you have a couple of options:

  • In Failover Cluster Manager, right click on the IP-address resource in your Application Group, and choose "Simulate failure". You may have to do this twice, as the cluster will try to restart the resource before making failover decisions (as explained above).
  • (as you have done) disable the NIC in the OS. Just make sure it is actually the NIC which the IP address (of the "IP-address resource" of the actual group containing your Generic Service) is actually bound to prior to disabling. You can check this by running ipconfig on the command line. (cluster will try to restart, but the restart will fail, as the NIC is disabled)
  • pull the cable of the physical NIC. Just make sure it is actually the NIC which the IP address (of the "IP-address resource" of the actual group containing your Generic Service) is actually bound to prior to pulling the cable. You can check this by running ipconfig on the command line. (cluster will try to restart, but the restart will fail, as the NIC cable is pulled)

When you have a proper Application Group, with proper dependencies, with an IP address, you will be successfully test the failover.

I hope this explains your situation.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .