Hizmetlerin kesintisiz çalışması, özellikle kritik altyapılarda büyük önem taşır. HAProxy, yük dengeleme (load balancing) ve trafik yönetimiyle öne çıkan bir araçtır. Ancak, HAProxy tek başına sunucu arızalarına karşı bir çözüm sunmaz. Bu noktada, Keepalived devreye girerek sanal bir IP üzerinden yüksek erişilebilirlik sağlar.
Bu yazıda, HAProxy ve Keepalived kullanarak bir yüksek erişilebilirlik çözümünü adım adım oluşturacağız. Ayrıca yapılandırmamızda, bir sunucu devre dışı kaldığında diğer sunucunun devreye girmesini sağlayan preempt
özelliğini detaylı bir şekilde ele alacağız.
HAProxy ve Keepalived ile High Availability Adımları
1. Keepalived Kurulumu
Keepalived her iki sunucuda (Master ve Backup) kurulur:
sudo apt install keepalived
2. Sanal IP için Sistem Ayarı
Keepalived’ın kullanacağı sanal IP’yi dinlemek için sistem ayarı yapılır:
echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
sysctl -p
3. Keepalived Konfigürasyonu
Keepalived konfigürasyonu hem Master hem de Backup sunucularda farklı olacak şekilde yapılır.
3.1 Master Sunucu Konfigürasyonu
Master sunucuda /etc/keepalived/keepalived.conf
dosyasını oluşturun ve aşağıdaki içeriği ekleyin.
Not:
priority
değeri Master için daha yüksek olmalıdır.
global_defs {
router_id haproxy_master
}
vrrp_script chk_haproxy {
script "killall -0 haproxy" # HAProxy çalışıyor mu kontrol eder
interval 2 # Kontrol aralığı 2 saniye
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 100
priority 101
advert_int 1
unicast_src_ip 192.168.1.10
unicast_peer {
192.168.1.11
}
authentication {
auth_type PASS
auth_pass mySecurePassword
}
virtual_ipaddress {
192.168.1.100
}
track_script {
chk_haproxy
}
preempt yes # Master tekrar aktif hale geldiğinde sanal IP'yi geri alır
}
3.2 Backup Sunucu Konfigürasyonu
Backup sunucuda /etc/keepalived/keepalived.conf
dosyasını oluşturun ve aşağıdaki içeriği ekleyin.
Not:
priority
değeri Backup için daha düşük olmalıdır.
global_defs {
router_id haproxy_backup
}
vrrp_script chk_haproxy {
script "killall -0 haproxy" # HAProxy çalışıyor mu kontrol eder
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 100
priority 100
advert_int 1
unicast_src_ip 192.168.1.11
unicast_peer {
192.168.1.10
}
authentication {
auth_type PASS
auth_pass mySecurePassword
}
virtual_ipaddress {
192.168.1.100
}
track_script {
chk_haproxy
}
preempt yes # Master tekrar aktif hale geldiğinde IP Backup’tan Master’a geçer
}
Preempt Yes Nedir?
preempt yes
, bir sunucu arızası sonrası aktif IP’nin yönetimini belirler. Eğer Master sunucu arızadan sonra tekrar aktif hale gelirse, sanal IP’nin Backup’tan Master’a geri geçmesini sağlar. Bu özellik, sistemin asıl Master rolüne dönmesini ve yönetimin stabil bir sunucuda kalmasını sağlar.
4. Keepalived Servisinin Çalıştırılması
Her iki sunucuda Keepalived servisini yeniden başlatın:
sudo systemctl restart keepalived.service
5. HAProxy Yapılandırması
HAProxy, Keepalived tarafından oluşturulan sanal IP’yi dinler. Sanal IP üzerinden gelen trafiği yük dengelemek için aşağıdaki yapılandırmayı /etc/haproxy/haproxy.cfg
dosyasına ekleyin.
Frontend Tanımı
Frontend, gelen talepleri dinler:
frontend https_frontend
bind 192.168.1.100:443 # Sanal IP ve port
default_backend web_servers # Backend'e yönlendirir
Backend Tanımı
Backend, talepleri hedef sunuculara yönlendirir:
backend web_servers
server web01 192.168.1.201:80 check
server web02 192.168.1.202:80 check
6. Failover Testi
Failover işlemini test etmek için şu adımları izleyin:
- Master Sunucuda HAProxy’yi durdurun:
sudo systemctl stop haproxy
- Backup Sunucuda Sanal IP’nin aktif olduğunu kontrol edin:
ip addr show
Backup sunucu, sanal IP’yi devralmış olmalıdır. - Master tekrar çalışmaya başladığında IP’nin geri geçtiğini doğrulayın:
sudo systemctl start haproxy ip addr show
Bu yapılandırma ile HAProxy ve Keepalived kullanarak yüksek erişilebilirlik elde edebilirsiniz. Keepalived, Master sunucunun çalışmaması durumunda sanal IP’yi Backup sunucuya aktarır ve kesintisiz hizmet sağlar. Ayrıca preempt
seçeneği, Master sunucu yeniden devreye girdiğinde sanal IP’nin asıl rolüne dönmesini garanti eder.
HAProxy’nin yük dengeleme yetenekleriyle birleşen bu yapılandırma, kritik altyapılarda kesintisiz hizmet sağlayan güçlü bir çözüm sunar.