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 🙂 )

Netscaler SOAP arayüzüne erişmek için sadece NetScaler WDSL’e ve SOAP arayüzü adresine ihtiyacınız var. SOAP arayüzü adresine http://[netscaler-ip]/soap/ şeklinde istek gönderilebiliyor.

Otomatikleştirme scriptine gelince, aşağıdaki perl scripti işinizi görecektir. Scriptin cron ile çalışmasını ayarlayarak her şeyi otomatik hale getirmiş olursunuz. SOAP bağlantısı için gerekli perl modüllerini http://search.cpan.org adresinden bulabilirsiniz.

#!/usr/bin/perl

# SOAP ile baglanti icin gerekli perl modulleri.
use HTTP::Cookies;
use SOAP::Lite;
import SOAP::Data ‘name’;

# Ayarlar
my $option = shift;
my $NS = “10.10.1.1”;
my $username = “nsoperator”;
my $password = “operator_password”;
my $webhost = “web.example.org”;
my $policy = “WEB-CACHE”;
my $priority = “100”;
my $gotoexp = “END”;
my $type = “RESPONSE”;

my $cookies = HTTP::Cookies->new(ignore_discard => 1, hide_cookie2 => 1);
my $soap = SOAP::Lite -> proxy(“http://$NS/soap”, cookie_jar=>$cookies);
my $result = $soap->login( name(‘username’=>$username), name(‘password’=>$password) ) ->result;

if ($option eq ‘BIND’)
{
$result = $soap->bindlbvserver_policy(name(‘name’ => $webhost) , name(‘policyname’ => $policy) , name(‘priority’ => $priority) , name(‘gotopriorityexpress
ion’ => $gotoexp), name(‘type’ => $type) ) ->result;
$operand = “enabled”;
}
elsif ($option eq “UNBIND”)
{
$result = $soap->unbindlbvserver_policy(name(‘name’ => $webhost) , name(‘policyname’ => $policy) , name(‘type’ => $type) ) ->result;
$operand = “disabled”;
}
else
{
# Cache isleminin tipini secin, bind/unbind ?
print “Usage : nsmon [ BIND | UNBIND ]n”;
exit;
}
$message = $result->{‘message’};

# Policy atama islemi basarili degilse admine mail gonder.
if ($message ne “Done”)
{
print “Hmmm…i sense a disturbance in the force”;
system(“mail -s CACHE_BIND_OPERATION_ERROR [email protected] < /tmp/error.txt"); } $result = $soap->logout()->result;

Crontab ‘a eklenecek ayarlama; her perşembe saat 19:00 da cache ayarını aktif et, her perşembe saat 23:00’ da cache ayarını deaktif et.

# WEB-CACHE operation
00 19 * * 4 /usr/bin/perl /usr/local/bin/web_cache_operation.pl BIND
00 23 * * 4 /usr/bin/perl /usr/local/bin/web_cache_operation.pl UNBIND

gurcan Written by:

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *