New and Improved
I’ve been using Windows Server 2012 for a while now, not just because it’s the newest and shiniest Microsoft operating system, but also because some of its new features are useful to me as both an architect and implementer of SQL Server platforms.
The most significant of these are in the failover clustering feature where some of SQL Server 2012’s requirements for Availability Groups can now be done in the GUI rather than the deprecated cluster.exe command line. For example, modifying quorum voting, dynamic quorum models, and handling asymmetric storage.
Previously, I’d implemented clustered instances of SQL Server 2012 on Windows Server 2012 without any problems using the native RTM releases of both, in a production and development environments and all went well. However, this week I began a new clustered platform installation and came across some real-world issues that I hadn’t seen before and thought I’d share.
Installing the .net framework 3.5
SQL Server 2012 requires that the .net framework 3.5 is installed prior to installation, however in Windows Server 2012 the install files for it are not shipped as part of the operating system. Instead when you go to add the Windows feature, it will ask for the path to the source files on the Windows installation DVD to perform what it calls a side-by-side installation. Sometimes, through luck, you’ll put the exact path details in correctly first time and it’ll work; the rest of the time you’ll find what is reported to be a bug where it’ll never accept anything you enter.
To get around this, you can use one line of PowerShell instead:
Install-WindowsFeature NET-Framework-Core –Source X:\Sources\sxs
.net framework hotfix KB2750149
This hotfix is one of many that get installed automatically through the Windows Update service, however it has a side effect of breaking the Windows Failover Cluster manager, specifically when you click on the Roles branch (used to be known as Services). You’ll receive a big error message screen starting with the text:
“A weak event was created and it lives on the wrong object, there is a very high chance this will fail, please review and make changes on your code to prevent this issue”.
This is a known issue that Microsoft has acknowledged and is investigating. In the meantime, the only workaround is to un-installed the hotfix KB2750149.
DNS Registration Failure
Another random error that I received was the DNS record for the cluster failing to get registered correctly during the creation of the cluster. Windows Server 2012’s management tools now integrate with the other nodes in a cluster a lot more closely than they used to so even trying to make disk storage changes caused random server connection errors. The main error I got when trying to bring the cluster itself online was the following:
Cluster network name resource ‘Cluster Name’ failed registration of one or more associated DNS name(s) for the following reason: The handle is invalid.
I’m still not sure of the cause, apparently it could have been related to Active Directory permissions, but the solution that worked for me was to Repair the cluster’s virtual network name with the following two steps:
Firstly, taking the virtual network name offline.
Secondly, repairing the virtual network name.
Finally, bring the virtual network name back online.
I’ve no idea if this will fix similar issues you may get, but knowing the option to repair the cluster’s DNS record is useful to know.
Summary – A Powerful Combination of Platforms
Implementing a clustered instance of SQL Server 2012 on Windows Server 2012 is still a very capable and impressive combination, and something I’d still recommend be the default option these days.
This blog post covers what’s true about all failover cluster installations and that’s that they touch every part of the server’s infrastructure: storage, networking, operating system, active directory, as well as SQL Server. Consequently, minor tweaks to any of these areas can leave the SQL Server professional with a new area of the infrastructure to master.