Hyper-V in Windows Server 2012 (and in the free Microsoft Hyper-V Server include an easy start to a good disaster recovery solution: Hyper-V Replica. With Hyper-V Replica you can easily create and maintain an off-line copy – a replica – of a virtual machine on a separate virtualization host. This means, for example, that if your main location or host for an important virtual machine goes down becomes unavailable, you can easily fail-over to the replica. The copy will start up and be available in short-order.
“That sounds really great, Kevin! But what does it cost to set this up?”
“How do I set it up?”
I’m glad you asked. There are really two simple requirements to make it happen:
- You need to be running Windows Server 2012 with the Hyper-V Role installed (or Microsoft Hyper-V Server 2012) on both the source and destination virtualization hosts, and
- You need network connectivity between them. (and don’t forget the firewall)
Here are my 6 steps to working with Hyper-V Replica:
1. Configuring the Hosts to Allow Replication
In Hyper-V Manager, right-click on, or select the host, and choose Hyper-V Settings…
On the left, select Replication Configuration, and then enable and configure your replication options.
2. Setting up a Replica
To configure the replica using Hyper-V Manager, right click on the VM you want to replicate and choose Enable Replication…
On the Before You Begin page, click Next
On the Specify Replica Server page, Enter the name of the server that is to be the replication host.
The Specify Connection Parameters page is, um, where you specify your connection parameters.
Choose the hard disks you want to replicate on the Choose Replication VHDs page.
On the Configure Recovery History page, choose whether you want to keep just the most recent recovery point, or perhaps maintain a number of points in the past that you could recover to. You also have the option to occasionally perform a VSS copy.
On the Choose Initial Replication Method page, notice that you have options on how you want that big initial replication to take place. Maybe you don’t want to use the network for that initial large transfer, but instead would prefer to use UPS or FedEx.
Then click Finish on the summary page, and you’re all set.
If all was configured properly, you’ll see a new VM appear on the replication host that will be turned off.
3. Verifying the Replica’s Status
You can easily verify the status of your replica by selecting either your original VM or your replica VM in Hyper-V Manager, right-click the VM, click Replication, and then View Replication Health.
4. Testing the Replica
You can test your replicated machine by right-clicking on the replica VM and under Replication select Test Failover…
Pick the point in time that you want to test, and click Test Failover.
This will create a linked copy VM with the text “ – Test” appended to the name. Simply start up that VM (go ahead. It isn’t connected to the network, so it won’t interfere with anything) and verify that it is a useable machine.
5. Disaster Strikes! Time to Fail Over
The unthinkable has happened. Time to act. Your original and important production VM is no longer available.
On the replica VM, right click. Under Replication, select Failover.
Select the recovery point, and click Fail Over.
And your replica will start up configured, networked, and ready to take on Dr. Proton.
6. Removing the Replica
Easy. On both the source and replica VMs, right click. Under Replication, select Remove Replication.
Now you can safely delete your replica from the replication host.
Simple, yes? Do you have any questions?
“Can I have the failover happen automatically?”
Not natively. In its most simple form, Hyper-V Replica is a manual failover. However, because you can use PowerShell to drive this entire process, there’s no reason why you (or some third party) couldn’t develop a solution that monitors the state of the source VM and launches a script (or some automation in System Center 2012 Orchestrator) to launch the failover.
“But do I need to have Active Directory? Or do both of my virtualization hosts need to be in the same domain?”
Actually, no. You have the option of using certificate authentication to make the trusted configuration. (CLICK HERE for details on how to use certificates for Hyper-V Replica.)
“Do my virtual machines need to be running particular operating systems for this to work?”
Nope. There is nothing required of the guest operating system. You could be running the original Duke Nukum on DOS 6.22 in your VM, and this will still work.
Currently the answer to that is no. But I’ve heard this question enough times, and really it does make sense.. so I have to imagine (and that’s all I personally have to go on) that Microsoft is considering doing that. Consider the ramifications, though… setting up a replica means configuring something beyond just standing up a virtual machine in Hyper-V.. so the process has to have the ability to manipulate the hypervisor. I could see it happening sometime, but I don’t know when.
“Can I replicate machines that are in clusters? And can I replicate into or out of another cluster?”
Yes and yes. You will think of the cluster as and treat it as a single machine. And to do that there is a special role that you need to add to the cluster called the Hyper-V Replica Broker. This defines a new named entity that becomes either the source or the destination for replicas coming into or out of a cluster. For more details on this, check out this Wiki article.
“What about PowerShell? Can I use PowerShell to set up a replica? Can I use it to do the failover or even get status on current replicas?”
Yes, yes, and yes.
For example, to configure the replica destination host, you could use these commands to configure the firewall to allow inbound replication on the destination, and set a server up as a new replication host (each numbered line is a separate complete PowerShell command or script line):
- Enable-Netfirewallrule -displayname “Hyper-V Replica HTTP Listener (TCP-In)”
- Import-Module Hyper-V
- $RecoveryPort = 8080
- $ReplicaStorageLocation = “D:\Example”
- Set-VMReplicationServer -ReplicationEnabled $true -AllowedAuthenticationType Kerberos -IntegratedAuthenticationPort $RecoveryPort -DefaultStorageLocation $ReplicaStorageLocation -ReplicationAllowedFromAnyServer $true
And then to create a replication (each numbered line is a separate complete PowerShell command or script line):
- Import-Module Hyper-V
- $ReplicaServer = “Recovery1.contoso.com”
- $RecoveryPort = 8080
- $PrimaryVM1 = “CRMVM”
- $PrimaryServer = “Primary1.contoso.com”
- Enable-VMReplication -VMName $PrimaryVM1 -ReplicaServerName $ReplicaServer -ReplicaServerPort $RecoveryPort -AuthenticationType Kerberos -CompressionEnabled $true -RecoveryHistory 0
- Start-VMInitialReplication –VMName $PrimaryVM1
For the full story, here is the Microsoft online documentation of Hyper-V Replica: Hyper-V Replica Overview – http://technet.microsoft.com/en-us/library/jj134172.aspx
(NOTE: as of today, the online documents are still based on the RC code. I’m sure it will be updated soon to work with RTM.)
And to give Windows Server 2012 a try,
- CLICK HERE for the evaluation,
- CLICK HERE for the Hyper-V Server 2012 download, or
- CLICK HERE to learn more at the Microsoft Virtual Academy.
So what do you think? Good stuff? Let’s discuss in the comments.