Inside SQL Server Cluster Setup and Troubleshooting Techniques – Part I

This information about the disks is retrieved from the following location in the registry:

HKEY_LOCAL_MACHINECLUSTERResources{GUID of the Resource}.

A function will be executed from the SQL Setup to find all the resources for which the Resource Type is “Physical Disk”.  The name of the Disk is indicated by a registry entry called “Name=disk_name”. In Figure 1.3 you can see SQL Server Setup wizard has found two disks available in the cluster. The below figure shows the registry entries created for a Physical Disk Resource:

FIGURE 1.4 Cluster Disks stored in Registry.

The GUIDs shown above are retrieved programmatically by the SQL Server Setup Wizard. Setup will filter all the resources for type=Physical Disk. This list will be presented to the SQL Server Setup screen to select a disk for the SQL Database. Please note only the Disks that are online will be displayed in the SQL Server Setup wizard. For example, if there are 3 disks in the cluster and 1 is offline for some reason. The Setup Wizard will only show two disks. Thus you should always check the cluster for disks on which you are going to install the SQL Databases.

If you ever encounter any problem or SQL Server Setup doesn’t show the disks correctly try to check the above registry entry for disks or open the Cluster Administrator. Please note, creating disk resources manually in the above registry location will not help. Because when the IsAlive interval for Physical Disk expires, a query will be executed to check the status of the disk. IsAlive checks to see if the disk is operating normally. If not, IsAlive will take the disk offline or the disk will be considered to have failed. The PersistentState value indicates the disks status (1=online and 0=offline) as shown in Figure 1.4.

After you have selected the Cluster Disk for SQL Databases, the Setup asks you to enter the Virtual Server IP Information as shown in below Figure 1.5:

FIGURE 1.5: SQL Virtual Server IP Information

The information entered here will be recorded later in the registry and using this information the SQL Virtual Server will be assigned an IP Address for clients to access the SQL instance over the network. You notice one thing here; the SQL Setup also gets a list of interfaces available in the cluster. The SQL Server Setup can also get a list of interfaces from the Network Connections folder in the system but it doesn’t. Instead it queries cluster database or registry to get this information. The registry entry for Network Interfaces is located at the following location:

HKLMClusterNetworks

FIGURE 1.6: Cluster Network Interfaces list

After you select the Cluster Disk for SQL Databases, you will be presented with the list of nodes available in the cluster. SQL Server Cluster Setup allows you to configure the nodes to be cluster-aware for SQL Virtual Server Instance you create. The Setup doesn’t have this information. It always queries the cluster configuration database at the following registry location to find the available nodes in the cluster:

HKEY_LOCAL_MACHINECLUSTERNodes

FIGURE 1.7: SQL Server Setup wizard and SQL Nodes.

The Setup executes a query against the above registry key to retrieve a list of nodes in the cluster. The node name is retrieved from the NodeName registry entry as shown in the above figure.

After setup process has collected the above information it starts copying the SQL binary files on C: drive (this path can also be changed) and the SQL database files on the drive you selected during the setup.

Conclusion
In this article we saw the SQL Server Cluster Setup internal process. This article explained the mechanism SQL Cluster Setup DLL (SQLCluster.DLL) uses to find the list of nodes, disks and interfaces in the cluster. In the next article of this series we will see troubleshooting techniques, registry entries and files which are important in the failover process. We will also see how the SQL Cluster Setup process configures a node to be cluster-aware.

]]>

Leave a comment

Your email address will not be published.