Citrix NetScaler Load Balance Cihazı üzerinde, web sunucular için Load-Balancing tanımlanması:
Management portları üzerinden birbirlerini pingleyerek bir tanesi Primary, diğeri Secondary olarak çalışan iki adet Citrix NetScaler- 12500 cihazımız olduğunu ve 1/15 numaralı portlarını da iki web sunucunun loadbalance işlemi için kullanacağımızı söylemiştik. Ve bunun için de primary olan cihazın bu portu üzerinde ilgili network tanımlamalarını yapmıştık.
Kısaca hatırlayalım:
– Interface, VLAN ve Tag değerlerinin tanımlanarak 1/15 portunun Trunk çalışmasının sağlanması.
– Kullanıcıların, Citrix üzerinde gelecekleri Virtual IP’nin oluşturulması.
– Citrix’in, göndereceği paketlerde source IP olarak kullanacağı Subnet IP’nin oluşturulması.
Şimdi, Citrix NetScaler cihazına web yönetim ekranından bağlanacağız ve web sunucuların aşağıdaki topolojiye uygun olarak loadbalance edilmesi için gerekli tanımlamaları gerçekleştireceğiz.
En sade haliyle Load Balance işleminin gerçekleştirilmesini sağlayabilmek için, üç temel öğenin tanımlanmış olması gerekir. Bu öğeler Server, Service ve Virtual Server’dır.
Server: Load Balance edilecek her bir makine Server olarak tanımlanır. Örneğimize göre tanımlayacağımız Server öğleri şunlardır.
Server1: WebServer-1(10.10.5.203)
Server2: WebServer-2 (10.10.5.204)
Service: Load Balance edilecek her bir Server, hizmet vereceği port ile birlikte tanımlanarak bir Service öğesini oluşturur. Server ve Port ikilisi örneğimizde aşağıdaki Service’lerin oluşturulmasını gerektirmektedir.
Service1: WebServer1:80
Service2: WebServer2:80
Virtual Server: Kullanıcılardan gelen istekleri karşılayan ve kendisine üye olan Service’lere load balance eden öğedir. Örneğimize göre bir tane Virtual Server tanımlayacağız.
VirtualServer1: Service1 + Service2
Server’ların Tanımlanması
Server öğelerinin tanımlanması için Load Balancing à Servers bölümüne gidilir ve açılan pencerede Add butonuna basılır
Açılan pencerede, aşağıda gösterildiği şekilde gerekli bilgiler yazılır ve Create butonuna basılır.
Yine aynı pencerede işaretli alanlar ikinci Server için güncellenir ve tekrar Create butonuna basılır.
Close ile yeni Server oluşturma penceresi kapatılır ve Servers sayfasında oluşturulan iki öğe görüntülenir. Save ile yaptığımız ayarlar kaydedilir.
Service’lerin Tanımlanması
Örneğimize göre, iki Server öğesi için iki Service tanımımız olacak. Bunun için Load Balancing à Services bölümüne gidilir ve açılan pencerede Add butonuna basılır
Açılan pencerede, aşağıda gösterildiği şekilde gerekli bilgiler yazılır ve Create butonuna basılır.
Yine aynı pencerede işaretli alanlar ikinci Server için güncellenir ve tekrar Create butonuna basılır.
Close ile yeni Service oluşturma penceresi kapatılır ve Services sayfasında oluşturulan iki öğe görüntülenir. Save ile yaptığımız ayarlar kaydedilir.
Virtual Server’ın Tanımlanması
Örneğimize göre, iki service load balance edilecek ve bunun için bir tane Virtual Server öğesi tanımlamamız gerekecek. Load Balancing à Virtual Servers bölümüne gidilir ve açılan pencerede Add butonuna basılır.
Açılan pencerede, aşağıda gösterildiği şekilde gerekli bilgiler yazılır ve Create butonuna basılır.
Close ile yeni Virtual Server oluşturma penceresi kapatılır ve Web-Sayfasi_HTTP isimli yeni Virtual Server öğesi Virtual Servers sayfasında görüntülenir. Save ile yaptığımız ayarlar kaydedilir.
Şimdiye kadar yaptığımız tanımlamalarla,
kullanıcı makinelerinden, 10.10.5.204 IP’li Virtual Server’a gelen HTTP (port:80) isteklerinin,
source IP’si 10.10.5.204 olacak şekilde,
iki web sunucusundan uygun olana iletilmesi sağlanabilecektir.
Load balance işleminde uygun olmanın koşulu, load balance metoduna göre değişmektedir.
NetScaler’ın varsayılan load balance metodu Least Connection metodudur. Web-Sayfasi-HTTP isimli Virtual Server’ımız için NetScaler’ın atadığı load balance metodu Load Balancing à Virtual Servers bölümünde görülmektedir.
Least Connections metodu, bir servis üzerinde aktif işlem hareketlerini en doğru şekilde tanımlayan ve yükü akıllıca en doğru şekilde dağıtabilen yöntemdir.
Farklı load balance metotlarını görmek ya da default metodu değiştirmek için Web-Sayfasi-HTTP isimli Virtual Server’ımız üzerinde çift tıklanır. Açılan pencerede Method and Persistence sekmesine gidilir.
Bu sayfada, LB Method başlığı altındaki Method satırında, açılır pencere kullanılarak farklı load balance metotlarını görmek ve default metodu değiştirebilmek mümkün olmaktadır.
Yapmamız gereken bir işlem kaldı. O da Persistence tanımıdır.
Session Persistence, bir istemcinin bütün isteklerinin, belirli bir sunucuya yönlendirilmesini sağlayacak şekilde konfigürasyon imkanı sağlar.
Yapılandırdığınız load balance metoduna bağlı olarak load balance yapılırken,
kimi zaman, e-ticaret sitelerindeki Alış-Veriş Sepeti gibi uygulamalar,
bir istemciyi, takip eden tüm isteklerinde aynı sunucuya yönlendirmeyi mecbur tutabilirler.
Bu durumlarda Session Persistence, yük dağıtım yönteminin ne olduğuna bakmaksızın bir istemciden gelen tüm istekleri belirli bir sunucuya yönlendirmeyi sağlayabilir.
Not: Session Persistence, Persistent TCP connections ile aynı değildir. Persistent TCP connections, Layer- 4’te kullanılırken, Session Persistence, kullanıcıları, kullanıcı bilgilerinin yüklü olduğu sunucuya göndermek için layer-7’de çalışır.
Persistence, varsayılan olarak etkin değildir. Bunu, Load Balancing à Virtual Servers bölümünde görebiliriz.
Persistence tanımlamak için, Web-Sayfasi-HTTP isimli Virtual Server’ımız üzerinde çift tıklanır. Açılan pencerede Method and Persistence sekmesine gidilir.
Görüldüğü gibi Persistence ve Backup Persistence tanımlamaları etkin değildir. Etkinleştirmek ve farklı persistence seçeneklerini görmek için açılır pencereler kullanılır.
Primary Persistence için COOKIEINSERT seçeneğini,
Backup Persistence için de SOURCEIP seçeneklerini etkinleştirmiş olalım.
Persistence metodu olarak CookieInsert seçildiğinde, NetScaler, kullanıcıya, bir HTTP cookie ekleyerek response’ları gönderir. Cookie, kullanıcının sonraki isteklerinin, doğrudan ilk isteği karşılayan sunucuya gönderilmesi için kullanılır.
Cookie, istemci request’lerinin yönlendirildiği service’in IP adresini ve port numarasını içerir.
Eğer bir istemci cookie tutamazsa, istemcinin sonraki cookie’siz request’leri kabul edilmez. Yapılandırma metoduna bağlı olarak load balancing’e karar verilir.
CookieInsert persistence, sistem kaynaklarını kullanmadığı için sınırsız sayıda istemciyi destekler.
CookieInsert persistence tanımlamasında kullanılan Time-out değeri, bir oturumun aktif olarak kullanılmama süresidir. Time-out değeri O olursa, oturum, asla Citrix tarafından sonlandırılmaz fakat oturumun kapanış süresi istemcinin kullandığı yazılıma bağlıdır ve genellikle istemci yazılımı kapandığında, cookie’lerinde kullanım süresi dolmuş olur.
Backup Persistence metodu olarak Source-IP seçildiğinde, Primary method’da yaşanan bir problem durumunda, persistence oturumunun sürdürülebilmesi için, Backup Persistence kullanılır. Örneğin, kullanıcıların web browser’ı Cookie desteklemiyorsa, persistence, cookie yerine Source- IP (kullanıcı makinelerinin IP’si) üzerinden sağlanacaktır. Bu durumda, NetScaler, tanımlanmış load-balancing metoduna bağlı olarak, aynı IP adresinden gelen tüm request’leri, ilk request’i alan sunucuya yönlendirir.
Kullanıcılarla NetScaler arasında, trafik, bir NAT cihazından geçiyorsa, NetScaler’a gelen tüm isteklerin kaynak IP adresleri, tek bir IP gibi görünecektir. Bu durumda persistence metodu olarak Source-IP verimli kullanılamaz. Çünkü çok fazla kaynaktan request’ler gelmesine rağmen, trafik aynı sunucuya yönlendirilecek.
Source IP adreslerinin persistence oturumları bir persistence tablosunda tutulur ve bu durum sistem kaynaklarını kullanır. Persistence tablosunda maksimum 256.000 oturum için kayıt tutulur. SourceIP persistence tanımlamasında kullanılan Time-out değeri, bir oturumun aktif olarak kullanılmama süresidir.
Time-out değerine ulaşıldığı durumda, oturum koparılır ve sunucu tercih edilen load-balancing metoduna göre, oturumu kaldığı yerden devam ettirir.
Primary persistence metodu olarak CookieInsert ve Backup persistence metodu olarak SourceIP seçilirse, her bir metot için farklı time-out değerleri atanabilir.
Gelelim NetScaler üzerinden yayınlanan sayfaya erişmeye.
Bir kullanıcı web browser’ı üzerinde, NetScaler’da tanımladığımız Virtual Server IP’sine erişmeyi denediğinde erişim gerçekleştirebiliyor olmalıdır. Bunun için http://10.10.5.204 adresi kullanılmalıdır.
Umarım faydası olmuştur.
Hoşçakalın.