Monday, March 25, 2013

Juniper wonders the impact that they cause i assume.

Domain Namejuniper.net ? (Network)
IP Address66.129.232.# (Juniper Networks)
ISPJuniper Networks
Location
Continent : North America
Country : United States  (Facts)
State : Massachusetts
City : Carlisle
Lat/Long : 42.5329, -71.352 (Map)
LanguageEnglish (U.S.)
en-us
Operating SystemMacintosh MacOSX
BrowserFirefox
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0
Javascriptversion 1.5
Monitor
Resolution : 1440 x 900
Color Depth : 24 bits
Time of VisitMar 25 2013 6:13:29 pm
Last Page ViewMar 25 2013 6:13:29 pm
Visit Length0 seconds
Page Views1
Referring URL
http://www.google.co...bA&bvm=bv.44158598,d
Search Engine
google.com
Search Words
juniper psn-2013-03-868
Visit Entry Pagehttp://tolgaercan.bl...niper-problem-3.html
Visit Exit Pagehttp://tolgaercan.bl...niper-problem-3.html
Out Click
Time ZoneUTC-5:00
Visitor's TimeMar 25 2013 11:13:29 am

Visit Number 6,159


Neyse Kaldırdım sitemden Juniper Problemlerini en azından kendileri biliyor cosmetic error müş.

https://puck.nether.net/pipermail/juniper-nsp/2013-March/025748.html

We have also tried to deploy mixed mode between 4550 and 4200 for an ISP and had serious issues with arp replies not being forwarded from the 4200 to hosts on the 4550. 
demiş adam
 
 

Wednesday, March 20, 2013

NetApp Flashpool Gücü 10 kaplan gücünde

Evet 90 volume (20 lun + 70 nfs share) şeklindeki aggr lerden 10 kaplan gücünde yazmada okumada ölümcül faydalanıyoruz. Normal  20*15k disklerden oluşan bir aggr den nfs ile mysql data kısmına verilen bir nfs alan ile (10gbit) olan 400 qps civarı olan update sql işlemi, flashpool ile birlikte 1400 - 1800 aralığına varmış bulunuyor. Sadece okuma değil yazma içinde muazzam bir faktör slave replikasyonlarımızda göz le görülür bir hız ile de kendini bize göstermiş oldu. Slavelerin gecikme oranları major bir operasyon olmaması durumunda(300gb lık bir tabloya alter atmak gibi) sorunsuz ve mükemmel şekilde çalışıyor.

Flashpool ile PAM arasındaki en major 2 fark birinde ha yapısı cluster failoverda korunuyor dolayısı ile pamdaki warm up perioda gerek kalmıyor, 2'nci farktör ise owerwrite operasyonlarında da major ssd cache kullanımını pattern olarak yaklaması. İllaha birebir aynı data aynı block yazım şeklinde olması gerekmiyor, pattern yakın olduğunda dahi ssd write cache de kullanılıyor akabinde 15k lara commitleniyor cache hit olan blocklar için.

En kral sonuçları alabilmeniz için açıkcası bizim warm up periodumuz 1 hafta sürdü. Bu 1-1.5 haftayı geçirmeden sakın karar vermeyin lakin bu olaydan sonra 5k non stop io (4.1KR/0.9K W) 4 Gbit (500 Mgbyte/sec) çalışan nfs alandaki korunan latency dahi 0.5 msec üstüne çıktığını daha göremedim.

Prodda çalışan static content klasörlerinde ki 15 milyon dosya yarım terabyte data üstünden artı 1 milyona yakın klasör içinde prod non stop bu yükle çalışırken çöksün diye denediğim for döngüleri ile gerçekleştirdiğim abuk sabuk bash scriptler dahi ne latency arttırabildi nede çökerte bildi.

Açıkcası benim düşüncem OLMUŞ. Harbiden çok başarılı ve iyi.

NetApp'a karşı birtek dileğim ise, Flashpool kısmı için historical data tutamamam. Son Sürüm DFm 5.1 'e geçmiş dahi olsam pam ile alakalı historical data tutma biraz customization ile mümkün olsada ne yazık ki flashpool ile alakalı bu seçenek mevcut değil. Sadece system managerdan anlık veriler izlenebiliyor fakat ben illaha historical data tutmak istiyorum benim gibi düşünenlerde muhakkak olacaktır.

https://communities.netapp.com/thread/26784

Yani Demiş ama saçma bence; OCUM 5.1  doesnt report an aggr as Flashpool even if it is. The next version OCUM 5.2 which is currently available in BETA OnCommand Unified Manager 5.2 Beta Program reports an aggrs attribute of flashpool. But even that doesnt collect any stats related to FlashPools.

Şuanda sadece aşağıdaki gibi System manager'dan 20 saniyelik intervaller ile cache hit miss ratiolar ve total opları görebiliyoruz. Historical tutma seçeneği maalesef burda yada OCUM(DFm) 'de yok.

Not: Bu özellik gelir gelmez yazıyı değiştireceğim ve bu kısım desteğinin geldiğinide güncelleyeceğim.

Kısacası Olmuş NetApp! Thanks.



Saturday, March 16, 2013

F5 Bigip Örnek(Example) Irules


F5 Irule örnekleri ;

Not: Domain adları atmasyondur, domain isimlerini ve urileri değiştirdim.

Rule - 1
*********************************************************************************
User-Agent'a göre ayrı pool

when HTTP_REQUEST {
  if { [HTTP::header User-Agent] contains "Chrome" } {
    pool xyz_Chrome
#Log gerekirse alttaki diez uçar.
#log local0. "Chrome Redirected: [HTTP::header "User-Agent"] Chrome Redirected"
  } else {
    pool xyz_Pool
  }
}

*********************************************************************************

Rule - 2
*********************************************************************************
Uri'ye göre pool switch

when HTTP_REQUEST {
  switch [HTTP::host] {
    "www.xyz.com"
{
      switch -glob [HTTP::uri] {
        "/images/*"  { pool xyz_img }
       }
     }
   }
}

*********************************************************************************


Rule - 3 & 4
*********************************************************************************
Vserver'a default pool assign edilmediği durumlarda direkt irule ile çalışmak. Backside http pooluna. örneklerde.

#Http Rule http vserver'a
when HTTP_REQUEST {
 switch [HTTP::host] {
  "xyz.com" { HTTP::redirect http://www.xyz.com[HTTP::uri] }
  "www.xyz.com" { pool xyz_pool }
 }
}

#Https Rule ssl vserver'a
when HTTP_REQUEST {
 switch [HTTP::host] {
  "xyz.com" { HTTP::redirect https://www.xyz.com[HTTP::uri] }
  "www.xyz.com" { pool xyz_pool }
 }
}
*********************************************************************************

Rule - 5
*********************************************************************************
Uri string ile başlayana redirect. Not: Bunun önünde domain adlarını www subdomain'ına redirect eden başka bir rule var. Ondan pass edip buna gelir

when HTTP_REQUEST {
    if { [HTTP::host] equals "www.xyz.com" and [HTTP::uri] starts_with "/odeme" } {
        HTTP::redirect "https://www.xyz.com/odeme"
    }
}
*********************************************************************************

Rule - 6
*********************************************************************************
Static Content caching header manipülasyon rule, ayrıca static content type class larda gif,jpg,png gibi file type tanımlamaları gerektirir. Detaylandırılır, diğer http header cache paramları ile daha iyidir. Lakin google chrome rfc de ister.! Hatada uzun cacheler bağışlamaz. 
Not: Cache-control param yoksada ekler belirtilen filetypelara göre.

when HTTP_RESPONSE {
if {[matchclass [HTTP::header Content-Type] equals static_content_types_class]}{
HTTP::header replace "Cache-Control" "max-age=354600"
}
}
*********************************************************************************

Rule - 7
*********************************************************************************
Maintenance Page redirect, ana poolda member kalmazsa maintenance pool'a dispatch eder ayrıca bu sırada google bot gelirse 503 aldığından sayfayı indexlemez sonra tekrar crawl edecektir.

when HTTP_REQUEST {
    if {[active_members xyz_pool] < 1}{
pool Maintenance_Pool
   }
if {[HTTP::header "User-Agent"] contains "Googlebot"} {
HTTP::respond 503
}
}
*********************************************************************************

Rule - 8
*********************************************************************************
Spesifik Vserverlar için http logging ayrıca remote syslog sunucusuna (11.11.11.11) loglatılacak şekilde; Genelde geçici olarak kullanıyoruz.
Lakin clone pool özelliği ile zaten herşeyi izliyorum.

when HTTP_REQUEST {
   set http_request "\"[HTTP::method] [HTTP::uri] HTTP/[HTTP::version]\""
   set http_request_time [clock clicks -milliseconds]
   set http_user_agent "\"[HTTP::header User-Agent]]\""
   set http_host [HTTP::host]
   set http_username [HTTP::username]
   set client_ip [IP::remote_addr]
   set client_port [TCP::remote_port]
   set http_request_uri [HTTP::uri]
   set referer [HTTP::header value referer]
}
when HTTP_RESPONSE {
   set response_time [expr [clock clicks -milliseconds] - $http_request_time]
   set virtual [virtual]
   set content_length 0
   if { [HTTP::header exists "Content-Length"] } {
      set content_length [HTTP::header "Content-Length"]
   }
   set lb_server "[LB::server addr]:[LB::server port]"
   if { [string compare "$lb_server" ""] == 0 } {
      set lb_server ""
   }
   set status_code [HTTP::status]
   set content_type [HTTP::header "Content-type"]
   set log_msg ""
   append log_msg "virtual=$virtual "
   append log_msg "client_ip=$client_ip "
   append log_msg "client_port=$client_port "
   append log_msg "lb_server=$lb_server "
   append log_msg "host=$http_host "
   append log_msg "username=$http_username "
   #append log_msg "$http_request_uri "
   append log_msg "request=$http_request "
   append log_msg "server_status=$status_code "
   append log_msg "content_type=$content_type "
   append log_msg "content_length=$content_length "
   append log_msg "resp_time=$response_time "
   append log_msg "user_agent=$http_user_agent "
   append log_msg "referer=$referer"
   log 11.11.11.11 local0. $log_msg
#Üsttekini diezler alttakini kaldırırsan lb diskine locale loglar.
#   log local0.info $log_msg
}
*********************************************************************************

Rule - 9
*********************************************************************************
302 yerine 301 ile redirect keza google v.b. arama motorları buna göre indexlemesi için. F5'De default redirect behaviour 302 dir.

when HTTP_REQUEST {
  if {
    ([HTTP::host] equals "f.xyz.com")
  } then {
      HTTP::respond 301 Location https://f.xyz.com[HTTP::uri]
    }
  }

*********************************************************************************

Rule - 10
*********************************************************************************
1 ip ile setli vserver üstünden birçok contenti yakın site çalıştırılması ve bunların kullandıkları bazı urilerin poollara ayrılarak
yükdengesi sağlanması ayrıca, bazı uri leri ilede redirect yapılması için kullanılan rule

 when HTTP_REQUEST {
  switch [HTTP::host] {
    "www.abc.net"
  - "www.an.net"
  - "www.sasa.net"
  - "www.dass.net"
  - "www.ma11.net"
  - "www.edas.com"
  - "www.d11.net"
  - "www.zz.net"
  - "www.xx.net"
  - "www.yy.net"
  - "www.dd.net"
      switch -glob [HTTP::uri] {
        "/0/service*" { HTTP::respond 301 Location "http://www.abc.net" [HTTP::uri] }
        "/1/*" { pool 1 }
        "/2/*" { pool 2 }
        "/3/*" { pool 3 }
        "/4/*" { pool 4 }
        "/5/*" { pool 5 }
        "/6/*" { pool 6 }
        "/7/*" { pool 7 }
        "/8/*" { pool 8 }
        "/9/*" { pool 9 }
        "/10/*" { pool 10 }
        "/11/*" { pool 11 }
        "/12/*" { pool 12 }
        "/13/*" { pool 13 }
        "/14/*" { pool 14 }
        "/15/*" { pool 15 }
        "/16/*" { pool 16 }
        "/17/*" { pool 17 }
        "/iletisim/*" { HTTP::respond 301 Location "http://www.sirket.com" [HTTP::uri] }
        }
     }
   }
}

*********************************************************************************

Rule - 11 & 12
*********************************************************************************
Bazı uri ve dosya formatları için 2 rule'da match ise http'den çağrılıp uri match ise https'e , https'den çağrıldığındada uri
match değil ise http'ye şeklinde incelenince daha iyi anlaşılır.

#Http to Https Rule; (Http vserver'a bindlı)

when HTTP_REQUEST {
  if {
    ([HTTP::host] equals "www.zzy.com")
  } then {
    if {
      ([HTTP::uri] contains "/si.aspx") ||
      ([HTTP::uri] contains "/si1.aspx") ||
      ([HTTP::uri] contains "/si2.aspx") ||
      ([HTTP::uri] contains "/si3.aspx") ||
      ([HTTP::uri] contains "/si4.aspx") ||
      ([HTTP::uri] contains "/sison.aspx") ||
      ([HTTP::uri] contains "/repas.aspx") ||
      ([HTTP::uri] contains "/uy") ||
      ([HTTP::uri] contains "/bi") ||
      ([HTTP::uri] contains "/bo") ||
      ([HTTP::uri] contains "/mait") ||
      ([HTTP::uri] contains "/mait2") ||
      ([HTTP::uri] contains "/gi") ||
      ([HTTP::uri] contains "/fb/test1.aspx") ||
      ([HTTP::uri] contains "/giit") ||
      ([HTTP::uri] contains "/admin/index.aspx")   ||
      ([HTTP::uri] contains "/WebResource.axd")
      } then {
      HTTP::respond 301 Location https://www.zzy.com[HTTP::uri]
    }
  }
}

#Https to http (Https vserver'a bindlı)
when HTTP_REQUEST {
  if {
    ([HTTP::host] equals "www.zzy.com")
  } then {
    if {
      not ([HTTP::uri] ends_with ".jpg") &&
      not ([HTTP::uri] ends_with ".gif") &&
      not ([HTTP::uri] ends_with ".png") &&
      not ([HTTP::uri] ends_with ".swf") &&
      not ([HTTP::uri] ends_with ".js") &&
      not ([HTTP::uri] ends_with ".css") &&
      not ([HTTP::uri] ends_with ".axd") &&
      not ([HTTP::uri] contains "/si.aspx") &&
      not ([HTTP::uri] contains "/si1.aspx") &&
      not ([HTTP::uri] contains "/si2.aspx") &&
      not ([HTTP::uri] contains "/si3.aspx") &&
      not ([HTTP::uri] contains "/si4.aspx") &&
      not ([HTTP::uri] contains "/sison.aspx") &&
      not ([HTTP::uri] contains "/repas")  &&
      not ([HTTP::uri] contains "/uy") &&
      not ([HTTP::uri] contains "/bi") &&
      not ([HTTP::uri] contains "/interactive/getlogininfo.aspx") &&
      not ([HTTP::uri] contains "/bo") &&
      not ([HTTP::uri] contains "/mait") &&
      not ([HTTP::uri] contains "/mat2") &&
      not ([HTTP::uri] contains "/gi") &&
      not ([HTTP::uri] contains "/giit") &&
      not ([HTTP::uri] contains "/fb/test1.aspx") &&
      not ([HTTP::uri] contains "/admin/index.aspx") &&
      not ([HTTP::uri] contains "/WebResource.axd")
    } then {
      HTTP::respond 301 Location http://www.zzy.com[HTTP::uri]
    }
  }
}
*********************************************************************************


Monday, November 26, 2012

Static Content Sunum Karşılaştırması

Static Content Sunum Testi; 

Açıkcası herşey tam olarak dosyanın içinde bulunuyor. Yinede kısaca anlatmak gerekirse ;

Test Sistemi;
Disk sistemi;
Tüm static content sunan başlıca servisler; Apache,Nginx,lightspeed,lighttp,Ers Apache,Zeus Web, IIS, Cherokee gibi servisleri static content için teste yatırdım. 3kb lık ve 10 kb lık 2 ayrı dosya serv ettik. basitçe max değer 250 concurrent connection / sec her connection içinden 50 request per sec. Her request 3kb yada 10kb lik dosyalar ayrı 2 test şeklinde gerçekleştirdim.

Aşağıda dosya içeriklerinden örnek resimler koydum.

Tüm testi görmek için;

Ayrıca Detaylarda belirtmeliyim ki;  Ers Apache, IIS,  Cherokee ve Lightspeed dışında tüm teste tabi tutulan web serv servisleri 10k static content sunumunda loadı düşük olarak kaldı. Diğer tüm servislerde max conn sayılarına gelindiğinde sistem satüre olmuş durumlarda idi yada diyebilirim ki load 5000 ler civarında bir average lara çıkmıştı.

Grafiklerde her bir sistem için ayrı şekilde grafik çıkardım. Bu grafiklerde request ve response aynı hizada olduğu müddetçe sorunsuz isteğe cevap alınmış fark olduğu zamanda atılan requeste response gelemedi anlamına gelmektedir. 

Yorum yada önerileriniz varsa mail atabilirsiniz. Bu testi 20 - 30 değişik static content sunabilen sistem ile çok daha farklı ve manuel compile ve best practise configler ile birlikte tekrar 2013'de deneyeceğim.

Ayrıca kernel config, tüm test edilen sunucu configlerinide paylaşacağım. Bayağı uzun,detaylı bir test ve rapor olacağını söyleyebilirim

static_content_tests.zip




Tuesday, October 23, 2012

FusionIo Day2 Mysql Killer 300K Iops

Resim ektedir. mysql insert operation 300k iops. Iodrive 2