F5 Yük Dengeleyicilerde Yerel Trafik Yöneticisi (LTM) Modülü

Oner Akdeniz
Fiba Tech Lab
Published in
7 min readAug 5, 2024

Artan iş ve sistem sürekliliği ihtiyaçları doğrultusunda sunucuların yedeklenmesi, güvenlik ve trafik optimizasyonu için kullanılan yük dengeleyici cihazlar ağ yönetiminde kritik bir bileşen konumuna gelmiştir. Yük dengeleyicilerin -adından da anlaşılacağı üzere- temel görevi, uygulama sunucuları arasında ağ trafiğinin belirlenen politikalara göre dengeli dağılımını sağlamaktır. Temel görevi üstlenen modül, yerel trafik yönetim (LTM-Local Traffic Manager) modülüdür. F5 LTM, F5 BIG-IP ürün grubunun bir parçasıdır ve uygulamaların performansını, kullanılabilirliğini ve güvenliğini optimize etmek için tasarlanmıştır. Bunun yanında, güvenlik (Uygulama Güvenlik Yöneticisi-ASM, Gelişmiş Firewall Yöneticisi-AFM, Erişim Politika Yöneticisi-APM vs.) farklı modüller ile artırılabilir. Bu yazımızda F5 yük dengeleyici cihazların yerel trafik yönetim (LTM) modülünü inceleyeceğiz.

Şekil-1: 2 Sunucu için Yük Dengeleyici Üzerinden Trafik Akışı

Şekil-1'deki trafik akışında, internetten gelen isteklerin sunuculara yük dengeleyici aracılığıyla iletildiği görülmektedir. Bu örnek çizimde uygulamanın 2 sunucu üzerinde koştuğu düşünülmüştür. Sunucuların aktif-aktif ya da aktif-pasif çalışmaları mümkündür. İhtiyaçlar doğrultusunda sunucu sayısı artırılabilmektedir.

“Gelen istekler sunuculara nasıl dağılıyor?” sorusuna cevap arayarak LTM detaylarını inceleyelim. Şekil-1'deki senaryoda sunucuların aktif-aktif çalıştığını varsayalım. Gelen istekler öncelikle yük dengeleme metodu algoritmasına göre ilgili sunucuya iletilir. Mevcut olan bazı temel yük dengeleme yöntemlerini özetleyelim.

  1. Sıralı Dağıtım (Round Robin): Bu yöntem, istemci isteklerini sunucu havuzunda sırayla dağıtır. Her sunucu sırayla eşit sayıda bağlantı alır.
  2. Ağırlıklı Sıralı Dağıtım (Ratio): Round Robin’e benzer, ancak sunucular kapasiteye göre bir ağırlıkla atanır. Daha yüksek ağırlıklı sunucular daha fazla bağlantı alır.
  3. En Az Bağlantı ile Oran (Dynamic Ratio): Sunucular, CPU kullanımı ve yanıt süresi gibi gerçek zamanlı performans metriklerine göre dinamik oranlar alır. Daha iyi performans gösteren sunucular daha fazla bağlantı alır.
  4. En Hızlı (Fastest): Yeni bağlantılar için en hızlı yanıt süresine sahip sunucuyu seçer. Bu yöntem, sunucu yanıt sürelerinin izlenmesini gerektirir.
  5. En Az Bağlantı (Least Connections): Trafiği, en az aktif bağlantıya sahip sunucuya gönderir. Bu yöntem, istek sürelerinin değişken olduğu durumlarda yükü dengelemeye yardımcı olur.
  6. Gözlemlenen (Observed): Sunucuları sürekli olarak izler ve performanslarına göre bir puan atar. En iyi puana sahip sunucu, bir sonraki bağlantıyı alır.
  7. Tahminsel (Predictive): Observed yöntemine benzer, ancak gelecekteki performans ve yük eğilimlerini tahmin etmek için geçmiş verileri kullanır ve daha bilinçli yük dengeleme kararları verir.
  8. Düğüm (Ratio): Ratio yöntemine benzer, ancak havuz seviyesinden ziyade düğüm seviyesinde çalışır ve trafiği her düğüme atanan ağırlıklara göre dağıtır.
  9. En Az Oturum (Least Sessions): Yeni oturumları, en az aktif oturuma sahip sunucuya yönlendirerek yükü dengeler.
  10. Üye ile Oran (Ratio Least Connections): Oran ve En Az Bağlantı yöntemlerini birleştirir, bağlantıları sunucu kapasitesine ve mevcut yüke göre dağıtır.
  11. Ağırlıklı En Az Bağlantı (Weighted Least Connections): Trafiği en az bağlantıya sahip sunucuya, sunucu ağırlığına göre ayarlayarak yönlendirir.

Bu yöntemler, sunucuların özel ihtiyaçları ve performans özelliklerine göre özelleştirilebilir ve ayarlanabilir. Yük dengeleme yöntemi seçimi, F5 BIG-IP sistemi tarafından sunulan uygulamaların performansı ve güvenilirliği üzerinde önemli bir etkiye sahip olabilir. Round robin ve least connection en sık kullanılan yük dengeleme metodlarıdır.

Peki, aynı istemciden gelen isteklerin sürekli aynı sunucuya gitmesi gereken uygulamalar için ne yapacağız? Bu senaryoda kalıcılık ya da yapışkanlık (persistence) profili oluşturarak, isteklerin doğru sunucuya iletilmesi sağlanır. Kalıcılık (Persistence), bir istemcinin isteklerinin bir oturum süresince aynı sunucuya yönlendirilmesini sağlamak için kullanılan bir tekniktir. İstemci ve sunucu arasında durumu korumanın gerekli olduğu senaryolarda, örneğin bir kullanıcının oturum açtığı ve oturumunu sürdürmesi gereken web uygulamalarında veya alışveriş sepetindeki öğelerin tutarlılığını koruması gereken e-ticaret sitelerinde kullanılır. F5 persistence (kalıcılık) yöntemleri, sunucu tarafında oturumla ilgili verilerin saklanması gereken uygulamalar için kritik öneme sahiptir. F5 tarafından sağlanan temel kalıcılık metodlarını detaylandıralım.

  1. Kaynak IP Kalıcılığı (Source Address Affinity(SAA)): Aynı istemci IP adresinden gelen istekleri aynı sunucuya yönlendirir. İstemci ya da kullanıcı IP adresinin oturum boyunca sabit kaldığı uygulamalar için uygundur. Yük dengeleyici, istemcinin IP adresini izler ve bu IP’den gelen tüm istekleri aynı sunucuya yönlendirir.
  2. Hedef IP Kalıcılığı (Destination Address Affinity (DAA)): Hedef IP adresine dayalı olarak bağlantı devam eder. Hedef IP adresinin kritik bir faktör olduğu ortamlarda kullanılır. Yük dengeleyici, aynı hedef IP adresine yapılan tüm istekleri aynı sunucuya yönlendirir.
  3. Çerez Kalıcılığı (Cookie Persistence): Oturum kalıcılığını sağlamak için HTTP çerezleri kullanılır. İstemci tarayıcısının çerezleri desteklediği HTTP/HTTPS uygulamaları için kullanılabilir. Yük dengeleyici, istemcinin tarayıcısına bir çerez ekler. Bu çerezi içeren sonraki istekler aynı sunucuya yönlendirilir.
  4. SSL Oturum Kimliği Kalıcılığı (SSL Session ID Persistence): Aynı SSL oturum kimliğine sahip isteklerin aynı sunucuya gitmesini sağlar. SSL oturumunun korunmasının kritik olduğu HTTPS uygulamaları için kullanışlıdır. Yük dengeleyici, SSL oturum kimliğini izler ve aynı oturum kimliğine sahip istekleri aynı sunucuya yönlendirir.
  5. Hash Kalıcılığı (Hash Persistence): Seçilen verilerin (örneğin, URL veya HTTP başlıkları) hash’ini kullanarak sunucuyu belirler. Belirli istek verilerinin oturumu tanımlamak için kullanılabileceği uygulamalar için uygundur. Yük dengeleyici, belirtilen verilerin hash’ini oluşturur ve bu hash’i kullanarak istekleri sürekli olarak aynı sunucuya yönlendirir.
  6. Evrensel Kalıcılık (Universal Persistence): F5 betik dili (iRules) kullanarak özel kalıcılık kurallarına izin verir. Standart kalıcılık yöntemlerinin belirli uygulama gereksinimlerini karşılamadığı durumlarda kullanışlıdır. İsteklerden veri çıkarmak ve kalıcılığı belirlemek için iRules yazılır.
  7. Oturum Çerezi Kalıcılığı (Session Cookie Persistence): Oturum kalıcılığını sağlamak için oturuma özel çerezler kullanır. Oturum çerezleri veren web uygulamaları için idealdir. Yük dengeleyici, bir oturum çerezi ekler ve aynı çerezi içeren sonraki istekler aynı sunucuya yönlendirilir.

Her yöntem kendi içinde avantajlara sahiptir ve uygulamanın çalışma prensibi ile oturum durumunu koruma gereksinimlerine bağlı olarak farklı senaryolarda kullanılabilir.

Yük dengeleme ve kalıcılık metodlarını netleştirdiğimiz bu noktada, önemli bir not eklemekte fayda var. Kalıcılık profili atanmış bir yapılandırmada yük dengeleme metodu ilk istekler için çalışır ve görevini kalıcılık (persistence) metoduna devreder. Örnek bir senaryo ile bu duruma bakalım.

Senaryomuzda Şekil-2'de görüldüğü gibi F5 arkasında 3 sunucu olsun. F5 yapılandırmasında dağılım yöntemi sıralı dağıtım iken kalıcılık yöntemi ise kaynak IP kalıcılığı ile sağlansın.

Şekil-2: Sıralı Dağıtım ve Kaynak IP Kalıcılığı Yapılandırılmış 3 Sunucu için Yük Dengeleyici Üzerinden Trafik Akışı

Yük dengeleyiciye 10 bağlantı yapılacağını varsayalım. Basitlik açısından, bu bağlantıların 5 farklı IP adresinden geldiğini kabul edelim.

  • IP1: 192.168.1.1
  • IP2: 192.168.1.2
  • IP3: 192.168.1.3
  • IP4: 192.168.1.4
  • IP5: 192.168.1.5

Trafik akışını inceleyelim.

Bağlantı 1 (IP1 — İlk Kez)

  • Sunucu A’ya atanır (Round Robin: Sunucu A)
  • Kalıcılık: IP1 artık kalıcı olarak Sunucu A’ya bağlanır.

Bağlantı 2 (IP2 — İlk Kez)

  • Sunucu B’ye atanır (Round Robin: Sunucu B)
  • Kalıcılık: IP2 artık kalıcı olarak Sunucu B’ye bağlanır.

Bağlantı 3 (IP3 — İlk Kez)

  • Sunucu C’ye atanır (Round Robin: Sunucu C)
  • Kalıcılık: IP3 artık kalıcı olarak Sunucu C’ye bağlanır.

Bağlantı 4 (IP4 — İlk Kez)

  • Sunucu A’ya atanır (Round Robin: Sunucu A)
  • Kalıcılık: IP4 artık kalıcı olarak Sunucu A’ya bağlanır.

Bağlantı 5 (IP5 — İlk Kez)

  • Sunucu B’ye atanır (Round Robin: Sunucu B)
  • Kalıcılık: IP5 artık kalıcı olarak Sunucu B’ye bağlanır.

Bağlantı 6 (IP1 — İkinci Kez)

  • Yeniden Sunucu A’ya atanır (Kaynak IP Kalıcılığı: IP1 → Sunucu A)

Bağlantı 7 (IP2 — İkinci Kez)

  • Yeniden Sunucu B’ye atanır (Kaynak IP Kalıcılığı: IP2 → Sunucu B)

Bağlantı 8 (IP3 — İkinci Kez)

  • Yeniden Sunucu C’ye atanır (Kaynak IP Kalıcılığı: IP3 → Sunucu C)

Bağlantı 9 (IP4 — İkinci Kez)

  • Yeniden Sunucu A’ya atanır (Kaynak IP Kalıcılığı: IP4 → Sunucu A)

Bağlantı 10 (IP5 — İkinci Kez)

  • Yeniden Sunucu B’ye atanır (Kaynak IP Kalıcılığı: IP5 → Sunucu B)

Özetle;

  • Sunucu A üzerinde; 1, 4, 6, 9
  • Sunucu B üzerinde; 2, 5, 7, 10
  • Sunucu C üzerinde; 3, 8 bağlantıları olur.

Bu senaryoda, sıralı dağıtım yöntemi başlangıçta bağlantıları tüm sunucular arasında eşit olarak dağıtır. Kalıcılık profili, aynı IP adresinden yapılan sonraki bağlantıların, sıralı dolaşım sırasına bakılmaksızın aynı sunucuya yönlendirilmesini sağlar.

Artık gelen istekler, sunuculara nasıl dağılacağını biliyor ama sunucu ya da üzerinde koşan uygulama sağlıklı çalışmıyorsa ne olacak? Bu senaryoda yük dengeleyici, sunucuyu ya da uygulamayı belirli aralıklarla izleyerek sağlık durumuna karar verecektir. Yapılandırma esnasında sunucu havuzuna monitör eklenerek bu sorun çözüme kavuşmuş olur.

F5 LTM monitörleri, bir havuzdaki sunucuların ve hizmetlerin sağlığını ve performansını kontrol etmek için kullanılır. Bu monitörler sayesinde, yük dengeleyici trafiği sadece düzgün çalışan sunuculara yönlendirir. Temel monitör türlerinin detalarına bakalım.

  1. HTTP ve HTTPS Monitörleri: Web sunucularının kullanılabilirliğini HTTP/HTTPS istekleri göndererek ve yanıtları doğrulayarak kontrol eder. Web uygulamaları için uygundur. Belirli bir URL’ye HTTP/HTTPS isteği gönderir ve yanıt kodunu (örneğin, 200 OK) kontrol eder.
  2. TCP ve TCP Half-Open Monitörleri: TCP hizmetlerinin kullanılabilirliğini kontrol eder. TCP bağlantılarını kullanan uygulamalar için uygundur.
  3. ICMP (Ping) Monitörü: Sunucunun erişilebilir olup olmadığını kontrol etmek için ICMP yankı isteklerini (ping) kullanır. Temel bağlantı kontrolleri için uygundur ama uygulamayı izlemek için uygun olmayacaktır. ICMP istekleri gönderir ve yanıtlarını bekler.
  4. UDP Monitörü: UDP hizmetlerinin kullanılabilirliğini kontrol eder. UDP bağlantılarını kullanan uygulamalar için uygundur.
  5. DNS Monitörü: DNS sunucularının kullanılabilirliğini DNS sorguları göndererek kontrol eder.
  6. FTP Monitörü: FTP hizmetleri için uygundur. FTP sunucusuna bağlanmayı ve basit bir komut (örneğin, oturum açma) gerçekleştirmeyi dener.
  7. LDAP Monitörü: LDAP sunucularının kullanılabilirliğini kontrol eder. Kimlik doğrulama ve dizin hizmetleri için LDAP kullanan uygulamalar için uygundur. LDAP sunucusuna bağlanmayı ve basit bir LDAP işlemi gerçekleştirmeyi dener.
  8. POP3, IMAP ve SMTP Monitörleri: E-posta sunucularının (POP3, IMAP, SMTP) kullanılabilirliğini kontrol eder. E-posta hizmetleri için uygundur. İlgili e-posta sunucusuna bağlanır ve temel komutlar (örneğin, oturum açma ve e-posta gönderme/alma) gerçekleştirir.
  9. Harici Monitör: Özel komut dosyalarını kullanarak sağlık kontrolleri gerçekleştirir. Yerleşik monitörlerin kapsamadığı belirli sağlık kontrolü gereksinimleri olan uygulamalar için uygundur. Özel bir komut dosyasını çalıştırır ve çıktıyı sağlık durumu için kontrol eder.
  10. Betik Monitörleri (iRules kullanarak): Özel izleme davranışını tanımlamak için iRules kullanır. Karmaşık sağlık kontrolleri gerektiren ileri düzey senaryolar için uygundur. Sunucuların ve hizmetlerin sağlığını kontrol etmek için iRules çalıştırır.

Monitörler için aşağıdaki konfigürasyon parametrelerinden de bahsetmek faydalı olacaktır.

  • Aralık (Interval): Monitörün sağlık kontrollerini ne sıklıkta çalıştıracağını belirler.
  • Zaman Aşımı (time-out): Monitörün bir yanıt beklemek için ne kadar süre bekleyeceğini belirler.
  • Gönderim Dizesi (Send String): Sunucunun sağlık kontrolü için gönderilen dizelerdir.
  • Alım Dizesi (Receive String): Sunucunun sağlıklı olduğunu kabul etmek için beklenen yanıttır.

Bu monitörleri kullanarak, F5 LTM trafik yönetimini kontrollü olarak yapabilir. En sağlıklı ve en hızlı yanıt veren sunuculara istekler yönlendirebilir, böylece uygulamaların yüksek kullanılabilirlik ve güvenilirliği sağlanabilir.

Genel bir özetle, kurumsal IT yapılanmalarında, uygulama ekipleri ile altyapı ekipleri arasındaki iletişim zorluğunu giderebilecek bilgiler içeren bu yazıda, bir veya birden fazla sunucu üzerinde koşan uygulama önüne yük dengeleyici planlamak için isteklerin nasıl dağılacağını, tutunacağını ve uygulamaların nasıl izleneceğini detaylandırmaya çalıştım. Faydalı olması dileğiyle.

Kaynaklar:

K42275060: There are several Load Balancing Methods. Which one is best for your environment? https://my.f5.com/manage/s/article/K42275060

K26898044: Persistence methods available in F5 BIG-IP https://my.f5.com/manage/s/article/K26898044

Monitors Concepts https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/ltm-monitors-reference-11-6-0/2.html

--

--