Netscaler Load Balancing

Load balancing; sunuculara gelen client isteklerinin yükünü sunuculara dağıtma işlemidir. Netscaler, client isteklerinin dağıtımı işlemini yaparken belirli bir sıra, metod ve kayıt göz önünde bulundurularak yapmaktadır. Load Balance işleminin yapılabilmesi için Netscaler üzerinde 3 temel tanımın yapılması gerekmektedir. Bunlar ; Virtual Server , Service ve Server tanımlarıdır.

Virtual Server – (VS)

Virtual Server; client isteklerinin geldiği ve kendisine bind edilmiş sunuculara client isteklerini ileten, ne şekilde iletileceğinin kararını veren sanal sunucudur.

Tanımdan da anlaşılacağı gibi,  clientlar bütün isteklerini virtual server (VS) lara iletirler,  VS ler ise gelen client isteklerini altında bulunan sunuculara belirlenen metod ve persistence ayarına göre iletirler. Client lar VS lere VS in IP, port ve protokol bilgisine uygun olmayan istekler gönderdiği durumda VS ler client isteklerini sunucu tarafına iletmezler.

Service

Service; fiziksel sunucuların IP-Port-Protokol olarak ihtiyaca uygun olarak  tanımlanmış  hali ya da sunucu üzerinde çalışan bir uygulamanın Netscaler üzerinde tanımlanmış halidir.

Bir fiziksel sunucu için birden çok service tanımlanabilmektedir.  Örneğin; bir sunucuda HTTP, FTP ve birçok farklı TCP uygulama çalışıyor olabilir. Bu uygulamaların her biri için aynı IP – farklı port ve protokol den oluşmak kaydıyla farklı farklı service ler oluşturulabilmektedir.

Service ler, yukarıda bahsedilen şekilde tanımlandıktan sonra VS lere bind edilerek VS üzerinden client isteklerinin sunuculara gelmesini ve yanıtların geri iletilmesini sağlamaktadır.

Virtual Serverların çalışma mantığı Şekil-1 de basitçe gösterilmiştir. Bu örnekte Netscaler üzerinde 10.10.0.3 ipli Virtual Server oluşturulmuş ve bu virtual server a 10.10.0.1 ve 10.10.0.2 ipli serverların ilgili port ve protokolleri seçilerek oluşturulmuş servisler bind edilmiştir. Netscaler 192.168.10.44 ipli clienttan 10.10.0.3 ipsine yapılan istekleri servisleri arkadaki sunuculara  tanımlı olan method ve persistence kurallarına uygun olarak dağıtır.

Şekil 1 - Load Balance Çalışma Mantığı

Şekil 1 – Load Balance Çalışma Mantığı

Server

Server; Netscaler tarafından kullanılan ya da trafiğin yönlendirildiği gerçek sunucuları temsil etmektedir. Netscalerda bir service oluşturulduğunda otomatik olarak aynı Ip adresi ile bir server oluşturulur.

Şekil 2 - Service & Server

Şekil 2 – Service & Server

HTTP LOAD BALANCING

Http Load Balancing client lardan gelen HTTP isteklerini sunuculara dağıtma işlemidir. HTTP isteklerini karşılayacak Virtual Server ve bu server a bind edilecek servicelerin oluşturulmasını adım adım aşağıda anlatılacaktır.

Virtual Server Oluşturma

1.Load Balancing –>Virtual Server sekmesine tıklanılır.

2.Add butonuna tıklanılarak virtual server oluşturma sayfası açılır.

Şekil 3 - Virtual Server Oluşturma

Şekil 3 – Virtual Server Oluşturma

UYARI: Üzerinde sarı ünlem olan özellikler disable durumunda demektir. Load Balancing sekmesinde de sarı ünlem işareti görüyorsanız sekme üzerinde sağ tık yapıp bu özelliğin enable edilmesi gerekmektedir.

Add butonuna tıkladıktan sonra virtual server ı oluşturduğumuz sayfa açılacaktır.

3.Name kısmına Virtual Server a vermek istediğimiz ismi yazıyoruz.

4. Ip Address kısmına Virtual Server’a vermek istediğimiz ip adresini giriyoruz.

5. OK butonu ile Virtual Server tanımını tamamlıyoruz.

NOT: Protokol kısmında oluşturmak istediğimiz Virtual Serverın özelliklerine göre değişik protokoller seçebiliyoruz. Drop down listte virtual server oluşturabileceğimiz tüm protokolleri görebilirsiniz. Biz HTTP virtual server oluştaracağımız için protokol kısmında bir değişiklik yapmadık.

Şekil 4 - HTTP Virtual Server Oluşturma

Şekil 4 – HTTP Virtual Server Oluşturma

Virtual Serverı  tanımladıktan sonra bu virtual servera load balance yapılacak service leri eklememiz gerekmektedir. Bunun için aşağıdaki şekilde bir servis oluşturarak virtaual servera bind edeceğiz.

1. Load Balancing –> Services sekmesine tıklanılır.

2. Add butonuna tıklanılarak service oluşturma sayfası açılır.

3. Name Kısmına service e vermek istediğimiz ismi yazıyoruz.

4. Ip Address kısmına service e vermek istediğimiz ip adresini giriyoruz.

5. Bu service için kullanmak istediğimiz profile seçiyoruz. Drop down liste kullanabileceğimiz bütün protokoller yer almaktadır. Biz HTTP için tanım yaptığımız için HTTP seçeneğini değiştirmiyoruz.

6. Bu servis için kullancağımız port bilgisini giriyoruz. Protokollerin kullanıkları port bilgileri protokü seçinde bu Alana yansımaktadır. HTTP 80, FTP 21, SSL 443 vs.

7. OK seçeneği ile servisimizi oluşturuyoruz.

load balancing

Şekil 5 – Service Oluşturma

 

Şekil 6 - Service Oluşturma 2

Şekil 6 – Service Oluşturma 2

Bu işlemden sonra oluşturduğumuz servisi virtual servera bind ediyoruz. Öncelikle oluşturduğumuz virtual serverin üzerine sağ tıklayıp edit seçeneğine tıklıyoruz. Şekil -7 deki ekranda kırmızı ile işaretli alana  tıkladığımızda Şekil-8 deki ekran sağ tarafta karmıza çıkıyor. Bu ekranda kırmızı kutunun içindeki alana tıkladığımızda  var olan bütün servisler karşımıza çıkıyor. İlgili servisi seçip OK’ e tıkladığımız zaman Şekil-8 deki sayfa select service kısmı seçtiğimiz service olacak şekilde tekrar karşımıza geliyor. Burada Bind seçeneğine tıkladığımız zaman Şekil-7 deki ekrana dönüyoruz ve DONE seçeneği ile virtual server servisimizi bind ediyoruz.  Bu işlemlerden sonra en basit haliyle bir virtual server oluşturmuş oluyoruz.

Şekil 7 - Virtual Servera Service Bind Etme

Şekil 7 – Virtual Servera Service Bind Etme

 

Şekil 8 - Virtual Servera Service Bind Etme 2

Şekil 8 – Virtual Servera Service Bind Etme 2

Method & Persistence

Virtual serverlar load balance yaparken Method & Persistence ayarlarına göre aksiyon alırlar.

Method

Virtual server altında birden fazla service tanımlanmışsa kendine gelen istekleri load balance ederken tanımlanan method configini baz alarak load balancing işlemini gerçekleştirir.

En sık kullanılan Load Balance Methodları aşağıdaki gibidir ;

  • Round Rubin : En basit load balance metodudur. Bu metotta sunucular üzerindeki yüklere bakılmaksızın istekleri sırasıyla 1.,2.,3. Sunuculara gönderir. Son sunucuya da istek gönderildikten sonra gelen isteği 1 numaralı sunucuya gönderir. Eğer seçilen methoda göre sunucuların response ları aynı değerdeyse denge bozulana kadar round robin özelliğiyle trafiği load balance eder.
  • Least Connection : Aktif transaction sayısı az olan sunucuya trafiği aktarır. Aktif transaction;response bekleyen request demektir. Netscaler default load balance yöntemi least connectiondır.
  • Least Response Time : En kısa sürede cevap dönebilen sunucuya isteği ileterek load balance yapma mantığıyla çalışmaktadır. En fazla kullanılan methottur.

Persistence

Persistence; bir sunucudan istekte bulunan bir client ın 2. isteğini Netscaler a gönderdiğinde isteğinin yine aynı sunucuya iletilmesini sağlayan parametredir. Persistence sunucu tarafında session bilgisi tutuluyorsa yapılması gereken bir ayardır.

En çok iki adet persistence ayarı kullanılmaktadır. Bunlar;

  • Source IP: Clientın IP bilgisini time-out süresi boyunca tutarak persistence in sağlanmasıdır.  Eğer Sunucu tarafında aynı IP li sunucu varsa ya da clientlar tek bir IP den NAT lanarak  geliyorsa  bu persistency efektif değildir; çünkü istekler farklı clienttan geliyor olsa bile her defasında aynı  IP gözüktüğü için aynı sunucuya gönderilecektir.
  • Cookie Insert: Client a atanan cookie bilgisiyle persistence in sağlanmasıdır. Time-out süresi boyunca cookie bilgisini  Eğer  time-out  değerine  0 girilirse session netscaler tarafında  hiçbir zaman expire edilmez; fakat expire zamanı client yazılımına da bağlı olduğundan client browserini kapattığı zaman cookie expire olmuş olur.

Method & Persistence Çalışma Mantığı

Birden fazla service tanımlanmış bir virtual serverda hem method hem de persistence ayarının olması en ideal konfigürasyondur. Bir virtual server da hem method hem de persistence ayarı yapıldığındaki çalışma mantığı şöyledir:

Virtual server a ilk defa istek gönderen client lar belirlenen method a göre bir service e atanır. Persistence ayarına göre (persistence type, time-out) persistence tablosunda kayıt altına alınır. Kayıt altına alınan clientların 2. ve sonraki istekleri ise method a bakılmaksızın persistence tablosundaki kayıt referans alınarak yine aynı service e iletilir.

Ek Load Balance Çözümleri

Yukarıda klasik Load Balance konfigürasyonlar işleminden bahsedilmiştir. Bu kısımda load balance ile ilgili alınması gerekli  bazı önlemlerden bahsedilmektedir.

Virtual serverlar altında bulunan servisler sunucuların down olması ya da networksel problemlerden dolayı down olabilmektedir. Netscalerda virtual serverların down olması durumunda dahi client isteklerinin karşılanması veya clientların başka bir hata sayfası ya da  URL ‘e yönlendirilmesi gibi aksiyonların alınmasını sağlayan yöntemler bulunmaktadır. Bunlar:

  • Redirect URL: Virtual server ın down olması durumunda clientların belli bir URL’e yönlendirilmesi için kullanılmaktadır. Genellikle bu kısım bir hata sayfasına yönlendirme yapmak için kullanılmaktadır.
  • Backup Virtual Server: Adından da anlaşılacağı gibi virtual serverın down olması durumunda clientların başka bir virtual server a yönlendirmek için kullanılır.

NOT: Bir virtual server a hem Redirect URL hem de Backup Virtual Server ayarı girilmişse virtual server down durumdayken ilk önce Backup Virtual Server a yönlendirme yapılır. Bu virtual server da down ise Redirect URL devreye girer ve client lar ilgili URL’e yönlendirilir.

Bu işlemleri virtual server altında Protection tabı altında yapıyoruz. Aşağıda gördüğümüz 1 numaralı alana yönlendirme yapılacak URL adresini yazıyoruz. 2 numaralı alandaki drop-down listte ise Backup Virtual Server ı seçiyoruz.

Şekil 9 - Redirect URL & Backup Virtual Server

Şekil 9 – Redirect URL & Backup Virtual Server