Daha önceleri bölüm bölüm yayınladığım "AZURE SANAL MAKİNELERİNİN 7 DERİN NOKTASI" artık e-Kitap halinde bir sayfa kadar uzağınızda…

Kendi sorularımın cevaplarıyla harmanladığım, danışmanlık hizmeti verdiğim müşterilerimin çoğunda ihtiyaç duyduğum scripti tanıtmak istiyorum. Şimdilik, geliştirdiğim Powershell Script sadece Azure Service Manager ( Classic deployment) modelinde bulunan kaynaklarınızı HTML olarak raporlamanızı sağlıyor.
Versiyon 1.0 olarak adlandırdığım bu script ile HTML olarak çıkan rapor içerisinde sırasıyla aşağıdaki kaynakların raporlarını bulabilirsiniz.
Yukarıda görüldüğü gibi Powershell Script şu şekilde kullanılmaktadır.
"Get-AzureEnvironmentReport.ps1 –HTML" parametresi ile script çalıştırıldığı zaman, script içerisinde girilen Azure Account bilgileri ile bağlanıp kaynaklarınız hakkında rapor üretecektir. Eğer girmiş olduğunuz Azure hesabınızda birden fazla Subscription içerisine yetkiniz var ise karşınıza GridView ekranı gelip seçimde bulunmanızı isteyecektir. Rapor otomatik olarak çıkan raporu sizlere çağırıyor olacak fakat kaydedilen lokasyon "C:\Report\AzureEnvironmentReport.html" olduğunu söylemekte fayda var.
Script çalışma süresi kaynakların detaylarını ve sayısına göre değişebiliyor. Yakın zaman içerisinde Script içerisinde oldukça fazla güncellemeler geleceğini söylemek istiyorum. Bu script Azure Automation içerisine entegre edip, belirli zaman aralıkları ile Schedule bir şekilde otomatik raporlar gönderip Azure üzerinde hizmet veren kaynaklarımızın kolayca monitoring işlemlerinin yapılmasını sağlamak şimdilik hedeflerim arasında yer alıyor. Bununla beraber Azure Resource Manager bizlere sağlamış olduğu esneklikleri de ( Billing, RBAC, Tag) gibi detaylarına aktarmak önceliklerim arasında olduğunu söylemekte fayda var.
Bu yazı Microsoft Azure laaS hizmeti olan ( Sanal Makineler Servisi ) ile başlangıçtan beri dahil olmamış kesime tanıtmak, bunun nasıl çalıştığını hızlıca anlamak isteyenlere ve ikna edilebilirse başlatmaya hatta kullanmayı düşündürmek üzere yazılmıştır. Bu yazıda, Microsoft Azure’ın içerisindeki laaS (Infrastructure as a Service) özellikleriyle ilgili çok şey detaylandırmayacağım, çünkü onlardan yüzlercesine sahip olunan kısımlar var ve Azure temellerini konu alan, tarif eden pek çok kitap ve uzun makaleler var.
Bu Makale serisi aşağıdaki gibi başlıklara ayrılmıştır.
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:
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ş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 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.
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
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.
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/
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.
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.
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.
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.
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 :
Servislerinizin güvenliğin ve izolasyonun katmanını sağlamak için Azure içerisinde sanal ağlar (VNet) kullanılabilir. Herhangi bir Virtual Network (VNet) yapılandırılması olmadığı zaman Service Management(Eski Portal) Deployment modelinde yaratılan sanal makinelere Azure üzerinden bir ip adresi atamasını Cloud Service gerçekleşecektir. Ancak siz Virtual Network ( Sanal Ağ) yapılandırarak dışarıdan gelen servislerin ulaşmasına izin verebilirsiniz. Varsayılan olarak, Azure Datacenter dışındaki hizmetler Virtual Network içerisinde bulunan hizmetlere bağlanmak isterse Site to Site VPN veya Point to Site VPN gibi yöntemler tercih edilir. Herhangi bir Virtual Network(Sanal Ağ) yapınız olmadan VPN yöntemlerini kullanamazsınız. (Şirketiniz ile Azure Datacenter aynı network içerisindeymiş gibi)
Bir sanal ağ oluştururken aşağıdaki bilgiler verilmelidir.
Notlar : Azure Virtual Network ( Sanal Ağlar) public ve private olarak IP aralıkları (CIDR gösterim) destekler. CIDR nedir dediğiniz duyar gibiyim, hemen açıklayalım. CIDR (Classless Inter-Domain Routing), IP adreslerinin daha etkin kullanımını sağlayarak IPv4 adreslerinin tükenmesini yavaşlatmayı ve İnternet üzerindeki yönlendiricilerin kullandığı yönlendirme tablolarının aşırı kalabalıklaşmasını önlemeyi amaçlamaktadır.
Azure Storage IaaS hizmetleri içerisinde önem verdiğimiz diğer noktalardan biridir. Müşterilerimize giderken en çok önem verdiğimiz konuların başında yerel veri merkezlerimizdeki en büyük maliyet kalemi depolama çözümleri iken Microsoft Azure bulut çözümü içerisindeki en ucuz kalemlerin başında depolama gelmektedir. Aynı zamanda bulut teknolojisinin en önemli avantajlarından birisi olan Pay As You Go ( "Kullandıkça Öde" ) yöntemi depolama çözümleri için de geçerlidir. Eğer dilenirse şirketler "CAPEX VE OPEX" yöntemleriyle inceleme yaparak maliyet/bütçe hesaplamaları sonucunda genel bir ilk yatırım yapmak yerine yalnızca ilgili depolama alanının kullanıldığı kadarı ödenir ve esnek bir biçimde aşağı veya yukarı bu değerler değiştirilebilir. Azurere Storage içerisinde barındırılabilinirken aynı zamanda big data senaryolarını destekleyecek bilimsel, finansal analiz, medya uygulamaları gibi gereksinimleri de rahatlıkla karşılayabilir. İçerisinde terabyte'larca veri rahatlıkla barındırılabilir ve işlenebilir. Azure Storage kendi içerisinde servislere ayrılmaktadır. Bunların Virtual Machine (Sanal Makine) ile ilgili olan kısımlarını tanıyalım.
Azure Blob Storage genellikle yapılandırılmamış verileri barındıran ve HTTP/HTTPS protokolü üzerinden erişim imkanı veren bir hizmettir. Büyük miktarda yapısal olmayan verileri tutmak için tasarlanmış bir hizmettir.
Yukarıda listelenen dosya türleri için gibi birçok dosya türü birçok amaç için 'Blob Storage'de depolanabilmektedir. Ancak bir Storage Account toplamda en fazla 500 TB olabilir. Blob Storage kendi için iki farklı bölüme ayrılmaktadır.
Page Blob Storage yaygın olarak işletim sistemi diskleri ve veri diskleri dahil olmak üzere Azure sanal makine dosyalarını depolamak için kullanılır. Bir sanal makine provisioning edilmeye başlandığı zaman karşımıza iki tür Storage modeli çıkmaktadır. Bunlar Standart Storage ve Premium Storage olarak gözükmektedir. Bu iki modelin birbirlerinden farkı performans üzerinedir.
Azure File Storage, On-Premises veya Cloud üzerinde çalışan uygulamalar arasında paylaşılan bir depolama alanı sunulabilmesi için tasarlanmıştır. Örneğin konfigürasyon dosyalarını, logları depolamak için bu hizmeti tercih etmek isteyebilirsiniz. İletişim için standart "Server Message Block (SMB 2.1)" protokolü kullanılmaktadır. Azure üzerindeki uygulamalar File I/O API'lar yardımıyla bu paylaşıma erişebilirler. Dolayısıyla lokalde dosya paylaşımı gerektiren bir uygulamanız ve bu paylaşımın yüksek erişebilir olmasını gerektiren bir durum varsa kodlarda çok fazla değişiklik yapmadan bu uygulamayı buluta taşıyabilirsiniz. Buna en temel örnek Cluster yapısında "Witness Server / quorum " olarak belirtmiş olduğumuz paylaşımları gösterebiliriz. Artık Cluster organizasyonunda Azure File Storage servisini gösterebilir durumdayız. Aklınıza bu hizmet On-Premises kullanılan geleneksel file server paylaşımları \\serveradı\paylasimadi" olarak gelebilir.
Bu bölüm Azure içerisindeki laaS (Infrastructure as a Service) bileşenlerinin basit olarak fiyatlandırmasını tarif eder. Azure platformu dizayn ederken fiyatlandırma çok fazla önem taşır. Dizaynınız içerisinde dahil edilen tüm bileşenlerin farkında olmalısınız,böylece oldukça yakın bir şekilde platformun ücretini kestirebilirsiniz. Fiyat hesaplanması için Azure Pricing sayfasını veya Microsoft resmi olarak yayınladığı ve devamlı güncel tutmuş olduğu "Azure Cost Estimator Tool" adında başarılı bulduğum bir araç var. Bu aracın yetenekleri oldukça fazla. Sanallaştırma platformuzu belirtip anlık bir şekilde çalışan workload yapınıza fiyat hesaplamasını gerçekleştirebiliyor. Tabi şunu söylemekte fayda var, hesaplanan fiyatın tutarlılığı yok. Çünkü Azure tarafında, esnek davranmak tamamen sizin elinizdedir.
Her sanal makine tipine göre bir fiyat biçilir. Fiyat kaynakları hesaplamak içindir. (Depolama ve sanal ağ dahil değil.) ve 3 maddeye göre hesaplanır.(Tier,Seriler,Büyüklük)
Azure, Virtual Machine hizmetini sunarken maliyet hesaplaması gizli bir sır barındırıyor. Maliyet kullanıcılara stabil olarak değil, kullandıkları kadar yansıyor. Tüketim dakika başına hesaplanır. Eğer Sanal makineyi 1 saatliğine kullanırsanız, 60 dakika için ücretlendirileceksiniz. Ancak 30 saniye kullanırsanız, 1 dakikadan ücretlendirileceksiniz. Eğer sanal makinelerinizin iş saatleri dışında çalışmamasını ve kestirmeden nirvana erişmek istiyorsanız, Azure Automation hizmetini incelemenizi tavsiye ederim. Blog üzerinde bu sır ile ilgili güzel bir maliyet avantajı hesaplaması yapmıştım. Azure Automation Serisi : http://hasangural.com/azure-automation-part-0giris/
Fiyatlandırma Azure Datacenter (bölgeden bölgeye) değişiklik gösterebilmektedir. Genelde, en yüksek fiyatlandırma Avusturalya ve Brezilya'da olmaktadır .
Bir sanal makine her zaman faturalandırılır, aksi taktirde silinir veya serbest bırakılır. (Durdurulur ve boş bırakılır.)
Fatura detaylarına baktığınızda Depolama (Storage) ve Ağ (Virtual Network) kaynakları ayrı bir şekilde faturalandırılır. Geçici depolama (Temporary Disk) alanı sanal makineye yüklenmiş ancak ücretlendirilmez.
Sanal makine kullanımında uygulanan vergiler vardır. Bu vergiler Azure sanal makinelerinin fiyatlarına dahil değilir, ve faturaya ayrı bir şekilde eklenir. Bu vergilerin nasıl hesaplandığı hakkında bir fikrim yok.
Azure sanal makine fiyatlandırma detayı için şu linki tıklayın : https://azure.microsoft.com/en-gb/pricing/details/virtual-machines/
Azure laaS VM (Infrastructure as a Service ) ve organizasyonların kendi alt yapıları için özel sanal makineler kullanmayı planlarken bu bölümde, bazı tasarım konuları ve öneriler anlatacağız. Tasarım çok önemlidir. Hatalı tasarım performans, olumsuz bir bakış ve hatta hatalı maliyet dezavantajları ortaya çıkaracaktır. Azure içerisinde yaratılan sanal makinelerin üç durumu vardır. Bunlar sırasıyla aşağıdaki gibidir.
Her zaman bizlerin ihtiyaçlarına en uygun en az sanal makine boyutu ile başlayın. Daha sonra gerekli sanal makine yapılandırması yükseltebilirsiniz. Yazımızın Bileşenler bölümünde bahsetiğimiz Availbility Set sayesinde SLA süremisini arttırmak için Standart Tier sanal makineleri kullanıyorduk. Eğer böyle bir gereksinime ihtiyacınız yok ise, Basic Tier ile başlayabilirsiniz. ( SLA %99.5 olarak belirtiliyor.) Unutmayalım ki Basic Tier'da her boyutta sanal makine yok.
Varsayılan olarak, dinamik bir IP adresi havuzu tarafından oluşturulan sanal makineye IP Adresi ataması gerçekleşir. Bu IP adresi dinamik olarak ataması gerçekleştirilmiştir. Kullanmakta olduğunuz veya hizmet veren sunucularınızın mümkün oldukça Azure tarafında IP Adreslerini statik olarak ayarlamalısınız. Sanal makine sağlama/oluşturma sırasında bu IP adresini statik olarak sağlamanın iki yöntemi bulunuyor.
Azure ile kendi Datacenter yapınızın aynı network içerisindeymiş gibi bağlantı kurmasını planlıyorsanız ( Site to Site VPN – Multi Site VPN) RC1918 IP aralıkları adresleri aralıklarını kullanmak zorundasınız. Farklı Azure Virtual Network yapıları içerisinde geçiş yapabilmek için aşağıdaki kurallara dikkat edilmelidir.
Azure sanal makineleri layer 3 (IP) gateway veya routers gibi davranmayı desteklemez. Windows üzerinde bunu yazılımsal olarak gerçekleştirmek için iki adet eklenen NIC ile gerçekleştirme şansınız yok. Site to Site VPN ve Point to Site VPN bağlantı şekillerini kullanabilmeniz için oluşturulan Virtual Network Gateway kesinlikle Dynamic Routing olarak yapılandırılması gerekiyor. VPN Yöntemlerinin detayları için bu adres size yardımcı olacaktır.
Azure tarafında farklı IP adresler türleri bulunmakta, sen bunların farkında olmalısın.
Yukarıdaki IP adres modellerine ek olarak, fiyatlandırma bölümünde VIP ve PIP kavramlarınıda unutmayalım.
Bildiğiniz gibi İnternetin Çağında yaşayan Google ve Bing gibi arama motorları sayesinde, hiçbir şey yok/bulunamadı dememeliyiz. Eğer Azure hakkında daha fazla bilgi edinmek istiyorsanız birkaç noktara dikkat çekmek istiyorum.
Bu yazının amacı, Azure sanal makineleri hizmetinideki sır perdesini aralamak ve farklı özellikleri ve bileşenleri açıklamaktır. Sağlanan bilgilerin sadece bir başlangıç noktası var ve birkaç ay üzerinden geçtikten sonra kaldırılmış ve değişmiş olabilir. ( Değişime hazır olun!) Azure sürekli geliştirmeleri, hızlı çıkan yeni özellikleri ve büyüme aşaması ile meşhur.(Bu ne zaman çıkmış diyeceğinizi duyar gibiyim.) Her zaman son güncellemeler ve haberler için Microsoft adreslerini kontrol etmenizi öneririm
Microsoft Azure Platformu üzerinde çalışıyorsanız ve Azure Ibıza (Yeni) Portal üzerinden bir hizmeti kullanmak istediğiniz zaman deployment süreçlerine başladığınızda karşınıza "Service Management" ve "Resource Management" şeklinde iki farklı model çıkıyor olacaktır. Bu terimlerin, Microsoft Azure bulut hizmetlerine erişimi sağlayan iki farklı REST API olduğunu söylemekte fayda var. "Resource Manager" bizlere Microsoft Azure üzerinde yeni bir deployment modeli sunar. Bu yeni model, Classic ( Service Management) dağıtım modelinden çok önemli farklılıklar içermektedir ve iki model tamamen birbiriyle uyumlu değildir. Kaynakların dağıtımını ve yönetimini basitleştirmek için Microsoft eğer mümkünse "Resource Manager" deployment modelini kullanmanızı tavsiye eder. Resource Manager ile ilgili daha önce blog içerisinde yazı serisine erişebilirsiniz.
Bu dağıtım modellerinden hangi API tercih edilmelidir sorusuna cevap verelim.
Daha önce de belirtildiği gibi, Azure Service Management "eski" API ve http://manage.windows azure.com de web portalı ilişkilidir. Bu API nevi şahsına münhasır iletişim için ayrı bir PowerShell modülü de var. Azure Classic Portal içerisinde bir hizmet oluşturduğunuz zaman karşımıza "Cloud Service" kavramı çıkmaktadır. Service Management (Classic) API programmatic olarak XML kullanarak Azure kaynaklarınızı yönetmenizi sağlıyor.
Classic Deployment (Service Management) modelinin hizmetler ile ilişkisini aşağıdaki şekilde görebilirsiniz. Aşağıdaki örnekte, bir Virtual Machine genelinde detaylandırılmıştır.
Azure Resource Manager (ARM) API Azure bulut kaynakları ile etkileşim için bir JSON odaklı API sunar. Bu API ailesinin kendi aralarında artıları ve eksileri var, ama aralarında uyumluluk olmadığını anlamak önemlidir. Resource Manager sayesinde artık kaynaklarınızı mantıksal gruplara yani Resource Group içerisine alarak yönetimde esneklik kazanabiliyoruz. Bunları temel olarak sıralayacak olur isek,
Yukarıdaki kavramları daha iyi anlamak adına Blog içerisinde "Resource Manager Nedir" makale serisini okumanızı tavsiye ederim. Resource Manager ve Service Manager kavramlarının farklarını aşağıdaki şekilde bulabilirsiniz.
Microsoft Azure yeni deployment modeli olan Resource Manager kendine özel yeni bir API bizlere sunmaktadır. Azure Resource Explorer developer olan kişiler tarafından bu yeni modeli keşfetmeleri için çok faydalı bir araç. Resource Explorer erişmemizin birden fazla yöntemi bulunmaktadır. Bunların en temeli olan Azure New (Ibıza) Portal üzerinden erişebiliyorsunuz. Mevcut Azure hesabınız ile oturum açtıktan sonra, Resouce Explorer tıkladığınız zaman Resource Manager API bizlere verdiğini Provider kullanarak "GET","PUT","DELETE","POST" methodlarını API içerisine gönderip aksiyonlar alabilir veya veriler çağırabiliriz. Aşağıdaki örnekte Azure New (Ibıza) Portal içerisinde Resouce Explorer sayfasına erişebiliriz.
Resource Explorer bölümüne Azure Portal içerisinde eriştiğiniz zaman JSON formatında olarak kaynaklarımızın detaylarınızı keşfedebilirsiniz.
Bununla beraber dilerseniz, https://resources.azure.com sayfası üzerinden Azure Credentials ile oturum açtığımız zaman karşınıza yukarıdaki gibi bir sayfa gelecektir. Fakat bu sayfa şuan Preview olup bahsetmiş olduğumuz Resource Manager API ile "GET","PUT","DELETE","POST" methodlarını Web sayfası üzerinden gönderme şansımız bulunmaktadır. Biraz daha detaylandırırsak dilerseniz, oluşturulan Resource Group kaynaklarınızı silebilir veya Resource Grouplar arasında geçişler sağlayabiliriz. Resource Manager modelini ile ve sizde danışmanlık süreçlerinizde herhangi bir hizmeti deployment ederken zaman kazanmak istiyorsanız Resource Manager Template yapısını kullanarak çok hızlı bir şekilde provisioning işlemlerinizi gerçekleştirebilirsiniz. Resource Manager ile deployment yaparken arka tarafta bir JSON formatında kullanmak istediğiniz kaynaklarınızı detaylandırmanız gerekiyor. JSON formatının belirli bir syntax ile yazılmış olması ve bu JSON dosyasını Azure Powershell ( Resouce Manager) Modeli ile deployment sürecini başlatma şansınız var.
Bu tarz deployment süreçlerini diğer yazılarımda detaylarına iniyor olacağım. Fakat bu yapının nasıl çalıştığını anlamak için dilerseniz, GitHub üzerinden merakınızı gidebilirsiniz. Eğer biraz daha kestirmeden nirvanaya ulaşmak istiyorsanız aşağıdaki sayfa üzerinden tüm Deployment Template erişebilirsiniz. Hemen bu süreci anlamak adına https://azure.microsoft.com/en-us/ sayfasına girdiğiniz zaman, "Resources" sekmesiden "Templates" kısmına tıklayalım ve karşımıza tüm publish edilen Resource Manager için geliştirilmiş template örneklerini bakalım.
"Templates" sekmesini tıkladıktan sonra karşımıza geliştirilen ve paylaşılan bütün Resource Manager Template örnekleri gelecektir. Aşağıdaki örnek üzerinde herhangi bir template tıklayıp deployment sürecinin nasıl işlediğini anlayalım.
Örnek olarak "Join a VM to an existing domain" yazısının üzerine tıklayarak Developer tarafından geliştirip ve publish konumda olan Resource Manager modeli ile hazırlanmış Deployment Template kullanmaya başlayalım.
Yukarıda görüldüğü gibi, "Deploy to Azure" butonu ile sizi Azure New Portal içerisine yönlendirecek ve geliştirilen Deployment Template içerisine tanımlanan JSON dosyasının içerisindeki parametreleri göndererek provisioning sürecine başlıyor olacaksınız. Resource Manager deployment modelini kullanarak sizde basit bir JSON dosyasına oluşturmak istediğiniz kaynaklarınızın detaylarını belirtip zaman kazanabilirsiniz.
Azure Automation, Infrastructure as a service (IaaS) ve Platform as a service (PaaS) gibi aldığınız hizmetlerin Azure içerisinde uzun çalışan, hata eğilimi olan ve sık sık tekrarlanan görevleri düzenli olarak gerçekleştiren bir servistir. Bu makale serisi içerisinde Azure Automation hakkında sık sorulan sorulara cevap vermeye ve genel alt yapısını incelemeye çalışacağız. Makale serisine başlamadan önce size Anıl Erduran'ın "Microsoft Automation Dün Bugün ve Yarın" adlı yazısını okumanızı şiddetle tavsiye ederim. Şimdi ise yarını detaylandırmaya başlayabiliriz.
Bu servisi kullananlar zaman, maliyet avantajı ve iş güçü kazanır. Bulut ortamlarında düzenli olarak gerçekleştirdiğiniz görevler için, (Provisioning ve Scale VM, Web Sites, Test Environment vb.) hiçbir insan müdahalesi olmadan hatasız, istenilen veya belirli aralıklarla gerçekleşmesini sağlar.
Azure Automation Windows Powershell Workflow söz dizimine uygun olarak yazılmış Runbook aktiviteleri kullanır. İhtiyacımızdan dolayı Workflow yazıldığı zaman bunu arka tarafta Windows Workflow Foundation (WWF) tarafından yürütüldüğünü söylemekte fayda var. Service Management Automation (SMA) ile Azure Automation benzerlik göstermektedir. İkisi de Windows Powershell Workflow ile geliştirilen Runbook aktivite biçimini kullanırlar. Azure Automation içerisindeki Runbook aktiviteleri Public Cloud Resource ve Azure ile ilgili powershell cmdlets ailesine erişim sağlarken, Service Management Automation (SMA) üzerinde bulunan Runbook'lar Windows Azure Pack'in parçalarına ve Azure Pack cmdlet'lere ihtiyaç duyar. Makalemiz içerisin de geliştireceğimiz Runbook aktiviteleri sayesinde, Azure Automation ihtiyaç duyulan zamanlar içerisinde ilgili sunucuların hizmet vermesini sağlayarak aldığımız hizmetin maliyetlerini azaltacak. Kaba bir matematik ile bunlara çok basit örnekler verelim.
Azure, Virtual Machine hizmetini aylık olarak kullanıcılarına sunmakta. Ancak bu hizmetin maliyet hesaplaması gizli bir sır barındırıyor. Maliyet kullanıcılara stabil olarak değil, kullandıkları kadar yansıyor. Geliştirdiğimiz Runbook sayesinde bu sırrı ortaya çıkartacağız. Örnek olarak A3 tipinde bir Virtual Machine alındığında, aylık maliyeti yaklaşık olarak 270($) dolardır. Bir ayda 720 saat olduğunu düşünürsek, bu hizmetin saatlik masrafı kabaca 0,375($) dolara denk gelmektedir. Saatlik masrafı gözünüzde küçük gözükebilir ancak birazdan geçeceğimiz derin hesaplar sonucu maliyetin küçük olmadığını göreceksiniz.(Yaptığımız veya bir sonraki yapacağım hesaplamalarda ay 30 gün olarak alınmıştır.) Örnek aldığımız sanal makinenin şirket içerisinde hizmet verdiği saatlerinin 09:00 – 18:00 arasında olduğunu varsayalım. Kullanılan sanal makinenin günün sadece 9 saati çalışmasına karşın, şirket sanal makineyi Azure üzerinde tüm gün hizmet olarak alıyor, saat ayrımı yapmıyor. Bu sebepten dolayı ödeyeceği 3,375 ($) dolar miktarı, 9 ($) dolara yükseliyor ve bu hesap ise sadece günlük kısmı. Aylık olarak hesaplamada ise, normal ödenmesi gereken miktar 101($) dolardır. Arada oluşan 169($) dolar farkı, yıllık olarak bakıldığında 2.028($) dolara yükseliyor. Geliştireceğimiz Runbook sayesinde, sanal makinenin sadece çalışması gerektiği saatler içerisinde çalışarak, maliyetten tasarruf etmemizi sağlayacaktır.
Azure Automation içerisinde oluşturduğumuz Runbook'lar ile On-Premises Datacenter yönetmeniz mümkün değil. Şimdiler de ismini çok sıklıkla duyduğumuz Operation Management Suite ile beraber artık Hybrid Runbook Server kavramı hayatımıza girmiş durumdadır. Azure Automation içerisin de buluanan Runbook'lar ile artık On-premises içerisin de Hybrid Runbook Worker olarak belirlenen sunucu tarafından uygulanabilir durumdadır. Operation Management Suite olması şartıyla, yüklenen bir Agent sayesinde gösterdiğiniz sunucuyu Hybrid Runbook Worker olarak belirtebilirsiniz. Aşağıdaki resim ile bu senaryonun kafamızda kısa süreliğine de olsa gerçekleşmesini istiyorum.
Azure Atuomation serisine aşağıdaki linklerden ulaşabilirsiniz.