AZURE SANAL MAKİNELERİNİN 7 DERİN NOKTASI – Part 1

Tanıtım (Introduction)

Azure Sanal Makineleri Azure’un laaS (Infrastructure as a Service) kapasitelerinin merkez özelliklerinden biridir. Azure Sanal Makineleri, bir Microsoft Azure datacenter içerisindeki Windows Server veya Linux Sanal Makineleri’nin açılımını destekler. Sanal Makineleri’nin yapılandırılmasındaki toplam kontrol sizdedir. Tüm sunuculardaki yazılım yüklemesinden, yapılandırılmadan, bakımdan ve işletim sistemi yamalarından sorumlu olan sizsinizdir. Tüm kaynaklar Microsoft veri merkezleri içinde çalışır, onlara tek bağlantı da şüphesiz ki ağ olacaktır. Bunu şöyle düşünün, şirketinizden başka bir lokasyonda veya bölgede bir veri merkezine sahipsiniz. Tüm workloadları orada yaratıyorsunuz ve onlara uzaktan ulaşabiliyorsunuz.

Tek farkı ise şu:

  • Veri merkezi Microsoft’a ait oluyor.
  • Bütün altında yatan yönetim, güncellemeler, bakımlar Microsoft’un sorumluluğu oluyor.( Donanım,Ağ,Soğutma,Güç…)
  • Fiziksel güvenlik Microsoft’un sorumluluğunun altında oluyor.

Sonuç ise, Microsoft sizlere bir özellik sunuyor. ( Bir servis ) Bu sizi sanal makine yaratma ve onları özgürce kullanma konusunda yetkinleştiriyor, tıpkı sizinmiş gibi ve zaten sizin. Azure Sanal Makineleri özelliği hakkında tanıtıma devam etmeyi çok isterdim, çünkü bu harika ve oldukça enteresan. Size Bulut Platformları (laaS) hakkında ” Ne ve Neden ” konusunu tartışmak ve yeni konsepte karşı ilerlemenin makul olup olmadığını konuşmak üzere detaylı bir yazı yazıyor olacağım.

Sizde Azure Datacenter içerisinde gezinmek istiyorsanız, neredeyse kusursuz olan bu işleyişini merak ediyorsanız bu link tam da size göre ; https://www.microsoft.com/en-us/server-cloud/ms.datacenter.tour/datacenter/

Dünya üzerinde bir çok bölgede Azure Datacenter’lar bulunmaktadır. Bulunduğunuz ülkeye hangi Azure Datacenter yakın olduğunuz anlamak çok da zor değil. Azure Speed Test adlı sayfa sizlere hangi Datacenter içerisine ne kadar gecikme(latency) ile gideceğinizin sonuçlarını belirtiyor. Bu link speed test konusunda sizlere yardımcı olacaktır. Dilerseniz Datacenter bulunduğu lokasyonları da bu adresten görebilirsiniz.

Bileşenler (Components)

Bileşenleri hesaplamak Azure Sanal Makineleri’nin kalbidir. Sanal makine kaynaklarında hesaplamak demek, CPU, RAM ve İşletim Sistemi (OS) anlamına gelir. Azure içerisinde bir sanal makine yarattığınızda, önce Sanal Makine yapılandırmasını seçersiniz. Donanım ve Yazılım ( Örnek olarak, ben 4 GB Ram ve 2 CPU ile çalışan Windows Server 2012 R2 Datacenter Sanal Makinesini kullanmak istiyorum.) Buna bakıldığında, bir depolama yapılandırılmasından bahsetmiyorum.( İşletim Sistemi (OS) disk boyutu, sayısı ya da veri disklerinin büyüklüğü ) Azure size özgürce donanım yapılandırılmasını seçme olasılığını vermez. Bu konu hakkında yanlış değinmeden şunu düzeltelim. Aslında, Azure önceden tanımlanmış şablonların arasından seçimisizlere sunar. Bu şablonlar Sanal Makine serileri ve boyutları içerisine sınıflandırılmıştır. Sanal Makine büyüklüklerinin listesinin tamamı burada bulunabilir ve Microsoft tarafından değişim ihtimali olabilir diye düzenli olarak güncellenmektedir.

Azure’daki Sanal Makineler şöyle sınıflandırılabilir.

TIER

Tier sanal makinelerin tip kategorizasyonudur. Azure’da iki adet Tier tipi bulunmaktadır. Basic Tier ve Standart Tier. Basic Tier sanal makineleri genellikle test etmek için kullanılır ya da daha önemsiz sanal makinelerdir. Basic Tier sanal makineleri daha çok ürün test süreçleri için kullanılır. Basic ve Standart arasında farklı olduğu kısımlar ise aşağıdaki gibidir.

  • Basic Tier sanal makineleri Azure yük dengeleme kapasitelerini desteklemez.( Azure yük dengeleme özelliği kullanan iki basit sanal makine arasında yük dengeleme trafiği yapamazsınız.)
  • Basic Tier Sanal Makineleri ile Azure içerisindeki tüm donanım serileri verilmemiştir, ileri donanım yapılandırılmaları ( Daha fazla CPU, RAM, Disk, Performans) sadece Standart Tier sanal makineleri ile sağlanabilir.
  • Basic Tier sanal makineler veri disklerinin her birine 300 IOPS(Input/output operations per second) düşerken, Standart Tier disklerinin başına 500 veya daha azı kadar IOPS düşüyor. (Storage Account bölümünde detaylar anlatılacaktır.)
  • Basic Tier sanal makineleri Standart Tier seviyesine göre %27 daha ucuzudur. Aslında bunun altında yatan bir çok sebep bulunmakta bunların başında, CPU ve Load-Balance özelliği gelmektedir. Bu fiyat ortalama Standart Tier seviyesinde sanal makineye göre %27 olarak gözlenmektedir.
  • Basic Tier sanal makinesi için örnek verelim. Azure üzerinde hizmet verecek bir Domain Controller sanal makinesine ihtiyacınız var. Basic Tier ile ufak bir boyutta sanal makine oluşturarak hizmet verebiliriz. Domain Controller sunucuları ile yük dengeleme(Load Balance) veya otomatik ölçeklendirme(Auto – Scale) kullanamazsınız çünkü, Domain Controller yapısından dolayı (SYSVOL, NETLOGON vb saklanır) ve DC’nin nispeten hafif iş yükü ve veri disk için çok fazla IOPS gerektirmez.

SERIES ( SERILER )

Seriler sınıflandırılırken temel amaç müşteriye hızlıca yardım etmek, onlarca sanal makinelerin arasından türünü hızlıca bulmak ve seçmektir. Araba satıcılarının sağladığı sınıflandırılıma örnek verebiliriz. Mercedes Sınıf A,B,C,E ve S ya da BMW Serileri 1,3,5 ve 7

Günümüze kadar, 6 adet Azure Sanal Makine serisi süregelmiştir:A-Serisi,D-Serisi,DS-serisi, G-Serisi ve N-Serisi

  • A-Serisi : A serisi basic ve standart sanal makineleri sınıflarını sunar. Workloadlarınızın çoğunluğu için planlanmıştır. Sadece A serisi Basic Tier kategorizasyonu sağlar.
  • D-Serisi : D serisi geliştirilmiş sanal makinelerin altında yatan donanımı sunar.Sanal makineler daha iyi fiziksel sunucuların üstünde daha hızlı işlemciler, daha hızlı disk önbelleği ve daha fazla depo desteği sağlar. D Serisi Sanal Makinelerin Boyutları bu adresten kontrol edebilirsiniz. https://azure.microsoft.com/tr-tr/blog/new-d-series-virtual-machine-sizes/
  • DS-Serisi : DS serisi Azure Premium Depo ile çalışan tek Azure Sanal Makine serisidir.(Storage konusu tartışılacaktır.)Bu başlıca yüksek performansa ve düşük gecikme süresine ihtiyaç duyan workloadlar için sağlanmıştır.
  • Dv2-Serisi : Dv2 Serisi sanal makineler D serisi sanal makine örneklerinden ortalama %35 daha hızlı ve daha güçlü CPU’lara ve D serisi ile aynı memory ve aynı disk yapılandırmalarına sahiptir.
    Kurumsal düzeyde birçok uygulama için güçlü bir alt yapı sunmaktadır.
  • G-Serisi : Bu en son duyurulan Azure Sanal Makine serisidir. Güçlü sanal makine donanım yapılandırılması sağlar. ( Yüksek Özellikler ) Altında yatan donanım daha iyi CPU ve RAM markaları kullanır. Bu başlıca devasa workloadlar için sağlanmıştır. ( Ram’i yüzlerce gb olarak sağlayabilenler ) G serisi Sanal Makinelerin Boyutlarını bu adresten kontrol edebilirsiniz https://azure.microsoft.com/tr-tr/blog/largest-vm-in-the-cloud/
  • N-Serisi : Son serisi olan bu sanal makineler GPU destekli altyapı sağlamaktadır. Azure üzerinde kurumsal müşterilerin iş akışlarında sanallaştırılmış grafik uygulamaları için NVIDIA GRID 2.0 teknolojisi NVIDIA Tesla K80 GPU hızlandırıcı erişimi sağlamaktadır.

SIZES ( BOYUTLAR )

Sanal makinelerin büyüklüğü demek onun donanım yapılandırılmasına işaret eder. Azure’da, donanım yapılandırılması 4 element ile anılır.

  • CPU: Sanal işlemci
  • RAM : Sanal makineye atanan Ram miktarı
  • Geçici ya da Yerel Depo : Sanal makineye atanan geçici deponun büyüklüğüdür. Sanal makinenin çalıştığı zamanda geçici depo olarak kullanılabilen tümleşik bir disktir. Sanal makine durduğunda ( planlanmış veya planlanmamış bir şekilde ) içerik yok olur. Bu disk içerisinde veri tutmamanız gerekiyor.
  • Disk sayısı: Her bir sanal makine boyutuna maksimum sayıda eklenecek veri diski sayısı vardır(Attach Disk). Bu durumu biraz açar isek, Örneğin; Sanal Makine serilerinden bahsettik. A4 bir sanal makinenin içerisine ekleneceği disk sayısının ve boyutunun bir limiti bulunmaktadır. Bu detaylara ise linkten erişebiliriz.

Operating System (İşletim Sistemleri)

Azure Sanal Makine hizmetini kullanarak farklı işletim sistemlerinden faydalanabilirsiniz. Microsoft Azure bizlere hazır işletim sistemi şablonları sunmaktadır. İsteğe bağlı olarak kendi sunucularınızın imajlarınızı hazırlayıp dağıtılabilir veya kendi lokasyonunuzda hizmet veren işletim sistemlerinin VHD dosyalarını upload ederek sunucularınızı Azure Platformu üzerinden çalıştırabiliriz. Linux makine desteklerinin detayları için sizlere şu link yol gösterecektir. Desteklenen tüm Template listesini görmek için lütfen bu adresten kontrol ediniz. https://azure.microsoft.com/en-in/marketplace/virtual-machines/all/

Cloud Service (Bulut Hizmeti)

Sanal Makine oluşturduğunuz zaman, hizmetin yaratılma sırasında arka tarafta birçok bileşen onunla beraber ön gereksinimlerinden dolayı yaratılıyor. Bunların en başında “Cloud Service” gelmektedir. Cloud Service yaratılmasındaki temel sebep, sanal makine(ler) ev sahipliği yapması ve onlara aynı container içerisinde tutmasıdır. Oluşturulan sanal makine(ler) otomatik olarak network kartı (NIC) ve Azure tarafından atanan bir Public IP adresi sağlanmaktadır. Ayrıca Windows tabanlı sanal makineler için uzak masaüstü (RDP) ve Remote PowerShell trafiğine izin verir. Linux tabanlı sanal makineler için ise Shell (SSH) endpoint noktalarını içermektedir. Bununla beraber Cloud Service azure içerisindeki sanal makinelerin Public IP, yük dengeleme gibi hizmetleri yönetirken kullanmaktayız.

Önemli Not : Azure içerisinde farklı deployment modelleri bulunmaktadır. General Availability bu yazıda duyurulan (ARM GA Announcement) “Resource Manager” yeni dağıtım modeli olarak bir takım esneklikler ve değişiklikler içermektedir.Yeni Azure Portal ( Ibıza ) üzerinden bir sanal makine oluştururken Cloud Service oluşturmuyor. Arka tarafta daha farklı mimariye sahiptir. Bu senaryoyu daha detaylı anlamak isteyenler için daha önce blog üzerinde paylaştığım yazıyı okumasını tavsiye ediyorum.


Load Balance (Yük Dengeleme)

Azure Sanal makineler arasında kullanabileceğimiz bir özellik olan Load-Balance ( yük dengeleme) isteğe bağlı olarak ilgili sunucular arasında yapılabilir. Bu özelliğin kullanılabilmesi için Azure Sanal Makinelerinin Tier seviyesinin “Standart” olmasına dikkat edilmesi gerekiyor. Load Balance özelliği level 4 seviyede tcp ve udp trafiğini paylaştırmamız için bizlere yol gösterir. Bu trafik istenirse public veya internal olarakda belirlenebilir. Bu kavramları hızlıca açalım.

  • Public olarak adlandırdığımız istekler; örneğin bir web siteniz var ve dışardan gelen istekleri iki sunucu arasında paylaştırma yapılan yöntemdir.
  • Internal olarak adlandırdığımız istekler; sunucular aynı hizmeti veriyor olabilir ve bu hizmet sadece kendi network ortamlarınız içerisinde paylaştırabilirsiniz.

Affinity Group

Affinity grupları Azure sanal sunucularıınn birbirinin bulundukları aynı yerlere konumlanmasını sağlayacak bir yoldur. Geçmişte, affinity grupları sanal makine yaratmak için zorunlu bir gereksinimdi. Son mimari gelişmelerinde Virtual Network ( Sanal Ağlar) kapsamını artırmış. Çok katmanlı bir uygulamamız varsa veri tabanı ve uygulama sunucularının maksimum performans ile çalışabilmeleri için birbirlerine 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 (ms) düşürmektedir. Fakat artık mimari gelişimlerinin sonucu olarak,affinity grupları artık sanal makineler için önerilen veya gereksinim duyulan bir şey değildir.

Önemli Not : Daha öncede bahsetmiş olduğumuz Resource Manager deployment modeli ile “Affinity Group” kavramı tamamen hayatımızdan çıkmıştır.

Availability Set

Sanal makinelerin uygunluğunu/sürekliliğini etkileyen Azure platformunda iki adet olaylar türü vardır : Planlanmış bakım ve Planlanmamış bakım. Planlanmış bakım genelde Azure sanal makinelerinin uygunluğunu etkilemez, ama bazen sanal makinelerin yeniden başlatmasını gerektirebilir. Planlanmamış bakım, servislerin bozulması veya genelde altında yatan donanım başarısızlığı yüzünden karşımıza çıkmaktadır. Azure SLA garanti etmek (99,95%) için bunun önüne geçebilmek ve istediğimiz SLA seviyesini tutturabilmemiz için availability set olarak adlandırdığı bir özellik sunmaktadır. Bazı uygulamalarımızda servislerimizi birden fazla VM üzerine kurup hem yük dağıtımında (Load-Balance) 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 Database 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.
Aynı availability set içerisinde ki VM’ler (minimum 2 adet olması gerekmekte) farklı fiziksel alanlarda tutularak donanım, güncelleme ve network sıkıntılarından minimum seviyede etkilenmesini hedeflenmektedir. “Availability Set” sanal makine oluşturulurken yaratılır. Yukarda bahsettiğimiz “Load-Balance” bileşineni kullanabilmek için aynı “Availbility Set” içerisinde olan sanal makineler faydalanabilmektedir.

Özgeçmişe Doğru

Azure içerisinde bir sanal makine yaratmayı planladığınız zaman, hedef sanal makinenin özelliklerini bilmeniz ve sonrasında Tier/Seriler/Boyutlar arasında seçim yapmanız gerekmektedir. Zihinde kalması gereken noktalar :

  • Sanal makinenin tipini her an değiştirebilirsiniz. Donanım kaynağını azaltabilir veya arttırabilir olarak değiştirebilmeniz mümkün. (Bir donanım yapılandırması perspektifinden) Fakat, Azure içerisinde bulunan Sanal Makine(VMs) tip gereksinimlerine saygı göstermeniz gerekmekte. Örneğin, eğer Premium Depo kullanıyorsanız DS-Serisinden başka bir seriye değiştiremezsiniz ya da A4 VM ile 16 diskten A3 Vm’e geçiş yapamazsınız, çünkü A3 maksimum 8 data diski destekler. Sanal makine yapılandırma değişikliklerinde nadiren sorunlarla karşılaşırsınız.
  • Sisteminizde bulunan bazı Workload sunucularınız gereksinimlerden dolayı birden fazla Network Interface Card( NIC) ihtiyaç duyacaktır. Azure Sanal makineleri birden fazla ağ adaptörü destekler: ( 4 NICs: A4,A7,A9,D4,D13,G4), ( 2 NICS: A3,A6,A8,D3,D12,G3)
  • Sanal makine fiyatlandırması 3 sınıflandıramaya dayanır :Tier,Seriler ve Büyüklük.Daha fazla yapılandırma ve daha iyi seçenekler, daha pahalı sanal makine anlamına gelir. (Fiyatlandırma konusu yazımın ileri kesimlerinde tartışma konusu olacaktır.)
  • Farkına varılacak en önemli nokta, Storage (depolama) kullanımı ve Virtual Network( Sanal Ağ) sanal makine sınıflandırmasının bir parçası değildir.
  • Eğer “Normal” sanal makineleriniz için yük dengelemesi ve özel performans istemiyorsanız , Basic Tier Vms kullanın : Fiyatlama açısından bu daha makul.