Windows Azure Network ve NLB Kullanımı
Bu makalemizin içeriğinde birden fazla terime değinecek olmamız ve örnek bir senaryoya göre ilerleyecek olmamızdan dolayı başlığı atmakta biraz zorlandım. Aşağıdaki resimdeki örnekte olduğu gibi bir yapıyı oluşturma adımlarına makalemizde yer vereceğiz.
Şeklimizde görüldüğü gibi Bulut üzerinde iki adet web sunucumuz ve bu sunucuların önünde bir Load Balancer var. Biz bir web sitesine sürekli erişim sağlama ve olağanüstü durumda sorun yaşanmaması için yedekli bir yapıyı konu alan örneğimizi bulut üzerinde gerçekleştireceğiz. Windows Azure ne işe yarar, Windows Azure üzerinde nasıl Hesap oluşturulur ve Windows Azure üzerinde nasıl sanal makine oluşturulur gibi konulara portalımızda ki makale ve seri webcastlar ile yanıt vermiş durumdayız. Biz burada biraz daha Network, LoadBalancer, Farm oluşturma, Yedekli yapı kurma gibi konulara eğileceğiz. Makalemizin ilerleyen adımlarında açıklama yapılması gereken konularda açıklama yaparak ilerleyeceğim.
Yukarıdaki yapıyı oluşturmak için adım adım ilerleyip bu adımların sonunda bu yapıyı elde etmek durumundayız. Şimdi biz ilk olarak Network kısmına giriş yapalım. Azure üzerinde oluşturacağınız sanal makinalara ip vermek zorunluluğumuz yok. Azure normalde her makineye local ve dışarıdan erişim sağlamak adına global ip verip bizim işlerimizi yapmamıza olanak sağlıyor. Biz şeklimize bakacak olursak birbiriyle load balance yapacak aynı ortamda olacak ve birbiri ile konuşacak bir yapı kuracağız. Bu nedenle networkten alınacak ipye kadar kendim sınırları belirlemek istiyorum. Ayrıca bu şekilde Sanal makinelerin belirlediğimiz bir ip havuzundan çalışmasının nasıl gerçekleşeceğine de değinmiş olacağız.
Login işleminden sonra “Network” menüsüne giriş yapalım. Bu ekranda yer alan “CREATE A VIRTUAL NETWORK” linkine tıklayalım.
Açılan ekranda networkümüz için bir isim vermemiz gerekmektedir. İsim verildikten sonra bulutta muhafaza edileceği bölgeyi seçmemiz gerekmektedir. Bu seçimi de yaptıktan sonra ortamımız daha önce hiçbir işlem yapılmamış olduğu için temiz bir ortam ve bizimde bir Affinity Group oluşturmamız gerekmekte ve bu affinity groupa isim vermemiz gerekmektedir. Bu kısmı tamamlamadan önce affinity group nedir bunu biraz açmak istiyorum.
Affinity Group : Windows Azure ortamında birlikte çalışması gereken sanal sunucuların performansını arttırmak ve birbirleri ile hızlı iletişim kurması adına aynı datacenter üzerinde bir gruplama yapmaktır. Bizde örneğimizde iki adet web sunucusu arasında yük dengelemesi yapacak olmamız ve yüksek erişilebilirlik sağlayacağımız için bir affinity group tanımlaması yapıyoruz.
Bu işlemlerden sonra bir sonraki ekrana ilerleyelim.
Network ismi verip bir affinity group tanımlaması yaptığımıza göre artık bir ip ve subnet aralığı belirlememiz gerekmektedir. Gerekli tanımlamayı yapalım.
Bizim havuzumuz 10.0.0.0 olan networkten dağıtsın ve çok geniş alan dağıtmasın bu nedenle 10.0.0.0/29 olan blok bize yeterli olacaktır. Bu ekranda yapılan seçime göre sizin kaç ip’ye sahip olup bu ipleri dağıtabileceğiniz online olarak hesaplanıp karşınıza getirilmektedir. Bu ekranda DNS tanımlama imkânına sahibiz.
Azure üzerinde otomatik olarak Dns sunucuları belirlenip buradan isim çözümleme hizmeti almamız sağlanmaktadır. Ben burada bir sanal makine oluşturacağım oradan DNS hizmeti vereceğim veya Google Dns kullanacağım gibi değişik yapılanmalara girmeniz durumunda buradaki DNS kısmında tanımlayabilirsiniz. Bu işlemi sonradan network kısmına giriş yaparak değişiklik yapmak yolu ile sonradan da yapabilirsiniz. √ ikonuna tıklayarak network oluşturma işlemimizi tamamlayalım.
Ekranımızda görüldüğü gibi Web-Affinity isimli Affinity gruba dâhil olan Web-Network isminde bir network yapımız oluşturuldu.
Affinity Group nedir öğrendik ve oluşturduk. Bu aşamadan sonra storage account oluşturmak durumundayız. Normalde bir sanal makine oluşturduğumuzda bir storage account tanımlaması yapmamışsak otomatik olarak sanal makine bir storage accountuna atanmaktadır. Biz bir account oluşturursak makinalarımızı direk olarak burada oluşturma imkânına sahibiz. Bu hesapların birden fazla yöneticisi olan yapılarda yetkilendirilme açısından sağladığı kolaylıkta önemlidir.
Storage Account: Windows Azure platformu temel olarak bize sunucu ve yer sağlayan bulut bilişim hizmetidir. Bu hizmet temel olarak hosted services ve storage sunmaktadır. Storage account’ da azure platformu üzerinden size sunulan veri alanlarını yönetmek için kullandığınız hesaptır. Çünkü sistem size birden çok role sunmaktadır.
Storage Account oluşturmak için Storage tabına gelelim ve açılan ekranda “CREATE STORAGE ACCOUNT” linkine tıklayalım.
Açılan ekranda storage account hesabımıza bir url belirleyelim. Bu url ile erişim sağlayabiliriz. Bunun için Microsoft tarafından geliştirilen Azure Storage Explorer yazılımını ücretsiz olarak kullanabiliriz. Bu program ile birlikte VHD disklerimize erişebilir, download edebilir, silebilir veya farklı işlemler gerçekleştirebiliriz. Dilersek bu accountu bir affinity gruba bağlayabiliriz. Bizim bir Affinity group tanımlamamız olduğu için bu gruba bağlıyoruz. Biz testimizde aynı affinity group ve network ortamını kullanıyoruz. Fakat farklı bölgeleri kapsayan bir cluster yapımız olsaydı “Enable GEo-Replication” seçeneği işaretli durumda olsa oluşacak bir sorunda farklı bir ortamda sanal makinelerimiz ve datalarımız ayağa kalkacaktı. Bu seçeneği de açıklamış olduk.
Şu anda Storage Account oluşmuş durumda.
Kendimize özel olarak bir network kullanacağımız için bu tanımlamayı yaptık, bu işlem sırasında makineleri aynı kabin içinde tutup hızlı iletişim sağlaması için aynı affinity group içerisine dâhil ettik. Sonrasında makinelerin kontrolünü rahat sağlamak için storage account tanımladık. Sıra geldi sanal makine oluşturma işlemine. Bu işlem için “VIRTUAL MACHINES” tabına gelelim ve “CREATE VIRTUAL MACHINE” linkine tıklayalım.
Karşımıza gelen ekrandaki bilgileri doldurarak ve sonrasında “CREATE A VIRTUAL MACHINE” hızlı bir sanal makine oluşturma imkânına sahibiz. Biz seçenekleri biraz daha özelleştirip irdeleyeceğimiz için From Gallerylinkine tıklayacağız.
Öncelikle 1. Ekranda bizden kurulacak olan işletim sistemini seçmemiz beklenmektedir. Gördüğünüz gibi platformda çok sayıda Microsoft ve Linux uygulamasını barındıran sanal makine şablonları var. Bizde burası için şablon ekleyerek kendi şablonumuzu kullanma imkânına sahibiz. Biz Server 2012 Datacenter işletim sistemini seçelim ve sonrasında à ok işaretini tıklayalım.
Sanal makinemize kurulacak olan işletim sistemini seçtikten sonraki ekranımızda kurulaca olan versiyonun tarihini seçebiliriz biz burayı varsayılan değerde bırakıyoruz. Sanal makinemiz için bir isim belirliyoruz. Biz iki serverleden oluşan NLB ve IIS cluster yapacağımız için bu serverimize “webserver001” isimini veriyoruz.
Sistem administrator hesabı yerine bizden bir username belirlememizi istiyor. Sistem kurulu hale gelince bu ooluşturulan user Admin hakları ile sistem üzerinde işlem yapmaya başlıyor. User name ismini doldurduktan sonra bu usere complex bir parola belirliyoruz. Bu ekrandaki işlemleride tamamladığımıza göre bir sonraki adıma geçebiliriz. à ikonu ile sonraki ekrana ilerleyelim ve makinamızı yapılandırmaya devam edelim.
Daha önce bir servisimiz olmadığı için bu işlem sırasında otomatik bir cloud servis oluşturulacak. Makinamıza uzaktan erişebilmek adına bir Dns Name vermemiz gerekiyor. Bu Azure üzerinde benzersiz bir isim olmalıdır. Biz webserver001 ismini veriyoruz. Uzak erişimle bu isimden sistemimize bağlanabiliriz.
Network olarak sistemin otomatik network vermesini isteyebilirdik biz bunu istemediğimiz için makalemizin başında anlattığımız ve oluşturduğumuz networkü yani “Web Newtwork’ü” seçiyoruz. Bu sayede bizim belirlediğimiz aralıktan otomatik ip alacak.
Storage olarak oluşturulacak olan iki web serverin birbiri ile hızlı iletişime geçmesi adına oluşturduğumuz “webstorage005” isimli storage seçimini yapıyoruz.
Availability Set: Makinalarımızdan birinde bir sorun olması durumunda hizmetin kesilmemesi adına yapılacak olan sistem oluşturma yapısına verilecek olan isimdir. Bu işlemi biraz daha açmamız gerekmektedir dilerseniz bunu şekil ile inceleyerek biraz daha derinleştirelim.
Anlatımımıza şekil üzerinden devam ederek biraz daha geniş açıklama yapmış olalım.
Yukarıdaki şekil üzerinde göze batan iki terim bulunmaktadır. Öncelikle bunları ele alalım.
Fault Domain :Şekle bakacak olursak Sunucuların tutulduğu alan farklı rack kabinler üzerinde ise bu fault domain olarak adlandırılır. Rack üzerinde oluşacak donanımsal veya yazılımsal bir sorunda eğer arada bir availablity set yapısı var ise ve en az iki sanal makine ile yapı meydana getirilmiş ise sistem sorun olmadan çalışmasını otomatik olarak diğer rack sürdürecektir.
Update Domain: Sistem üzerinde yapılacak olan bir yama v.s. güncellemesinden dolayı uygulamanın kesilmemesi adına sistem otomatik olarak şekildeki gibi sanal makinanın çalışmasını diğer müsait olan kısma kaydıracak ve sistemin aksamasının önü kesilecektir. Böylece dışarıdan gelen isteklerde bir kesinti olmadan bu istekler yanıtlanacak ve sistemin sürekliliği sağlanacaktır.
Evet bu işlemlerden sonra à işareti ile son kısma ilerleyebiliriz.
Bu ekranımızda ise sistemimize uzaktan erişim için kullanılan portlar belirlenmektedir. Şu anda powershell ve rdp için standart portlar açık dıurumdadır. Bunları özelleştirebilir ve farklı uygulamalar için farklı portlar belirleyebiliriz. Biz bu şekilde bırakıp √ ile sanal makine oluşturmayı tamamlıyoruz.
Sanal makinamız oluşturulmaya başlandı.
Bu makinamız oluşturulurken şeklimizde yer alan senaryo için 2. Sanal makinamızı da oluşturmaya başlayabiliriz. Bundan sonraki sanal makine oluşturma adımları aynı olduğu için çok az açıklama yapacağım gerekli yerlerde bilgilendirme yapıyor olacağım.
Sanal makinamıza kurulacak olan işletim sistemini seçiyoruz. Diğer makine ile aynı özellikte olması için “Windows Server 2012 Datacenter” işletim sistemini seçip ilerliyoruz.
Bu makinamız 2. Makinamız olduğu için ismini “webserver002” olarak verip gerekli user tanımlamasını yapıp şifresini girerek bir sonraki adıma ilerliyoruz.
Cloud service olarak diğer sanal makinamız ile aynı servisi kullanacağımız için “webserver001” cloud servisini seçiyoruz. “webserver001” cloud servisini seçtiğimiz için otomatik olarak “web-network” seçimini yaptı. Bizi diğer sanal makinamız ile aynı network ve affinity group içine dâhil etti. Storage olarak makinamızı farklı storage üzerinde barındırabiliriz ama biz ortamımıza tek nokta üzerinden hâkim olmak için ““webstorage005”storage seçimini yapıyoruz. Diğer makinamızı oluştururken oluşturulan “ASWEBSERVER” isimli availability set seçimini yaparak bir sonraki ekrana ilerliyoruz.
Bu ekranımızda yine sanal makinamıza dışarıdan erişim sağlayacak programlar için port ayarları gösteriliyor. Bunları özelleştirebileceğimiz gibi farklı yazılımların kullanabilmesi için farklı port ataması da yapabilmekteyiz. Bu kısma şu an dokunmuyoruz ama biz yapımızda NLB uygulaması gerçekleştireceğimiz için iki sanal makinanın önceki tek bağlantı noktası ile aynı portu kullanamayacak olmasından dolayı bu ekranda bazı işlemler gerçekleştireceğiz. Bu işlemi ilerleyen adımlarda biraz daha açarak genişlemesine ele alacağız. √ ile işlemimizi tamamlayalım.
Şu anda bu sanal makinamızda oluşturuldu. Aşağıdaki ekranımızda görüldüğü üzere sanal makinalarımız farklı update ve fault domainler üzerine alındı. Yani bu senaryoda hizmet kesintisi olmadan çalışabilecek bir mimari meydana geldi.
Artık sanal makinalarımıza bağlanabiliriz. “Connect” butonuna tıklayalım. İnen dosyamızı uzak masaüstü bağlantısı ile birlikte açalım.
Açılan ekranımızda “Bağlan” butonuna tıklayalım.
Gerekli kullanıcı adı bilgilerini ve şifresini girip bağlantıyı sağlayalım. Burada sanal makinaya bağlanırken kullanıcı adımızın önüne tam dns ismimizi girmemiz gerekmektedir.
Gelen sertifika güvenlik uyarısını “Evet” ile geçelim.
Şu anda sanal makinamıza bağlandık. Bizim belirlemiş olduğumuz network bloğundan ip aldığını görebiliyoruz.
Diğer makinamız üzerinden bu makinamıza erişim sağlayabilmek adına gerekli firewall ayarlarını aktif edelim.
“Connect” ile diğer sanal makinamıza bağlanalım.
Bu makinamızın da Uzak Masaüstü Bağlantısı ile açılmasını sağlayalım.
Bağlan butonuna tıklayalım.
Gerekli dns ismi \ kullanıcı adı ve şifremizi girelim.
Gelen sertifika uyarısını “Evet” ile geçelim.
Bu sanal makinamızın da belirlediğimiz bloktan ip aldığını görebiliyoruz. Gerekli ağ geçidi bilgisi Azure platform tarafından otomatik olarak sağlandığı için nete erişim sorunu çekmiyoruz.
Webserver 001 makinamıza webserver002 makinamızdan sorunsuzca erişim sağlayabiliyoruz.
Webserver002 sanal makinamızdan webserver001 makinamıza da sorunsuzca erişim sağlayabiliyoruz.
Buraya kadar olan adımları sorunsuzca yapılandırdığımıza göre load balance ve yüksek erişilebilirlik testi için iki sanal makinamız üzerinde iis rollerini kuralım. Bu kısımları adım adım işlemeyeceğim. IIS konusunda bilgisi olmayan arkadaşlar portalımızda yer alan iis makalelerine aşağıdaki link üzerinden erişim sağlayabilirler.
http://www.cozumpark.com/blogs/windows_server/archive/2012/07/15/windows-server-2012-_31013101_s-8-kurulum-ve-zellikleri-b-l-m-_3101_.aspx |
http://www.cozumpark.com/blogs/windows_server/archive/2012/07/29/windows-server-2012-_31013101_s-8-kurulum-ve-zellikleri-b-l-m-_31013101_.aspx |
IIS rolümüzü seçip kurulumu tamamlayalım.
Webserver002 makinamız içinde aynı işlemi başlatalım. Kurulum adımları sonrasında iki sanal makinamızı yeniden başlatalım ve tekrardan bu makinalara uzak masaüstü bağlantısı yapalım.
Şu anda 10.0.0.4 olan makinamızda iis sorunsuzca çalıştı.
10.0.0.5 olan sanal makinamızda da sorun yok iis sorunsuzca açıldı. Buraya kadar olan kısımları tamamlamış olduk bundan sonraki adımlarda NLB kısmını aktif edeceğiz. Bu işlem sırasında testin olumlu olup olmadığını anlamak adına iis sayfalarının içine makinaların ip adreslerini ekliyorum durumu daha net gözlemleyebilelim.
Webserver001 isimli sanal makinamızın özelliklerine girelim ve “ENDPOINT” kısmını açalım. Burada Load-Balance kısmında bir yapılandırmanın olmadığını görmekteyiz. Biz iis üzerinde bir load balance işlemi yapacağımız için 80 portu için bu işlemi gerçekleştirmek durumundayız. Bu nedenle “Add” butonuna tıklayalım.
Açılan ekranımızda daha önce oluşturulmuş olan bir endpoint noktamız olmadığı için “ADD STANDALONE ENDPOINT” seçimini yapmak durumundayız. Bu işlemi tamamladıktan sonra diğer sanal makinamız üzerinde bu işlemi yapmayacak bu adımdan sonra bir endpoint noktamız oluşacağı için bu endpoint noktasını seçiyor olacağız. à tıklayarak ilerleyelim.
Burada kullanacak olduğumuz http 80 numaralı portu seçelim ve bu portu load balance yapımızda kullanacağımız için “CREATE A LOAD BALANCED SET” kutusunu işaretleyelim. Bu şekilde bir sanal NLB oluşturmuş oluyoruz ve diğer sanal makinamızı az sonra bu yapının içine alacağız.
“CREATE A LOAD BALANCED SET” seçimini yaptığımız için bu NLB yapısına ait nitelik ekranı geldi bu ekranda bu yapıya bir isim verip işlemimizi √ butonu ile tamamlıyoruz.
Şu anda webserver001 isimli makinamızda endpoint özelliklerine bakacak olursak 80 portunda bizim belirlemiş olduğumuz ismi WEBNLB olan Load Balancer’in aktif olduğunu görmekteyiz.
Bu işlemden sonra webserver002 isimli makinamızın da endpoint ekranında 80 portu olarak NLB olarak ayarladığımız WEBNLB mimarisini göstermemiz gerekmektedir. “ADD” butonuna tıklayalım.
Biz webserver001 makinamız için ENDPOINT yapısı oluşturmamız sebebi ile bu makinamızda bu endpoint yapısını seçebilmekteyiz. Seçimimizi yapıp sonraki ekrana geçebiliriz.
Bu ekranımızda √ butonu ile işlemlerimizi tamamlayabiliriz.
Şu anda webserver002 isimli sanal makinamız içinde WEBNLB isimli load balancer’in aktif olduğunu görebiliyoruz. Buraya kadar olan işlemlerimiz şu anda tamamlandı ve test aşamasına geldik.
Yukarıda bir kısımda iis makinalarımızda yer alan iis sayfalarında test işleminde yanılmamak adına ip adreslerini iis sayfası içerisine eklediğimizi belirtmiştik. Şu anda aşağıdaki webserver002 makinamız için oluşan durumu görebiliyoruz.
Webserver01 isimli sanal makinamızdaki iis sunucusu üzerinde yine aynı işlemi gerçekleştirdik.
Bizin NLB ismimiz webserver001.cloudapp.net olduğundan iki makinaya dns ismi veya ip üzerinden gitmek yerine NLB ismi üzerinden gidiyoruz. İlk açışımızda 10.0.0.5 ip adresine sahip sanal makinamız üzerinden bize yanıt verildi.
Diğer denememizde 10.0.0.4 sanal makinamızdan bize yanıt verildi.
Bu yapıda iis üzerindeki yüke göre NLB yapısı bizi durumu müsait olan makinaya yönlendiriyor. Sanal makinalarımızdan birinde sorun olması durumunda NLB bizi hizmet kesintisine uğratmadan diğer sanal makine üzerindeki IIS platformuna gönderecektir.
Bu makalemizde azure üzerinde yer alan birden fazla farklı bileşene aynı anda bir örnek üzerinden yer vermeye ve kendimce sizlere anlatmaya çalıştım.
Umarım yararlı olmuştur. Bir başka makalede görüşmek dileği ile.