HAProxy ve Keepalived ile Basit Yüksek Erişilebilirlikli Load Balancer

Web servislerimi biraz daha sağlam tutmak için uzun süredir HAProxy ve Keepalived ikilisini kullanıyorum. Kafa karıştırıcı gibi görünse de aslında temel yapı basit.
Burada hem örnek config’leri tam paylaşıyorum, hem de hangi satırı neden değiştireceğini kısaca not düşüyorum.
1. HAProxy Kurulumu ve Ayarı
Önce iki sunucuda da HAProxy kuruluyor:
sudo apt update
sudo apt install haproxy
Sonra /etc/haproxy/haproxy.cfg
dosyasını düzenliyorum. Örnek bir yapı şöyle:
global
log /dev/log local0
log /dev/log local1 notice
daemon
defaults
log global
mode http
option httplog
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
server web1 192.168.1.101:80 check
server web2 192.168.1.102:80 check
Dikkat etmen gereken yerler:
server web1 192.168.1.101:80 check
→ Burada kendi backend web sunucularının IP adreslerini ve portlarını girmen gerekiyor.bind *:80
→ Load balancer’ın dinleyeceği port. (HTTP için 80, istersen HTTPS de ayarlanabilir.)
2. Keepalived Kurulumu ve Konfigürasyonu
Gene iki sunucuda da:
sudo apt install keepalived
Sonra /etc/keepalived/keepalived.conf
dosyasını açıyorum.
Master Sunucu İçin:
vrrp_instance VI_1 {
state MASTER # MASTER burada, yedeğe BACKUP yazacağız
interface ens33 # Sanal IP'nin atanacağı ağ kartı adı (ör: eth0 olabilir)
virtual_router_id 51 # Aynı ID yedek sunucuda da olmalı
priority 101 # MASTER için daha yüksek (yedek 100 veya daha az)
advert_int 1
authentication {
auth_type PASS
auth_pass 1234 # Şifre iki sunucuda da aynı olmalı
}
virtual_ipaddress {
192.168.1.200 # Kullanacağın sanal IP
}
}
Backup Sunucu İçin:
Aynısı, sadece şu iki satırı değiştir:
state BACKUP
priority 100
Diğer her şey aynı kalıyor.
Burada önemli noktalar:
interface ens33
:
→ Kendi ağ kartı adını yazmalısın (ip a
ile bakabilirsin).priority
:
→ MASTER sunucu daha yüksek olmalı, yedek daha düşük.auth_pass
:
→ Aynı şifre olmalı yoksa çalışmaz.virtual_ipaddress
:
→ Kullanmak istediğin sanal IP. Sunucuların bu subnet’te olmalı.
3. Servisleri Başlatma
Her iki sunucuda:
sudo systemctl restart haproxy
sudo systemctl enable haproxy
sudo systemctl restart keepalived
sudo systemctl enable keepalived
Sanal IP hangi sunucudaysa, o anda aktif olan odur. Master’ı kapatınca IP hemen yedeğe geçer.
Buradaki önemli noktalar çoğu zaman basit şeyler oluyor:
Ağ kartı adını yanlış yazmak, IP aralığını karıştırmak veya şifreleri tutturamamak… Bunlara dikkat ettiğinde HAProxy ve Keepalived ile yük dengelemeyi ve kesintisizliği rahatça sağlayabilirsin.
Ben genelde böyle kuruyorum, işimi fazlasıyla görüyor.