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.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.