Deployment–Installing VMM clusters with PDT

This is the second of three posts that will explain how PDT can be configured to deploy a highly available configuration.  The first post covered SQL clusters, this post will cover Virtual Machine Manager (VMM) clusters, and the third post will cover scale out roles.

High availability was one of the most requested features for VMM, and was added in System Center 2012.  As with SQL, the mechanism for high availability is Windows clustering.  However, unlike SQL, we don't have to deal with the issue of shared storage.  Instead, we have to handle the Active Directory container that stores the distributed keys used by VMM.  As with SQL clusters and shared storage, PDT does not create or manage that Active Directory container for you - you just need to provide PDT with the path to the container.  Before running PDT with this information, you need to create the container in Active Directory, and make sure the VMM service account has appropriate permissions.  How to do this is referenced in the VMM documentation here.

Again, as with SQL, the Windows cluster itself needs to be created prior to running PDT.  Once these steps are done, the additional information required in Variable.xml for the SQL cluster is shown here:

<Components>
<Component Name="System Center 2012 SP1 Virtual Machine Manager">
<Variable Name="SystemCenter2012SP1VirtualMachineManagerServiceAccount" Value="CONTOSOvmm" />
<Variable Name="SystemCenter2012SP1VirtualMachineManagerServiceAccountPassword" Value="password" />
<Variable Name="SystemCenter2012SP1VirtualMachineManagerVmmServerName" Value="VMM2.contoso.com" />
<Variable Name="SystemCenter2012SP1VirtualMachineManagerTopContainerName" Value="CN=VMMDKM,DC=contoso,DC=com" />
<Variable Name="SystemCenter2012SP1VirtualMachineManagerVMMStaticIPAddress" Value="192.168.1.230"/>
</Component>
< /Components>
< Roles>
<Role Name="System Center 2012 SP1 Virtual Machine Manager Database Server" Server="VMMDB.contoso.com" Instance="VMMDB" SQLCluster="True"></Role>
<Role Name="System Center 2012 SP1 Virtual Machine Manager Cluster Active Management Server" Server="CLVMM2A.contoso.com" />
<Role Name="System Center 2012 SP1 Virtual Machine Manager Cluster Passive Management Server" Server="CLVMM2B.contoso.com" />
</Roles>

Since it doesn’t really make sense to install a VMM cluster without it’s database being clustered, I have included the SQLCluster=”True” entry for the VMM database – you would need to add the appropriate section in the <SQL> section as described in the previous post.

So, let’s look at the additional information provided here over an standalone VMM installation:

  • In the <Components> section, there is a variable VmmServerName – this is the name of the cluster resource group created for the clustered VMM server by the VMM installation – this server should not already exist in the environment.
  • In the <Components> section, there is a variable TopContainerName – this is the container created in Active Directory, with appropriate permissions for the VMM service account.
  • In <Roles>, instead of a single VMM server you now have a Cluster Active Management Server and Cluster Passive Management Server – these are the nodes of the cluster.

The last additional piece of information takes a little more explaining – in <Components> there is a variable VMMStaticIpAddress.  If the nodes of the VMM cluster have static IP addresses, you need this variable – it is the IP address that will be assigned to the VMM cluster resource group.  If, however, the nodes of the VMM cluster have DHCP assigned IP addresses, you must not have this variable, since VMM will require the cluster resource group to get a DHCP address at installation time.

That’s it – now we have clustered SQL and clustered VMM.  Next up, scale out roles for other System Center components.