gurcanozturk.com

başka türlü bir şey benim istediğim

Netscaler HTTP Callout ve PHP ile IP adresine göre coğrafik yönlendirme yapılması

NetScaler 9.0 versiyonu ile birlikte, gelen isteklerin NetScaler arkasındaki herhangi bir Virtual Server’a, back-end sunucuya veya 3. bir servise gönderilerek işlenmesi mümkün olabiliyor. Bu işleme “HTTP Callout” adı verilmiş. (Türkçe bu kadar kötü anlatılabilirdi.)

Bir HTTP callout işlemi aşağıdaki aşamalardan oluşuyor;
Read the rest of this entry »

NetScaler ‘da Hostname tabanlı load-balance izlenmesi

NetScaler ‘da load-balance izlemek istendiğinde HTTP için HTTP ve HTTP-ECV monitorleri hazır olarak geliyor. Ancak bu monitorler hostname tabanlı değil IP tabanlı geliyor. Bu durumda Netscaler, o hostname üzerindeki web uygulamasını değil, web sunucunun durumunu kontrol etmiş oluyor. Özellikle IIS web sunucularda bir web sitesine ait applicaton pool ‘da sorun çıktığında ve o web sitesine ulaşılamadığında, web sunucu ayakta olduğu için Netscaler o web sitesine istekleri yöneltmeye devam ediyor.

Bu sorunu aşmak için NetScaler ‘da “name based load-balancing monitoring” yapılmalı. Bu işlem için;

- Web sunucuda (10.10.2.1) , web sitesinin (www.hebele.com) root dizininde status.txt dosyasını oluşturmalı, içine OK yazmalısınız.
- Cihaza SSH ile bağlanmalı, GUI’de carriage return ve newline problemleri sebebiyle, command line ‘dan aşağıdaki komutları kullanmalısınız.

add lb monitor hebele.com-HTTP HTTP-ECV -send “GET /status.txt HTTP/1.1\r\nHost:www.hebele.com\r\nConnection:Close\r\n\r\n” -recv OK -LRTM ENABLED
add dns addRec hebele.com-srv1 10.10.2.1
add server hebele.com-SRV1 hebele.com-srv1
add service hebele.com-HTTPSVC1 hebele.com-SRV1 HTTP 80 -gslb NONE -maxClient 0 -maxReq 0 -cip ENABLED Client-IP -usip NO -useproxyport YES -sp ON -cltTimeout 180 -svrTimeout 360 -CKA YES -TCPB YES -CMP YES
bind lb monitor hebele.com-HTTP hebele.com-HTTPSVC1

Netscaler ayarlarının otomatik yedeklenmesi

Citrix NetScaler cihazının config dosyası ASCII text bir dosyadan ibaret. Cihaza ait tüm ayarlar (network, virtual server, load balancing, vb.) /flash/nsconfig/ns.conf dosyasında tutuluyor. Yedekleme işlemi sadece bu dosyasının yedeklenmesinden ibaret. Bu işlemi otomatikleştirmek için ise SCP/SSH key kullanmak gerekiyor.

Yapılması gereken işlemler
Client tarafında (linux/unix veya Mac OS X) :

ssh-keygen -b 1024 -f identity -P ” -t dsa
scp identity.pub nsroot@:/root/.ssh/identity.pub

NetScaler tarafında :
(Netscaler sadece nsroot kullanıcısına SSH Key Authentication izni veriyor.)

shell
cat /root/.ssh/identity.pub >> /flash/nsconfig/authorized_keys

Bu komutlardan sonra, client üzerinde ssh nsroot@ yazarak test edebilirsiniz. Komutu denerken bir yandan da Netscaler’da

tail -f /var/log/auth.log

komutu ile ssh giriş loglarını kontrol edebilirsiniz. Büyük ihtimalle loglarda aşağıdaki hataları göreceksiniz.

Authentication refused: bad ownership or modes for directory /flash
Authentication refused: bad ownership or modes for directory /flash/nsconfig

Bu sorunları da aşağıdaki komutlarla aşabilirsiniz.

chmod 755 /flash
chmod 755 /flash/nsconfig

Daha sonra yedek alacak olan client ya da sunucuda yedekleme scriptini oluşturup, istediğiniz crontab ayarı ile otomatik olarak dosyanın yedeğini alabilirsiniz.

Backup scripti:

DATETIME=`date +%Y%m%d_%H%M`
scp nsroot@:/flash/nsconfig/ns.conf /BACKUP/netscaler/conf/ns.conf--$DATETIME

Crontab’a eklenecek satır:

# Her gece 04:00 ‘te calistir.
00 04 * * * /bin/sh /home/bkpuser/netscaler-config-backup.sh

Perl / SOAP ile Citrix Netscaler policy kontrolü

Eğer siz de load-balancing için Citrix NetScaler kullanıyorsanız cihazın yapılandırma kolaylığını ve gücünü görmüş olmalısınız. Benim en sevdiğim özelliklerinden biri de SOAP arayüzü ile XML API kullanarak yönetilebilmesi ve kontrol edilebilmesi.

Uzun zamandır denemeyi istediğim şeylerden biri de PERL veya PHP kullanarak SOAP arayüzü ile her hafta yaptığımız rutin bir cache operasyonunu otomatik hale getirmekti. Kısaca işlem, önceden hazırlanmış bir cache policy’yi otomatik olarak bir vserver’a bağlamak. (Ingilizcesi çok kolay da, Türkçe anlatması problem :) )
Read the rest of this entry »