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

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.

Read more

Kubernetes NodeLocalDNS ConfigMap Güncellemesi Nasıl Yapılır?

Kubernetes NodeLocalDNS ConfigMap Güncellemesi Nasıl Yapılır?

Kubernetes’te DNS işlerini hızlandırmak için NodeLocalDNS sıkça tercih ediliyor. Zamanla, kendi DNS sunucunu veya internal bir hostname eklemen gerekirse, işin anahtarı ConfigMap dosyasını doğru düzenlemekten geçiyor. Aşağıda, gerçek bir örnekle, ConfigMap’i nasıl güncelleyeceğini ve önemli satırları kısa kısa notlarla anlatıyorum. NodeLocalDNS İçin Örnek ConfigMap Mevcut ConfigMap’i düzenlemek