Modern web uygulamaları ve sunucu sistemleri, yüksek trafik ve ağır yük altında kesintisiz hizmet verebilmek için optimize edilmelidir. Bu noktada, yük dengeleme (load balancing), birden fazla sunucu arasındaki trafiği dengeli şekilde dağıtarak sistemin daha verimli çalışmasını sağlar.
Bu yapılandırmada backend_servers isimli bir upstream (arka uç sunucular) tanımlanmış ve istemcilerden gelen istekler bu sunucular arasında dengeli şekilde dağıtılacaktır.
Konfigürasyonu etkinleştirmek için NGINX’i yeniden başlatın:
CentOS/RHEL için:
Şu ayarları ekleyin:
Kaydedip çıkın ve HAProxy’yi yeniden başlatın:
1. Yük Dengeleme (Load Balancing) Nedir?
Yük dengeleme, istemcilerden gelen taleplerin birden fazla sunucuya eşit olarak dağıtılması işlemidir. Böylece:- Trafik yükü dağıtılır ve sunucuların aşırı yüklenmesi önlenir.
- Kesintisiz hizmet sağlanır ve bir sunucu devre dışı kalsa bile diğerleri çalışmaya devam eder.
- Sistem performansı artırılır, kullanıcı deneyimi iyileştirilir.
- Yüksek erişilebilirlik (high availability) ve hata toleransı sağlanır.
2. Linux Sunucularında Yük Dengeleme Yöntemleri
Linux sistemlerinde yük dengeleme genellikle aşağıdaki yöntemlerle gerçekleştirilir:a) DNS Tabanlı Yük Dengeleme (DNS Load Balancing)
DNS sunucusu, aynı alan adı için birden fazla IP adresi döndürebilir. Ancak bu yöntem, sunucu sağlığını aktif olarak izlemediği için çok tercih edilmez.b) Donanım Tabanlı Yük Dengeleme
Donanım tabanlı yük dengeleyiciler (F5, Citrix ADC, vb.), yüksek maliyetli olup büyük ölçekli işletmeler için uygundur.c) Yazılım Tabanlı Yük Dengeleme
Linux üzerinde çalışan yazılımlar kullanılarak daha esnek ve uygun maliyetli bir yük dengeleme mekanizması oluşturulabilir. En yaygın kullanılan yazılımlar şunlardır:- NGINX: Popüler web sunucusu, ters proxy (reverse proxy) ve yük dengeleme aracı.
- HAProxy: TCP ve HTTP yük dengeleme konusunda güçlü ve optimize bir çözüm.
- IPTables ve IPVS (LVS - Linux Virtual Server): Çekirdek seviyesinde yük dengeleme sağlayan Linux çözümleri.
- Keepalived: Yüksek erişilebilirlik için kullanılan bir araç.
3. NGINX ile Yük Dengeleme Kurulumu
NGINX, yük dengeleme için yaygın olarak kullanılan bir ters proxy çözümüdür. Kurulumu ve konfigürasyonu oldukça basittir.a) NGINX Kurulumu
Öncelikle, NGINX’in sistemde kurulu olduğundan emin olun. Eğer kurulu değilse aşağıdaki komutla yükleyebilirsiniz:
Bash:
sudo apt update && sudo apt install nginx -y # Debian/Ubuntu için
sudo yum install nginx -y # CentOS/RHEL için
b) Yük Dengeleme Konfigürasyonu
NGINX’i yük dengeleyici olarak kullanmak için konfigürasyon dosyasını aşağıdaki gibi düzenleyin:
NGINX:
upstream backend_servers {
server 192.168.1.10;
server 192.168.1.11;
server 192.168.1.12;
}
server {
listen 80;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Konfigürasyonu etkinleştirmek için NGINX’i yeniden başlatın:
Bash:
sudo systemctl restart nginx
4. HAProxy ile Yük Dengeleme
HAProxy, özellikle yüksek trafikli web servisleri için güçlü bir yük dengeleme çözümüdür.a) HAProxy Kurulumu
Debian/Ubuntu için:
Bash:
sudo apt update && sudo apt install haproxy -y
Bash:
sudo yum install haproxy -y
b) HAProxy Konfigürasyonu
Aşağıdaki konfigürasyon dosyasını düzenleyerek yük dengelemeyi etkinleştirin:
Bash:
sudo nano /etc/haproxy/haproxy.cfg
Kod:
frontend http_front
bind *:80
default_backend backend_servers
backend backend_servers
balance roundrobin
server server1 192.168.1.10:80 check
server server2 192.168.1.11:80 check
server server3 192.168.1.12:80 check
Bash:
sudo systemctl restart haproxy
5. Yük Dengeleme İçin En İyi Uygulamalar
- Sağlık Kontrolleri (Health Checks) Uygulayın: Arızalı sunucuların trafiğe dahil olmamasını sağlamak için periyodik sağlık kontrolleri yapın.
- SSL Desteğini Entegre Edin: Trafiği şifrelemek için SSL/TLS kullanarak güvenliği artırın.
- Otomatik Ölçeklendirme (Auto Scaling) Kullanın: Ani trafik artışlarını karşılamak için sunucu kapasitesini otomatik olarak artırın.
- Güncellemeleri ve Yedeklemeleri İhmal Etmeyin: Kesintisiz hizmet sağlamak için düzenli bakım yapın.