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 balancingAMP hakkında detaylı bilgi paylaşmıştık. ApacheAMP 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.
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.
Ubuntu üzerinde Apache ile yük dengeleme yapabilmek için öncelikle gerekli modülleriAMP etkinleştirmemiz gerekiyor. Bu modüller:
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:
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.
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.
Yapılandırmaları yaptıktan sonra Apache’yi yeniden başlatmalısınız:
Apache Load Balancer‘da kullanılabilecek birkaç farklı yöntem bulunmaktadır. İşte bunlar:
Yukarıda byrequests yöntemini kullandık, ancak diğer yöntemler için de yapılandırmayı şu şekilde değiştirebilirsiniz:
Apache Load Balancer’ın sağladığı avantajlar şunlardır:
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.