Doküman

Ubuntu 20.04’te HAProxy’yi Keepalived ile Yapılandırma

Bu yazıda, Ubuntu 20.04’te Keepalived ile yüksek düzeyde kullanılabilir HAProxy’yi nasıl yapılandıracağımızı öğreneceğiz. Keepalived, belirli bir rotanın kullanılamaması durumunda bir yedekleme rotasına yük devretme hizmetleri sağlamak için HAProxy ile çalışabilir. Bu, daha sağlam ve ölçeklenebilir bir yüksek kullanılabilirlik ortamı sağlar. 

Keepalived, aktif ve pasif yönlendiricilerde yük dengeleme ve yük devretme görevlerini gerçekleştirmek için Linux sanal sunucusunu (LVS) kullanırken, HAProxy, TCP ve HTTP uygulamalarına yük dengeleme ve yüksek kullanılabilirlik hizmetleri gerçekleştirir.

Keepalived, birbirlerinin durumunu belirlemek için ana (aktif) ve yedek (pasif) LVS yönlendiricileri (bizim durumumuzda HAProxy sunucuları olduğundan beri yük dengeleme web uygulamalarıdır) arasında periyodik reklamlar göndermek için Sanal Yönlendirici Yedeklilik Protokolünü kullanır. Bir ana sunucu önceden tanımlanmış bir süre içinde kendi reklamını yapamazsa, Keepalived yük devretmeyi başlatır ve yedek sunucu ana sunucu olur.

Tüm sanal sunuculara, Floating IP olarak da bilinen bir Sanal IP atanır. Bu, genel olarak yönlendirilebilir bir IP/adresdir. Herhangi bir zamanda aktif bir sunucuya dinamik olarak atanır.

Ubuntu 20.04’te Yüksek Derecede Kullanılabilir HAProxy’yi Keepalived ile Yapılandırma

Bu kurulum için halihazırda bir HAProxy sunucusunun kurulu ve çalışıyor olması gerekir.

Yüksek kullanılabilirlik için Keepalived içeren iki HAProxy sunucusu kullanacağız. Dağıtım mimarimiz aşağıdadır.

Ubuntu 20.04’te Keepalived’i Kurun ve Yapılandırın

HAProxy Sunucularına Keepalived yükleyin

Demo ortamımızda Ubuntu 20.04 üzerinde HAProxy sunucuları çalıştırıyoruz. Bu nedenle, sistem paketi önbelleğinizin güncel olduğunu varsayarak, aşağıdaki komutu çalıştırın, Ubuntu 20.04’te Keepalived’i kurun

root@lb01:~# apt install keepalived

Similarly, install Keepalived on second HAProxy server.

root@lb02:~# apt install keepalived

Benzer şekilde, ikinci HAProxy sunucusuna Keepalived kurun.

IP iletmeyi ve yerel olmayan bağlamayı yapılandırın

Keepalived hizmetinin ağ paketlerini arka uç sunucularına iletmesini sağlamak için IP iletmeyi etkinleştirmeniz gerekir. Bu komutu her iki HAProxy sunucusunda çalıştırın;

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf

Benzer şekilde, yerel olmayan IP adresine, yani yük devretme IP adresine (Kayan IP) bağlanmak için HAProxy ve Keepalived’i etkinleştirmeniz gerekir.

echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf

Sysctl ayarlarını yeniden yükleyin;

sysctl -p

Keepalived’i yapılandırın

Keepalived için varsayılan yapılandırma dosyası /etc/keepalive/keepalive.conf olmalıdır. Ancak, bu yapılandırma varsayılan olarak oluşturulmaz. Aşağıdaki içerikle konfigürasyonu oluşturun;

vim /etc/keepalive/keepalive.conf

Ana Düğüm (lb01) için Keepalived Yapılandırması

# Global Settings for notifications
global_defs {
    notification_email {
        [email protected]     # Email address for notifications 
    }
    notification_email_from [email protected]	# The from address for the notifications
    smtp_server 127.0.0.1     			# SMTP server address
    smtp_connect_timeout 15
}
  
# Define the script used to check if haproxy is still working
vrrp_script chk_haproxy { 
    script "/usr/bin/killall -0 haproxy"
    interval 2 
    weight 2 
}
  
# Configuration for Virtual Interface
vrrp_instance LB_VIP {
    interface enp0s8
    state MASTER        # set to BACKUP on the peer machine
    priority 101        # set to  99 on the peer machine
    virtual_router_id 51
  
    smtp_alert          # Enable Notifications Via Email
  
    authentication {
        auth_type AH
        auth_pass myP@ssword	# Password for accessing vrrpd. Same on all devices
    }
    unicast_src_ip 192.168.57.7 # Private IP address of master
    unicast_peer {
        192.168.58.4		# Private IP address of the backup haproxy
   }
  
    # The virtual ip address shared between the two loadbalancers
    virtual_ipaddress {
        192.168.100.200
    }
     
    # Use the Defined Script to Check whether to initiate a fail over
    track_script {
        chk_haproxy
    }
}

Yedekleme Düğümü için Keepalived Yapılandırması (lb02)

global_defs {
    notification_email {
        [email protected]
    }
    notification_email_from [email protected]
    smtp_server 127.0.0.1
    smtp_connect_timeout 15
}
  
vrrp_script chk_haproxy { 
    script "/usr/bin/killall -0 haproxy"
    interval 2 
    weight 2 
}
  
vrrp_instance LB_VIP {
    interface enp0s8
    state BACKUP
    priority 100
    virtual_router_id 51
  
    smtp_alert
  
    authentication {
        auth_type AH
        auth_pass myP@ssword
    }
    unicast_src_ip 192.168.58.4 # Private IP address of the backup haproxy
    unicast_peer {
        192.168.57.7	# Private IP address of the master haproxy
   }
  
    virtual_ipaddress {
        192.168.100.200
    }
     
    track_script {
        chk_haproxy
    }
}

Keepalived’i Ubuntu 20.04’te Çalıştırmak

Artık Keepalived’i başlatabilir ve tüm düğümlerde sistem önyüklemesinde çalışacak şekilde etkinleştirebilirsiniz;

systemctl enable --now keepalived

Ana Düğümdeki durumu kontrol edin;

systemctl status keepalived

IP adresi atamasını kontrol edin;

Ana düğümde;

ip --brief add
lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp0s3           UP             10.0.2.15/24 fe80::a00:27ff:fe9d:888e/64 
enp0s8           UP             192.168.100.81/24 192.168.100.200/32 fe80::a00:27ff:feba:9e8c/64 
enp0s9           UP             192.168.57.7/24 fe80::a00:27ff:fe31:b7db/64

Vurgulanan satıra bakın, kayan bir IP atanmıştır, 192.168.100.200/32 .

köle üzerinde;

lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp0s3           UP             10.0.2.15/24 fe80::a00:27ff:fefe:fc06/64 
enp0s8           UP             192.168.100.80/24 fe80::a00:27ff:fe75:9eae/64 
enp0s9           UP             192.168.58.4/24 fe80::a00:27ff:fef4:41/64

Şimdi ana düğümde enp0s8 arabirimini indirelim. Arayüzü kaldırmadan önce konsoldan oturum açtığınızdan emin olun .

ip link set enp0s8 down

Yedekleme düğümünde Keepalived durumunu kontrol edin;

systemctl status keepalived

HAProxy’yi Keepalived Sanal IP ile yapılandırın

HAProxy yapılandırma dosyamızda yapacağımız tek değişiklik , ön uç bağlama IP’sini ve istatistik IP adresini VIP’ye veya bizim durumumuzda 192.168.100.200 olan kayan IP’ye ayarlamaktır.

vim /etc/haproxy/haproxy.cfg
...
frontend kifarunixlb
        bind 192.168.100.200:443 ssl crt /etc/ssl/certs/haproxy.pem
        default_backend webapps
        option forwardfor
...
listen stats
        bind 192.168.100.200:8443 ssl crt /etc/ssl/certs/haproxy.pem
        stats enable
...

Yapılandırma dosyasını kaydedin ve çıkın.

HAProxy’yi yeniden başlatın.

systemctl restart haproxy

HAProxy sunucularından biri kayan IP üzerinden çöktüğünde bile artık web uygulamalarınıza erişebilmelisiniz.

Yazının orijinalini buradan okuyabilirsiniz.