Bu makalemiz de sizlere IT çalışanlarının el kitabı ITIL, ISO 22301 ve BS 25999 standartlarına göre “İş/Servis Sürekliliğini” sağlama kapsamında Microsoft’un çözümlerinden “Windows Network Load Balancing” servisini diğer Türkçe kaynaklarda bulamayacağınız bilgileri Çözümpark ayrıcalığıyla eğitim tadında 2 bölümde anlatılacağım.
Aşağıda linkini verdiğim makale ve videolarımda İş/Servis sürekliliğinin ne olduğu detaylı olarak anlatıldığından burada tekrar olmaması için değinilmemiştir.
Makale:
Video:
http://tv.cozumpark.com/video/645/BS25999-ve-iSO22301-is-Surekliligi-Yonetimi-Standardi
Network Load Balancing (NLB); IIS, RDS, Exchange gibi birbirinin aynı işi yapan ve birbirinin eşi birden fazla sunucu arasında IP tabanlı hem iş sürekliliğinin sağlanması hem de gelen trafiğin sunucular arasındaki yük dağılımının gerçekleştirilmesini sağlayan Windows Servisidir.
NLB servisini anlatmaya başlamadan önce DNS Round Robin’i kısaca hatırlayıp farklarını inceleyelim. DNS Round Robin; DNS üzerinde aynı işi yapan ve birbirinin eşi birden fazla sunucunun ip adresinin belirlenecek ortak bir isme karşılık tek tek oluşturulması yapılan Load Balance yöntemidir. Aşağıdaki resimde EgitimRDSNLB ismi için RDS sunucularımın ip adresi girilmiştir. DNS servisi kendisine sorulan EgitimRDSNLB ismine karşılık sırayla RDS sunucularımın ip adresini vermektedir. Bu şekilde RDS sunucularımın kullanımına imkan sağlamış oluyorum.
NLB ile DNS Round Robin’in arasındaki en büyük fark, DNS üzerinde oluşturulan her bir kaydın TTL (Time to Live) süresi boyunca istekte bulunan client’ın hep aynı sunucuya gidecek olması. Buda ister istemez sunucularımız arasında dengesiz bir kullanıma neden olacaktır.
İlk olarak Windows Server 2000 ile hayatımıza giren, Server 2008 ile majör değişikliğe uğrayan Server 2012R2 ile algoritması iyileştirilen NLB servisi, teknik olarak en az 2 en fazla 32 sunuculuk grup yapılarak çalışabilir. İsterseniz bu sunucuların bir kısmı sanal olabileceği gibi Server 2012 veya 2012R2’de olabilir. NLB Cluster gurubu içerisindeki maksimum sunucu sayısını belirleyecek ana etken; gelen / işleyen trafiğin durumudur. Eğer trafik yoğunluğunuz fazla ise belirtilen sunucu aralığında olsa bile NLB servisi doğru yanıt vermeyecektir. Bu durumda fiziksel donanım çözümlerinin kullanılması doğru tercih olacaktır.
Cluster, genel bir kavram olup network, firewall ve tüm sistem sürekliliği topolojilerinde kullanılmaktadır. Kelime anlamı olarak küme / kümelemeyi ifade etmektedir. Lise dönemindeki matematik dersinden hatırlayacağımız gibi birbirinin benzeri veya dengi nesnelerin bir araya getirilerek oluşturulan topluluk bütünlüğüne denir. Aşağıdaki resimde 2 farklı küme örneği verilmiştir. Bunlardan biri WEB hizmeti için oluşturulan IIS sunucularını diğeri ise Terminal hizmeti için RDS sunucularının kümesini yani NLB yapılarak Cluster haline getirilmiş şeklini göstermektedir.
Kelime anlamı düğüm olan NODE, Cluster içerisindeki her bir sunucuya verilen isimdir. Konunun daha iyi anlaşılması için aşağıda hem RDS hem de IIS sistemi için hazırlamış olduğum örnek topoloji resmi üzerinden anlatıma devam edeceğim.
Windows NLB servisini 3 temel özelliği bulunmaktadır:
a) Cluster içerisindeki sunucularda eşit yük oluşumunu temin etmek.
b) Cluster içerisindeki sunucular arasında eğer donanımsal olarak fark varsa en hızlı donanıma daha çok yük gönderimini sağlamak için sunucu cevap sürelerinin incelenip değerlendirmesini yapması. İlerde detaylı olarak anlatılacağından burada bir örnekle konuyu anlatalım. Yukarıdaki WEB hizmeti için oluşturulmuş farm içindeki sunucularınızdan biri servis sürekliliğini sağlama adına düşük konfigürasyonlu sanal sunucu yapılmıştır.
c) Erişimi kesilen sunucuya yönlendirmenin durdurulması gelen yeni istekleri diğer sunuculara yönlendirmesidir. Erişim problemi düzeldikten sonra diğer sunucularla eşitlenene kadar gelen yeni isteklerin yönlendirmesi yapılır.
NLB servisinin çalışabilmesi için bir isim ve ip adresine ihtiyacımız bulunmaktadır. Eğer dışarı hizmet veren bir web servisi için servis sürekliliği yapılacaksa hem domain adresimizin tutulduğu DNS üzerinde dış network ip adresimize karşılık A host kaydı açtırmamız gerekiyor hem de iç DNS üzerinde NLB Cluster’ımız karşılık gelecek olan belirlediğimiz ip adresine karşılık belirleyeceğimiz isme ait A host kaydı oluşturmalıyız. WEB hizmeti için oluşturulan Topolojide görüldüğü üzere dış ve iç erişim için kullanılan isim farklı olabileceği gibi aynı da olabilir. Buda tanımda belirtmiş olduğum IP tabanlı erişimi anlatmaktadır.
NLB servisi 2. network katmanında çalışmaktadır. Bu nedenle Cluster’ı ilk oluşturduğumuz sunucumuz aktif olduğu müddetçe sunucunun MAC adresi aynı zamanda NLB servisi için oluşturulan Cluster’ımiz için belirlenen ip adresine karşılık gelen MAC adresi olacaktır.
Resimde kırmızı oklarla gösterilen alan dışarıdan kendi networkümüze olan trafiği göstermektedir. Dışarıdan erişimde yarı kontrollü alan olan DMZ bölümünde web sunucularımız Windows NLB servisi ile load balance edilerek çalışmaktadır. Yeşil oklarla gösterilen trafik ise iç netwokümüz içindeki RDS sunucularımızı Windows NLB servisi ile load balance yapılarak erişimi göstermektedir.
NLB servisinde node’ların önünde duran ana bir node bulunmamaktadır. Cluster’a dahil node’lar eşit seviyededir. Sadece Cluster IP adresine sahip olan node gelen tüm istekleri karşılayıp belirlenen kural dizilimine göre eğer başka node sonlandırılması gerekiyorsa direk yönlendirme yaparak load balance sürecini gerçekleştirir. Cluster içerisindeki tüm node’lar birbirini her saniye hizmet alabilirliğini kontrol ederler. Bu işlemin adına kal atışı anlamına gelen heartbeats denir.
Eğer node’lardan biri veya bir kaçına yapılan sağlık kontrollerinde arka arkaya 5 kere sorun tespit edildi ise node devreden çıkarılır. Sağlık durumu iyi olduktan sonra belirlenen kural dizilimine göre ya direk hizmete sokulur veya Admin’in kontrolüne bırakılır. Default ayarlarında node otomatik olarak devreye sokulur. Fakat RDS, Exchange gibi sunucunun ayağa kalktıktan sonra neden kapandığı araştırması gereken servislerde önerilen sunucunun incelenmesi ve Admin tarafından uygun görmesi halinde tekrardan Network Load Balancing Manager üzerinden aktif edilmesidir. Makale dizimizin ikinci bölümünde bu konu gösterileceğinden daha fazla detaya girmiyoruz.
IIS ve Exchange gibi hizmetlerde node’da oluşan bir problem kullanıcıya az etkisi olurken RDS gibi üzerinde işlem yapılan anlıkta olsa temp veri bulunduran hizmetler de kesintinin kullanıcıya yansımaması için Roaming Profile ve Folder Redirection çözümleri uygulanmalıdır.
Hangi durumlar da NLB kullanılmaz? Cluster yapılacak yapı içerisindeki node’lar da işleyişe yönelik bilgi tutuluyorsa NLB yapılamaz. Mesela; Kullanıcılarınızın sunucu üzerindeki alanlara veri kaydetme hakkı varken Roaming Profile ve Folder Redirection çözümü uygulanmadan NLB yapılırsa kullanıcı farklı sunuculara erişeceğinden kaydettiği verilerine ulaşamayacağından bu durum kullanıcı şikâyeti olarak yansıyacaktır. Aynı şekilde database sunucuları ve içinde kullanıcı bazlı dinamik veri oluşturan web sunucuları da NLB yapılamaz.
Server 2012 R2 ile birlikte NLB Servisi PowerShell üzerinden yönetimi daha kolay ve başarılı hale geldi. Hatta RSAT üzerindeki “Network Load Balancing Manager” ile yapılamayacak bir çok iş PowerShell ile yapılabilmekte. Bu yüzden temel ve en çok kullanılan komutları sizler için çıkarttım.
Windows PowerShell NLB Nouns |
Description |
Windows PowerShell Verbs |
NlbClusterNode |
Use to manage a cluster node. |
Add, Get, Remove, Resume,Set, Start, Stop,and Suspend |
NlbClusterNodeDip |
Use to configure the cluster node’s dedicated |
Add, Get, Remove, |
NlbClusterPortRule |
Use to manage port rules. |
Add,Disable, Enable,Get, |
NlbClusterVip |
Use to manage the NLB cluster’s virtual IP. |
Add, Get, Remove, |
NlbCluster |
Use to manage the NLB cluster. |
Get,New, Remove, Resume,Set, Start, Stop, and Suspend |
NlbClusterDriverInfo |
Provides information about |
Get |
NlbClusterNodeNetworkInterface |
Use to retrieve information |
Get |
NlbClusterIpv6Address |
Use to configure the |
New |
NlbClusterPortRuleNodeWeight |
Use to set node weight on |
New |
Umarım makalem faydalı olmuştur. Bir sonraki makalemizde görüşmek üzere.