HAProxy; 2001’den bu yana geliştirilen, yüksek erişilebilirlik (High Availability) odaklı L4/L7 yük dengeleyicidir. Linux ve FreeBSD üzerinde çekirdek seviyesi optimizasyonlarla saniyede yüz binlerce isteği tek node’da işleyebilir. GitHub, Twitter, Tumblr, Stack Overflow gibi servislerin trafik dağıtımının arkasındaki sessiz devdir.
ACL (Access Control List) motoru, gelişmiş health check sistemi (HTTP, TCP, MySQL, PostgreSQL, Redis), stick-table’lar (rate limiting + session persistence) ve runtime API’si HAProxy’yi kurumsal yük dengeleme için olgun ve güçlü kılar. Nginx ile karşılaştırıldığında daha sade ve yük dengelemeye odaklı bir araçtır.
Mono’nun yaklaşımı
Mono kurulumlarında HAProxy genelde trafik girişinin ilk katmanı olarak konumlanır. Standartlarımız:
- HA pattern: Keepalived + VRRP ile aktif-pasif çift; veya Anycast + ECMP ile aktif-aktif (BGP destekli ortamlarda).
- TLS: TLS 1.3 + ECDHE + AEAD; OCSP stapling açık; sertifikalar runtime API ile reload’siz güncellenir.
- Health check: Sade
option httpchkyerine expect ile gerçek 200 kontrolü; uygulama health endpoint’i (/health/readyile bağımlılık kontrolü). - Logging: JSON structured log → Syslog → Loki; HTTP request ID propagation ile uçtan uca tracing.
- Stick-table: Rate limit, brute-force koruması, IP reputation tracking.
- Stats:
stats socketUnix soketi → Data Plane API → Mono operasyon ekibi yönetir.
Tipik kurulum
Kurumsal trafik girişi:
- Cloudflare/Akamai (CDN + DDoS koruma).
- HAProxy aktif-pasif çifti (keepalived ile VIP’i yönetir).
- HAProxy backend pool’ları → uygulama sunucuları (sticky cookie ile session affinity).
- Health check ile sağlıksız node’lar otomatik dışlanır; recovery’de yavaş yavaş trafik alır (
slowstart).
PostgreSQL/MariaDB cluster önünde HAProxy + custom healthcheck (örn. Patroni REST endpoint’i) ile otomatik primary keşfi çok yaygın bir Mono pattern’idir.
Yaygın sorunlar ve çözümler
- Connection refused / file descriptor limit: Sysctl ve
ulimitayarlanmadan high-concurrency çalışmaz.nofile 1048576. - TIME_WAIT birikimi:
tcp_tw_reuse=1(Linux 4.12+); HAProxy tarafındaoption http-server-close. - Yavaş failover: VRRP advert interval düşürülebilir (default 1s, agresif kurulumlarda 200ms); preempt politikası açık.
- Session loss yeni deploy’da: Stick-table peer’ları yapılandırılmalı (
peersdirektifi). - Backend tüm sağlıksız: Maintenance state’i için
disabledkeyword + Data Plane API.