Azure Availability Set ve Affinity Group

Azure konusunda sıkça aldığım sorulardan biri de Affinity Group ve Availability Set arasında ki farkın ne olduğu ve neden kullanıldıklarıdır. Eğer Azure veri merkezlerini gösteren video ve fotoğraflara baktıysanız yan yana bir sürü konteyner içerisinde fiziksel sunucuların olduğunu göreceksinizdir. Peki, bir VM yarattığımız zaman bu VM nerede yaratılıyor ve en önemlisi bir biriyle ilişkisi olan VM’leri nasıl yerleştirdiğidir.Bu bilgi bizim mantıksal tasarımı yaparken performans ve SLA değerlerini nasıl tutturacağımızı belirler.

İki farklı senaryo karşımıza çıkmaktadır. İlki VM’lerin mümkün olduğunca bir birine yakın veya aynı fiziksel katman üzerinde tutulması; ikincisiyse VM’lerin mümkün olduğu kadar birbirinden farklı fiziksel katmanlarda bulunmasını isteyebiliriz.

Affinity Group

Çok katmanlı bir uygulamamız varsa veri tabanı ve uygulama sunucularının maksimum performans ile çalışabilmeleri için bir birlerine mümkün olduğu kadar yakın çalışmaları gerekmektedir. Bunun için VM’lerin aynı affinity group içerisinde olması aralarında ki mesafeyi kısaltacağı için latency’i düşürmektedir.

Powershell yardımıyla Affinity group oluşturmak için “New-AzureAffinityGroup” kullanılmaktadır.

New-AzureAffinityGroup -Name WebApp -Location "North Europe" -Label "Finans Portali"

Affinity group’u yarattıktan sonra yeni bir VM yaratırken “-AffinityGroup” parametresini kullanarak VM’lerin aynı group içerisinde olmasını sağlayabiliriz.

$vmName = "finansApp"

$vmConfig = New-AzureVMConfig -Name $vmName -InstanceSize “small” –ImageName “Windows Server 2012 R2 Datacenter” -AffinityGroup “WebApp”

$vmConfig | Add-AzureProvisioningConfig -Windows -AdminUsername “emre” -Password “pass”

New-AzureVM -ServiceName $serviceName -Location “North Europe”  -VMs $vmConfigs

Alternatif olarak mevcut bir VM’i Affinity Group içerisine almak isteyebiliriz. Bunun içinde “Set-AzureAffinityGroup” komutunu kullanabiliriz.

Get-AzureVM -Name $vmName | Set-AzureAffinityGroup -Name "finansApp" |Update-AzureVM

Availability Set

Bazı uygulamalarımızda servislerimizi birden fazla VM üzerine kurup hem yük dağıtımında bulunur hem de iş sürekliğini yükseltmek isteriz, bunun en iyi örneği bir web uygulamasının front-end sunucularıdır. Bu sunucular yükü alıp arka tarafta ki DB veya uygulama sunucusuna aktarırlar ve en yüksek availability’i oluşturabilmek için birden fazla front-end sunucusu kurarak yükü dağıtmak isteyebiliriz. Peki, bu sunucuların hepsi aynı fiziksel sunucu üzerinde olursa ve bir güncelleme veya kesinti durumunda tüm servisimiz kesintiye uğrayabilir.

Azure bunun önüne geçebilmek için ve istediğimiz SLA seviyesini tutturabilmemiz için availability set ismini verdiği bir özellik sunmaktadır. Aynı availability set içerisinde ki VM’ler farklı fiziksel alanlarda tutularak donanım, güncelleme ve network sıkıntılarından minimum seviyede etkilenmesini sağlar.

Availability set’ler ilk VM yaratılırken onunla beraber yaratılmaktadır, bunun için New-AzureVMConfig içerisinde “-AvailabilitySetName” parametresini kullanmamız yeterlidir. Daha önce ki örneğimizin aynısını availability set ile tekrar çalıştıralım.

$vmName = "finansApp"
$vmConfig = New-AzureVMConfig -Name $vmName -InstanceSize “small” –ImageName “Windows Server 2012 R2 Datacenter” –AvailabilitySetName “WebApp”
$vmConfig | Add-AzureProvisioningConfig -Windows -AdminUsername “emre” -Password “pass”
New-AzureVM -ServiceName $serviceName -Location “North Europe” -VMs $vmConfigs

Mevcut bir VM’in availability set’ini değiştirmek içinse aşağıda ki komutu kullanabiliriz.

Get-AzureVM -Name $vmName | Set-AzureAvailabilitySet -AvailabilitySetName "WebApp" |Update-AzureVM

Uyarı: VM’lerin Affinity Group ve Availability Set’lerini değiştirirken Azure farklı bir lokasyona kaydırmak zorunda kalırsa VM’ler yeniden başlayabilir.

Bu blog yazısı Emre Bozlak tarafından paylaşılmıştır. Referans vererek istediğiniz gibi kullanabilirsiniz. Eğer bir sorunuz olursa eposta veya sosyal medya hesaplarım üzerinden bana ulaşabilirsiniz. Yazılarımı Twitter'dan @emrebozlak veya RSS üzerinden takip edebilirsiniz.

Leave a comment