In one of my earlier articles I explained how to build a Hyper V two node fail-over cluster. One of the things that I had in the back of my mind while building this was the idea to use this cluster to implement exchange 2007 for my test lab. Of course there's more to it than simply implementing Exchange 2007 and migrating from Exchange 2003 to the new server. We'll go into detail on the design of the Exchange 2007 setup on two physical machines, with even the Hub and Client roles running Highly Available, which is not something usually done.
This article assumes basic knowledge about clustering on Windows 2008, Exchange server 2007 roles and Hyper-V.
Why do we do this?
As you may know exchange 2007 has its own cluster implementations (CCR or SSC), and since I have two nodes available I can simply implement exchange 2007 with two nodes without using Hyper-V at all. So why go through the hassle of using Hyper-V? (besides that it's cool to do of course ;-). My reasoning was that I wanted the complete system Highly Available, but at a lower cost. As you may have read in the introduction part of my website, I'm always on the lookout for the most cost-efficient way to run systems.
It's a great challenge to figure out how to implement enterprise type solutions at a tight budget. Of course I get to work with Enterprise solutions at work all day long, but rebuilding it in my lab at a similar functional level (although maybe not getting a similar performance ;-) gives me the opportunity to tinker with systems that typically are built not to tinker with, if you get my drift…. But I digress…
Since a full implementation of exchange 2007 requires you to install a mailbox role as well as a client and hub role on separate servers, I was challenged to get it all up highly available, but preferably on as little hardware as possible. So let's just simply run two cluster implementations on the same hardware!
Exchange will run in its own cluster on two nodes, as will Hyper-V. We will need to install the mailbox server on the hardware cluster and the client server on the hyper-V cluster. The end result should be two servers forming cluster nodes running exchange as well as hyper V clustered. The situation looks something like this.
Keep in mind that in reality we have an iSCSI SAN in use to provide the storage for all these machines, which is not shown in the diagrams.
For experimental purposes we can actually take this design one step further, at the expense of performance:
Let's build the Exchange Mailbox-role servers on Hyper-V virtual machines, and then cluster those (the Exchange way), giving us the below.
This may become a little bit confusing: note that the Mailbox servers are not clustered at Hyper-V level, even though these are virtual machines. They are clustered at Exchange mailbox level. Hence, if we take a look at the Failover Cluster Manager we see two clusters: one for Hyper-V and one we have created for Exchange on the virtual machines…
The Exchange mailbox cluster, created from two virtual machines as nodes.
Let's focus for a moment on the Hyper-V cluster that is running the virtual machine hosting the Exchange client and hub roles.
A Hyper-V Highly available virtual machine running the Exchange client and hub role.
Notice that only the hub-client virtual machine is clustered.
Now we check the Hyper-V Manager, I've opened two windows, so that we can see both virtual mailbox VM's running on the separate physical machines named Node1 and Node2 :
The virtual machines running the mailbox server cluster nodes.
We also see the Exchange-hub-client running on node1 (the physical server) in Hyper-V, but of course VM1 and VM2 (the two mailbox nodes) are not clustered at Hyper-V level. To prove that here's the overview of the clustered machines, here you can see we only have VM3 and VM4 clustered on Hyper-V, not VM1 and VM2.
And VM4 are the only Hyper-V clustered VM's besides our Exchange hub-client server.
Once we logon with remote desktop to our client server, we can see that our client role is working fine:
As well as our Hub transport role, both roles hosted on the same Hyper-V clustered VM.
And the Mailbox role is doing well on its own Exchange clustered role:
There you have it. Exchange 2007 implemented with all roles Highly Available, on only two physical servers. Provided you have enough memory, CPU capacity and a decent SAN this might run pretty well for a smaller organization. My goal however was to get this running in my lab for testing purposes, and that goal was achieved. During the installation I did not encounter any major issues, as clustering has become childplay in Windows Server 2008.
Can't wait for Windows 2008 R2 (RTM) so that Hyper-V live migration becomes available…