Bu yazıda sizlere Windows Server 2012 işletim sistemi ile hayatımıza giren Hyper-V özelliklerden Live Migration Beetween Cluster özelliğini inceleyeceğiz.
Beetween Cluster nedir ne işe yarar?
Aynı networkte bulunan farklı Hyper-V Failover Cluster yapıları içindeki sanal makineleri canli olarak Cluster’lar arası taşıma işlemine denir. Windows Server 2008 R2 işletim sistemi ile sanal makineleri Live Storage Migration özelliği ile farklı bir Hyper-V sunucusu üzerine taşıyabiliyorduk. Windows Server 2012 ile artık Live Migration Beetween Cluster sayesinde farklı cluster yapıları içerisindeki sanal makineleri farklı Hyper-V sunucuları üzerine taşıyabilmemiz mümkündür. Live Migration Beetween
Cluster her ne kadar live olarak taşınıyor olsa da birkaç (3-5) ping kaybı hissedilmektedir. Ancak sanal makineyi kapatmamıza gerek yoktur. Live Migration Beetween Cluster özelliğini şu an için PowerShell üzerinden yapılabilmektedir.
Live Migration Beetween Cluster teknik olarak aşağıdaki aksiyonlar ile işlemini tamamlamaktadır.
- Sanal makine kaynak Cluster üzerinden Remove edilir.
- Live Migration ile sanal makine hedef Cluster üzerine Move edilir.
- Sanal makine hedef Cluster üzerine Join edilir.
Bu yeni özellik yöneticilerin yüksek kullanılabilirlik, yeni donanım gereksinimlerine yanıt vermek ve donanım yeteneklerini daha iyi kullanabilmeyi sağlamaktadır.
Aşağıdaki yapı da Live Migration Beetween Cluster konusu incelenmiştir.
Resim-1
Şimdi kısaca yapıyı inceleyelim.
FOCluster adında NODE-1 ve NODE-2 Hyper-V sunucularından oluşan Cluster yapısı bulunmaktadır.
Resim-2
Cluster adında HYPERV-1 ve HYPERV-2 sunucularından oluşan Cluster yapısı bulunmaktadır.
Resim-3
Hyper-V Manager konsolu üzerinde Hyper-V sunucularımız görülmektedir. Test ortamı için hazırlamış olduğum SVR01 sanal makinesi FOCluster-NODE-1 üzerinde çalışmaktadır.
Resim-4
Failover Cluster Manager konsolunu açarak sanal makinemizin FOCluster NODE-1 üzerinde çalıştığını tekrar kontrol ediyoruz.
Resim-5
Live Migration Beetween Cluster için kullanacağımız Script aşağıdaki gibidir.
<pre class=”lang:ps decode:true”>
function Move-AnotherClusterVM {
param(
[string]$DestinationCluster,
# Get Host and Cluster Information
[array]$VMArray
)
$Hostname = (Get-VMHost).Name
$SourceCluster = (Get-Cluster $Hostname).Name
# Create VM Array
# Get All Virtual Machines
$AllVMs = Get-VM
foreach ($VM in $AllVMs)
{
# Get VM and Cluster Information
$VMName = $VM.Name
$HyperVHost = $VM.ComputerName
$VMState = $VM.State
$ClusterGroup = Get-ClusterGroup | where Name -like "*$VMName*"
if ($VMArray.Contains($VMName) -eq $True)
{
# Remove from Cluster Resources
if ($ClusterGroup)
{
Get-ClusterGroup $ClusterGroup.Name -Cluster $SourceCluster | Remove-ClusterGroup -RemoveResources -Force
}
Write-Host " "
Write-Host Working on $VMName ..
# Get Volume and Memory Information
$Volume = ((Get-ClusterSharedVolume -Cluster $DestinationCluster | Select -ExpandProperty SharedVolumeInfo | Select @{label="Name";expression={(($_.FriendlyVolumeName).Split("\"))[-1]}},@{label=”FreeSpace”;expression={($_ | Select -Expand Partition).FreeSpace}} | Sort FreeSpace -Descending)[0]).Name
$DestinationNode = ((Get-Cluster $DestinationCluster | Get-ClusterNode | Select Name,@{label="FreeMemory";expression={([math]::round(((Get-WmiObject -ComputerName $_.Name -Class Win32_OperatingSystem).FreePhysicalMemory / 1KB), 0))}} | Sort FreeMemory -Descending)[0]).Name
# Move Virtual Machine
Move-VM $VMName -ComputerName $HyperVHost -DestinationHost $DestinationNode -IncludeStorage -DestinationStoragePath C:\ClusterStorage\$Volume\$VMName
# Add to Destination Cluster Resources
Add-VMToCluster $VMName -Cluster $DestinationCluster
Write-Host Done.
}
else
{
Write-Host " "
Write-Host Skipping $VMName ..
}
}
}</pre>
Script’i biraz daha kolaylaştırarak Move-AnotherClusterVM adında bir fonksiyon haline getirilmiştir. –DestinationCluster ile hedef Cluster –VMArray ile taşıyacağımız sanal makine adını yazıyoruz.
Komut setini çalıştırdıktan sonra Moving Virtual Machine and Storage işlemi başlıyor.
Resim-6
İşlem sırasına göre ilk olarak Failover Cluster Manager üzerinden SVR01 sanal makinesini remove ediyor.
Resim-7
Sanal makine Cluster üzerinden Remove edildikten sonra Hyper-V Manager konsolundan kontrollerimizi yapabiliriz. Status kısmında Moving Virtual Machine and Storage (9%) olarak taşımaya devam etmektedir
Resim-8
Taşıma işlemini Hyper-V Manager konsolunda ve PowerShell üzerinde aynı şekilde görebilirsiniz.
Resim-9
PowerShell konsolunda taşıma işlemini takip ederseniz sanal makinenin hedef Cluster üzerine eklenmesini de görebilirsiniz.
Resim-10
Live Migration Beetween Cluster işlemi tamamlandıktan sonra sonuç çıktısını aşağıda görebilirsiniz.SVR01 artık HYPERV-2 sunucusu üzerinde çalışmaktadır.
Resim-11
Daha önce NODE-1 üzerinde çalışan SVR01 artık HYPERV-2 üzerinden çalışmaktadır.
Resim-12
Daha önce FOCluster yapısı üzerinde olan SVR01 şimdi Cluster üzerinde çalışmaktadır.
Resim-13
Bu yazıda Hyper-V Live Migration Beetween Cluster konusunu incelemiş olduk.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar