Apache Load Balancer, yüksek trafikli web sitelerinde yükü dağıtmak, sunucular arası dengeyi sağlamak ve hizmet sürekliliği elde etmek için kullanılan bir yöntemdir. Önceki makalelerimizde Nginx load balancing hakkında detaylı bilgi paylaşmıştık. Apache web sunucusu, mod_proxy ve mod_proxy_balancer modüllerini kullanarak bir yük dengeleyici (load balancer) işlevi görebilir. Bu makalede, Ubuntu üzerinde Apache ile yük dengeleme yapılandırmasını adım adım açıklayacağız.
1. Apache’nin Yük Dengeleme Yeteneği
Apache’nin mod_proxy_balancer modülü, gelen istekleri birden fazla sunucuya dağıtarak hem iş yükünü dengeler hem de sistemin tek bir noktada çökmesini önler. Bu yapılandırma, yüksek performans ve ölçeklenebilirlik sağlar.
2. Gerekli Modüllerin Kurulumu ve Etkinleştirilmesi
Ubuntu üzerinde Apache ile yük dengeleme yapabilmek için öncelikle gerekli modülleri etkinleştirmemiz gerekiyor. Bu modüller:
- mod_proxy: HTTP/HTTPS isteklerini diğer sunuculara yönlendirir.
- mod_proxy_balancer: Load balancer işlevini sağlar.
- mod_lbmethod_byrequests: İstek başına yük dengeleme yöntemi.
- mod_ssl: HTTPS desteği için kullanılır (opsiyonel, eğer HTTPS kullanıyorsanız).
Modülleri etkinleştirmek için şu komutları çalıştırın:
sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod proxy_http
sudo a2enmod ssl # HTTPS kullanıyorsanız
Modülleri etkinleştirdikten sonra Apache servisini yeniden başlatın:
3. Apache Load Balancer Konfigürasyonu
Apache’nin yük dengeleyici işlevini kullanabilmesi için /etc/apache2/sites-available/000-default.conf dosyasında gerekli düzenlemeleri yapalım. Bu dosya, Apache’nin ana sanal ana bilgisayar (VirtualHost) yapılandırma dosyasıdır.
Dosyayı açın:
sudo nano /etc/apache2/sites-available/000-default.conf
İçine aşağıdaki satırları ekleyin:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Load Balancer Proxy
<Proxy "balancer://mycluster">
BalancerMember http://192.168.1.10:8080
BalancerMember http://192.168.1.11:8080
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Bu yapılandırma, Apache’nin 192.168.1.10 ve 192.168.1.11 IP adreslerine sahip iki arka uç sunucuya gelen istekleri yönlendirmesini sağlar. lbmethod=byrequests ifadesi, istek sayısına göre yük dengeleme yapılacağını belirtir. İsterseniz bytraffic veya bybusyness gibi farklı yöntemler de kullanabilirsiniz.
4. HTTPS Desteği Eklemek
Eğer yük dengeleme işlemi HTTPS üzerinden yapılacaksa, SSL sertifikası kurulumuna ihtiyaç vardır. Let’s Encrypt ile SSL sertifikası almak için şu adımları izleyin:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
Sertifika kurulumu sırasında domaine uygun adımları takip edin. Ardından, VirtualHost yapılandırmasına şu SSL bölümlerini ekleyin:
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
<Proxy "balancer://mycluster">
BalancerMember http://192.168.1.10:8080
BalancerMember http://192.168.1.11:8080
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Bu yapılandırma, HTTPS desteğiyle gelen isteklerin yine iki arka uç sunucuya dağıtılmasını sağlar.
5. Apache’yi Yeniden Başlatma
Yapılandırmaları yaptıktan sonra Apache’yi yeniden başlatmalısınız:
6. Load Balancing Yöntemleri
Apache Load Balancer‘da kullanılabilecek birkaç farklı yöntem bulunmaktadır. İşte bunlar:
- byrequests: Her sunucuya gelen istek sayısına göre yük dağıtılır.
- bytraffic: Her sunucunun aldığı veri miktarına göre yük dağıtılır.
- bybusyness: Sunucuların işlem yoğunluğuna göre yük dağıtılır.
- heartbeat: Sunucuların durumu periyodik olarak kontrol edilir ve yük dengesi buna göre sağlanır.
Yukarıda byrequests yöntemini kullandık, ancak diğer yöntemler için de yapılandırmayı şu şekilde değiştirebilirsiniz:
7. Avantajları
Apache Load Balancer’ın sağladığı avantajlar şunlardır:
- Yüksek Erişilebilirlik: Bir sunucu devre dışı kaldığında, istekler diğer sunuculara yönlendirilir ve hizmet kesintisiz devam eder.
- Ölçeklenebilirlik: Sunucu kapasitesini artırmak için yeni sunucular eklenebilir.
- Trafik Yönetimi: Gelen istekler eşit şekilde dağıtılarak sunucuların performansı artırılır.
- Modüler Yapı: Apache’nin yük dengeleme işlevi modülerdir, bu da farklı ihtiyaçlara göre özelleştirilebileceği anlamına gelir.
Apache Load Balancer, yük dengeleme çözümleri arasında esnek ve güçlü bir seçenektir. Ubuntu üzerinde basit ve etkili bir şekilde kurulabilir. Bu yapılandırma, web sitenizin daha güvenilir, performanslı ve ölçeklenebilir olmasını sağlar. Makalemizde belirtilen adımları uygulamak için yüksek performanslı bir VPS kullanmanızı özellikle tavsiye ederiz.
