...building hybrid clouds that can support any device from anywhere
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="CONTOSO\vmm" /> <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:
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.
I am trying to figure out how to add a Clustered Library server to VMM during deployment. After looking through Workflow.xml it appears this is possible but I am having a little bit of trouble. I have deployed the VMM and SQL clusters before using PDT and have
that part down. But I am having trouble with the library cluster.
I have pre-build the file server cluster which is called lib.company.com in my lab environment. If I look through workflow I see there is a role called:
"System Center 2012 R2 Virtual Machine Manager Cluster Library Server Configuration"
which depends on:
"System Center 2012 R2 Virtual Machine Manager Library Server"
My first thought was that I should put each node in using "System Center 2012 R2 Virtual Machine Manager Library Server" and then specify the cluster using "System Center 2012 R2 Virtual Machine Manager Cluster Library Server Configuration" but I am only able
to specify the library server once otherwise the variable validation fails. I I ended up using the following lines which specifies the file server cluster computer account in each line, this does not work:
Is this the proper way to do this?
D:\ is the cluster disk specified on the file server cluster role
lib.company.com is the file server cluster role which has already been deployed.
I haven't tried it, but theoretically you should just specify the cluster group name as the Library Server and add Existing="True".
So I tried specifying my file server cluster group on both lines and added the Existing="true" on the Library server:
This unfortunately fails during validation of role combinations:
Role: System Center 2012 R2 Virtual Machine Manager Library Server... Failed
Unsupported combination: System Center 2012 R2 Virtual Machine Manager Cluster Library Server Configuration
It looks like a Combination would need to get added under workflow.xml for this to work so I added the following line under: :
Added below line <-->
System Center 2012 R2 Virtual Machine Manager Cluster Library Server Configuration
After adding that the validation would move forward but it will then fail on validating file access against lib.company.com since that is a cluster group that does not yet have any shares and it does its check against \\lib.company.com\c$
Validating file access...
Server: lib.company.com... Failed
Cannot access \\lib.company.com\C$
Server: SQL01.company.com... Passed
Server: SQL02.company.com... Passed
Server: vmm01.company.com... Passed
Server: vmm02.company.com... Passed
Let me know your thoughts. I am going to remove that line I added to workflow.xml as I know I really should be messing with that :-) - Just wanted test it out to see if it would move forward.
Nick - don't specify your cluster nodes anywhere, or the Library Configuration. Configuration is automatic (it's classed as an integration) and will be run from the VMM server itself. Just list the Library Server as Existing="True" - you will need to have
precreated the share with appropriate permissions.
Thanks Rob. I forgot to follow up with you that I got this working. Thank for your help.