HAProxy Nedir?
Neden HAProxy?
1. Yüksek Performans: HAProxy, saniyede milyonlarca istek işleyebilir. Bu da demek oluyor ki, her türlü web uygulamanız için mükemmel performans sunar.
2. Yük Dengeleme: Trafiği birkaç sunucuya dağıtarak, her birinin yükünü hafifletir ve uygulamanızın kesintisiz çalışmasını sağlar.
3. Sağlık Kontrolü: HAProxy, her bir sunucunun durumunu sürekli izler. Eğer bir sunucu çökse, hemen başka bir sunucuya yönlendirme yapar.
4. Kolay Kurulum: Linux üzerinde kolayca kurulabilir ve yapılandırılabilir.
Hadi şimdi, HAProxy’yi adım adım kurmayı ve yapılandırmayı öğrenelim.
HAProxy Kurulumu
# Adım 1: HAProxy Kurulumunu Yapın
sudo apt-get update
sudo apt-get install haproxy
Bu işlem tamamlandığında, HAProxy yüklenmiş olacak. Şimdi hizmetin çalışıp çalışmadığını kontrol edelim.
systemctl status haproxy
Eğer her şey doğru bir şekilde kurulduysa, "active" olarak görünmelidir.
# Adım 2: HAProxy Yapılandırmasını Düzenleyin
sudo nano /etc/haproxy/haproxy.cfg
Yapılandırma dosyasının temel yapısı şu şekilde görünür:
```bash
global
log /dev/log local0
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 2000
defaults
log global
option httplog
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:80
default_backend http_back
backend http_back
server web1 192.168.1.1:80 check
server web2 192.168.1.2:80 check
```
Yukarıdaki yapılandırmada, frontend kısmı gelen istemci isteklerini alırken, backend kısmı bu istekleri yönlendireceğiniz sunucuları belirtir.
- frontend http_front kısmında, HAProxy’yi 80 numaralı port üzerinden dinleyecek şekilde yapılandırdık.
- backend http_back kısmında ise, iki farklı web sunucusuna yönlendirme yapıyoruz. Bu sunucuların IP adreslerini kendi ortamınıza göre değiştirmelisiniz.
# Adım 3: HAProxy’yi Yeniden Başlatın
sudo systemctl restart haproxy
Bu komut ile HAProxy yeniden başlatılır ve yeni yapılandırma aktif hale gelir.
HAProxy Kullanımı ve İleri Seviye Özellikler
# Trafik Yönlendirme
```bash
frontend http_front
bind *:80
acl is_api_path path_beg /api
use_backend api_back if is_api_path
backend api_back
server api_server 192.168.1.3:80 check
```
Bu yapılandırmada, `/api` yoluyla gelen tüm istekler, `192.168.1.3` IP adresindeki sunucuya yönlendirilir.
# SSL Desteği
SSL sertifikasını `/etc/ssl/certs/` dizinine yükledikten sonra şu şekilde yapılandırma yapabilirsiniz:
```bash
frontend https_front
bind *:443 ssl crt /etc/ssl/certs/mycert.pem
default_backend http_back
```
# Yük Dengeleme Algoritmaları
- round-robin: Trafiği tüm sunucular arasında eşit olarak dağıtır.
- leastconn: En az bağlantıya sahip sunucuya yönlendirme yapar.
- source: İstemci IP adresine göre yönlendirme yapar.
Bu algoritmalar, trafiği en verimli şekilde yönetmenizi sağlar.
HAProxy'yi Güvenli Hale Getirme
1. Erişim Kontrolü: HAProxy’yi sadece güvenilir IP adreslerinden erişilebilir hale getirebilirsiniz.
2. SSL/TLS Kullanımı: HTTPS trafiğini zorunlu hale getirmek için SSL sertifikalarını kullanın.
3. Loglama ve İzleme: HAProxy loglarını aktif hale getirerek her türlü hatayı ve olayı izleyebilirsiniz.