Category Archives: Shell Komutları

F5 Optimize Caching(Ramcache) Kullanımı 10X Fark

Optimized-caching profili ile kullanımını anlatmaya çalışacağım. Eski adı ile ramcache. 11.x ile birlikte profiller ayrıldılar acceleration ana menüsü altında toplandılar.

Not: Test değerleri sata diskde duran normal bir vm appliance ltm 11.4 üstünde yapılmıştır. Node olarak 2 ubuntu makine test yapılanda bir başka ubuntu sunucu vardır. Hepsi sata disk üzerinde durmaktadır.

Öncelikle tmsh komutlarından bahsedeyim.

tmsh tarafında cache itemleri listeleme, tüm cache’i silme, cache itemi silme kısımları en çok kullanacağımız kısımlardan.

#Tüm cache itemlerini listeler
>show ltm profile ramcache optimized-caching
 
#Tüm cache'i silme flush etmek için
>delete ltm profile ramcache optimized-caching
 
#Cache içinde belirli bir itemi silmek için
>delete ltm profile ramcache optimized-caching uri cached_uri
 
#Not: Uri dışında exact,host,max-response şeklinde değerlere görede item silebilmektesiniz.

Alttaki resimde gördüğünüz gibi acceleration -> profiles -> web acceleration -> optimized cache ile bu özelliğin ayarlarına ulaşabiliyorsunuz.

cache1

Benim kullandığım ayarlar aşağıdaki gibi. Default ile tek farkı cache expire zamanını 300 saniye 5 dakikaya çektim.

cache2

Evet şimdi profilimizi vserver kısmında acceleration altında web acceleration kısmına optimized-caching olarak bind ediyoruz.

cache3

İşlemimiz tamamlanmış durumdadır. Artık optimize-caching ile contentleriniz cachelenmeye başlamıştır.

Yaptığım bazı testleri sizler ile de paylaşıyım.

#Bakıyoruz ve Cache boş.
 
(cfg-sync Standalone)(Active)(/Common)(tmos)# show ltm profile ramcache optimized-caching
Ltm::Ramcaches /Common/optimized-caching
Total records returned: 0
 
#İsteğimizi atıyoruz ve 188 milisaniye olarak görüyoruz.
 
> time curl 10.35.97.102/f5logo.jpg > /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  4699  100  4699    0     0  25855      0 --:--:-- --:--:-- --:--:-- 63314
 
real    0m0.188s
user    0m0.004s
sys     0m0.004s
 
#Şimdi optimized cache'i vserver'a bind ediyoruz ve tekrar istek atıyoruz. Not : 2'nci istek sonucudur.
 
#Gördüğünüz gibi aradaki fark nerede ise 10 katından fazla.
> time curl 10.35.97.102/f5logo.jpg > /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  4699  100  4699    0     0   558k      0 --:--:-- --:--:-- --:--:-- 1760k
 
real    0m0.015s
user    0m0.004s
sys     0m0.003s
 
#Cache itemlerimizi listeleyelim ve f5logo.jpg nin cache itemleri arasında olduğundan emin olalım.
 
(cfg-sync Standalone)(Active)(/Common)(tmos)# show ltm profile ramcache optimized-caching
Ltm::Ramcaches /Common/optimized-caching
 
Host: 10.35.97.102
URI : /f5logo.jpg
--------------------------------------
  Source Slot/TMM  1/1
  Owner Slot/TMM   1/1
  Rank             1
 
  Size (bytes)     4937
  Hits             4
  Received         2014-08-24 02:03:27
  Last Sent        2014-08-24 02:04:03
  Expires          2014-08-24 02:08:51
  Vary Type        none
  Vary Count       1
  Vary User Agent  none
  Vary Encoding    none
 
Host: 10.35.97.102
URI : /f5logo.jpg
--------------------------------------
  Source Slot/TMM  1/0
  Owner Slot/TMM   1/1
  Rank             1
 
  Size (bytes)     4937
  Hits             4
  Received         2014-08-24 02:03:27
  Last Sent        2014-08-24 02:04:02
  Expires          2014-08-24 02:08:51
  Vary Type        none
  Vary Count       1
  Vary User Agent  none
  Vary Encoding    none
Total records returned: 2
 
#Görüldüğü gibi 300 saniye lik süre için bu item optimized-cache(ramcache) tarafından serv edilmektedir. 
#300 Saniyelik interval expire olunca cache invalide olur ve tekrar cachelenir.
 
#Şimdi farklı bir içerik deneyelim mesela php modülleri listeleyen bir kod olsun
 
#index.php
<?php phpinfo(); phpinfo(INFO_MODULES); ?>
 
#Cache'i flush edip disable ettikten sonra deniyoruz.
 
(cfg-sync Standalone)(Active)(/Common)(tmos)# show ltm profile ramcache optimized-caching
root@(f5tolga)(cfg-sync Standalone)(Active)(/Common)(tmos)# 
 
> time curl 10.35.97.102/index.php > /dev/null 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  114k    0  114k    0     0   224k      0 --:--:-- --:--:-- --:--:--  298k
 
real    0m0.514s
user    0m0.002s
sys     0m0.004s
 
#Buda cache aktif olduktan sonra ;
 
> time curl 10.35.97.102/index.php > /dev/null 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  114k  100  114k    0     0  8537k      0 --:--:-- --:--:-- --:--:-- 17.8M
 
real    0m0.021s
user    0m0.003s
sys     0m0.005s
 
#Cache item listemizi tekrar kontrol ediyoruz
 
(cfg-sync Standalone)(Active)(/Common)(tmos)# show ltm profile ramcache optimized-caching
Ltm::Ramcaches /Common/optimized-caching
 
Host: 10.35.97.102
URI : /index.php
--------------------------------------
  Source Slot/TMM  1/1
  Owner Slot/TMM   1/1
  Rank             1
 
  Size (bytes)     116949
  Hits             2
  Received         2014-08-24 02:11:43
  Last Sent        2014-08-24 02:11:46
  Expires          2014-08-24 02:17:06
  Vary Type        none
  Vary Count       1
  Vary User Agent  none
  Vary Encoding    none
 
Host: 10.35.97.102
URI : /index.php
--------------------------------------
  Source Slot/TMM  1/0
  Owner Slot/TMM   1/1
  Rank             1
 
  Size (bytes)     116949
  Hits             1
  Received         2014-08-24 02:11:43
  Last Sent        2014-08-24 02:11:45
  Expires          2014-08-24 02:17:06
  Vary Type        none
  Vary Count       1
  Vary User Agent  none
  Vary Encoding    none
Total records returned: 2

Evet görüldüğü gibi 10 kat kadar bir performans artışı sağlamış oluyoruz bu özellik ile. Gerçektende çok güçlü çalışıyor. Yalnız dikkat edilmesi gereken çok önemli bir husus var.

optimized-cache kullanacaklar çok dikkatli olmalısınız. Eğer herşeyi cacheler iseniz session login olanlarıda cache lediği için ilk login olan insanın örnek sitenizde profil varsa profilini bir başkası ekranında görüverir. Yaşanmış bir tecrübedir. Dolayısı ile Profil den neyi cache leyip neyi cachelemeyeceğinizi include/exclude lar ile birlikte iyi ayırmalısınız. Benim görüşüm sadece static contentleri bile cacheleseniz inanılmaz bir improvement’a sahip olursunuz.

F5 Ltm Toplu Node Ekleme

Ben diğer bir load balancerdan f5′e migrate işlemlerim sırasında çok fazla zaman kazandıran bu kısa tek satırı sizlerlede paylaşmak istedim. F5 tarafına diğer load balancerdan dump ettiğimiz txt dosyasını yolluyoruz örnek scp ile.

Örneğin;

#netscaler.txt 
A01        10.1.1.1
A02        10.1.1.2
A03        10.1.1.3
A04        10.1.1.4
A05        10.1.1.5
A06        10.1.1.6

ardından F5 tarafına shell ssh ile login oluyoruz ve netscaler.txt dosyasını kaydettiğimiz pathi ile;

#Burda netscaler.txt while ile read ederek her satır entry için line okutuluyor ve $inf array 1 için isim inf array 2 için ise ip adresi ve icmp monitor şeklinde full liste eklenebiliyor.

#Eğer partition kullanmayacaksanız ve hepsi common partition tarafında kalacaksa bu yöntemi kullanın aksi halde array’e bir değişken daha ekleyere onada partition’ı declare ederek devam edebilirsiniz, tabi bunun için nodeları ayrı dosyalara bölmelisiniz.

cat netscaler.txt  | while read line; do INF=(echo $line); tmsh create /ltm node ${INF[1]} address ${INF[2]} monitor icmp ; done
#tmsh
#ltm node
#list
 
ltm node A01 {
    address 10.1.1.1
    monitor icmp 
    session monitor-enabled
    state up
}
ltm node A02 {
    address 10.1.1.2
    monitor icmp 
    session monitor-enabled
    state down
}
ltm node A03 {
    address 10.1.1.3
    monitor icmp 
    session monitor-enabled
    state down
}
ltm node A04 {
    address 10.1.1.4
    monitor icmp 
    session monitor-enabled
    state up
}
ltm node A05 {
    address 10.1.1.5
    monitor icmp 
    session monitor-enabled
    state up
}
ltm node A06 {
    address 10.1.1.6
    monitor icmp 
    session monitor-enabled
    state up
}

F5 Belirli Node Hangi Pool’a üye Tesbiti

Pool altında node lar listeleniyor fakat büyük yapılarda her zaman hangi node hangi pool lara dahil buna da çok ihtiyaç duyulmakta. Kendi çalışmalarımdan biliyorum.
Tek tek tüm pool lara bakmak yerine ve gui de bir çözüm olmadığından dolayı 2 yöntem mevcut.

Bunlar ;

Yöntem – 1

#Full config Save eder.
tmsh save sys config file /tmp/1.txt
cat 1.txt|grep "ltm pool" -A10|grep ASLTEST01 -B10|grep "ltm pool"
 
#yada
 
cat 1.txt|grep "ltm pool" -A10|grep ASLTEST01 -B5|grep "ltm pool"

Gibi bakılabilir diye düşünüyorum. Parse edecek bir şey yazarak tespit edebilirsiniz bu yöntem grep After before fazla member ile bozulabilir. O yüzden parser yazmak daha mantıklı ben sadece örnek olarak bu şekilde bir yöntem ile bakılabildiğini göstermek istedim.

Yöntem – 2

2′nci yöntemimiz daha basit ve tek satır ile tespit fakat snmp aktif olması gerekiyor. F5-BIGIP-LOCAL-MIB mibi ile ltmpoolmemberpoolname ile hangi node hangi poola üye grep ile kesin görebiliyoruz.

#snmpwalk -v2c -c snmp_community lb_ip -m F5-BIGIP-LOCAL-MIB ltmPoolMemberPoolName|grep -i ASLTEST01
 
F5-BIGIP-LOCAL-MIB::ltmPoolMemberPoolName."/asltest/ap-test-ssl"."/asltest/ASLTEST01".8443 = STRING: /asltest/ap-test-ssl
F5-BIGIP-LOCAL-MIB::ltmPoolMemberPoolName."/asltest/ap-test-http"."/asltest/ASLTEST01".8080 = STRING: /asltest/ap-test-http
F5-BIGIP-LOCAL-MIB::ltmPoolMemberPoolName."/asltest/test_bandwith_vserver"."/asltest/ASLTEST01".8080 = STRING: /asltest/test_bandwith_vserver

Node Force offline için (11.x)

F5 tarafında gui kısmında verilen node force offline dahi graceful çalışıyor ve aktif sağlanmış bağlantıları kapatmıyor.
Dolayısı ile shell den komut ile aktif bağlantıları incelemek ve silmek gerekiyor.

Bunun içinde;

 
#Traffic Management Shell'e geçer
> tmsh
 
#O node için aktif kurulu connected state bağlantıları listeler
> show sys connection ss-server-addr node_ip_adresi 
 
#O node için aktif kurulu connected state bağlantıları siler
> delete sys connection ss-server-addr node_ip_adresi

Örnek Ekran Görüntüsü; (Kapalı alanlarda ip adresleri ve portlar mevcuttur)

sys_conn