Məqalənin tərcüməsi kursun başlaması ərəfəsində hazırlanıb
Yük balansı, istifadəçilərə xidmətə tək giriş nöqtəsi təqdim edərkən birdən çox hostda veb tətbiqlərini genişləndirmək üçün ümumi bir həlldir.
HAProxy resurs istifadəsini optimallaşdırmaq, ötürmə qabiliyyətini artırmaq, cavab müddətini minimuma endirmək və hər hansı bir resursun həddən artıq yüklənməsinin qarşısını almaq məqsədi daşıyır. O, bu təlimatda diqqət yetirəcəyimiz CentOS 8 kimi müxtəlif Linux paylamalarında, eləcə də sistemlərdə quraşdırıla bilər.
HAProxy xüsusilə çox yüksək trafikli veb-saytlar üçün uyğundur və buna görə də tez-tez çox serverli veb xidməti konfiqurasiyalarının etibarlılığını və performansını artırmaq üçün istifadə olunur. Bu təlimatda HAProxy-ni CentOS 8 bulud hostunda yük balanslaşdırıcısı kimi qurmaq üçün addımlar təsvir olunur, sonra isə trafiki veb serverlərinizə yönləndirir.
Ən yaxşı nəticələr üçün ilkin şərt olaraq, ən azı iki veb serveriniz və yük balanslaşdırma serveriniz olmalıdır. Veb serverlər arasında yük balansını yoxlamaq üçün ən azı nginx və ya httpd kimi əsas veb xidməti işləməlidir.
CentOS 8-də HAProxy quraşdırılması
HAProxy sürətlə inkişaf edən açıq mənbə proqramı olduğundan, standart CentOS depolarında sizə təqdim olunan paylama ən son versiya olmaya bilər. Ən son versiyanı tapmaq üçün aşağıdakı əmri yerinə yetirin:
sudo yum info haproxy
HAProxy həmişə seçmək üçün üç sabit versiya təqdim edir: ən son dəstəklənən iki versiya və hələ də kritik yeniləmələri alan üçüncü, köhnə versiya. Siz həmişə HAProxy veb saytında sadalanan ən son stabil versiyanı yoxlaya və sonra hansı versiya ilə işləmək istədiyinizə qərar verə bilərsiniz.
Bu təlimatda biz yazı zamanı standart depolarda hələ mövcud olmayan ən son stabil versiya 2.0-ı quraşdıracağıq. Siz onu orijinal mənbədən quraşdırmalısınız. Ancaq əvvəlcə proqramı yükləmək və tərtib etmək üçün lazımi şərtlərə əməl edib-etmədiyinizi yoxlayın.
sudo yum install gcc pcre-devel tar make -y
Aşağıdakı əmrdən istifadə edərək mənbə kodunu yükləyin. Daha yeni versiyanın olub olmadığını yoxlaya bilərsiniz
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Yükləmə tamamlandıqdan sonra aşağıdakı əmrdən istifadə edərək faylları çıxarın:
tar xzvf ~/haproxy.tar.gz -C ~/
Paketdən çıxarılan mənbə qovluğuna dəyişin:
cd ~/haproxy-2.0.7
Sonra sisteminiz üçün proqramı tərtib edin:
make TARGET=linux-glibc
Və nəhayət, HAProxy-nin özünü quraşdırın:
sudo make install
İndi HAProxy quraşdırılıb, lakin onun işləməsi üçün bəzi əlavə manipulyasiyalar tələb olunur. Aşağıdakı proqram təminatı və xidmətlərin qurulmasına davam edək.
Serveriniz üçün HAProxy-nin qurulması
İndi HAProxy girişləri üçün aşağıdakı qovluqları və statistik faylı əlavə edin:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
İkili fayllar üçün simvolik bir keçid yaradın ki, siz HAProxy əmrlərini normal istifadəçi kimi işlədə biləsiniz:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Proksi-ni sisteminizə xidmət kimi əlavə etmək istəyirsinizsə, nümunələrdən haproxy.init faylını /etc/init.d qovluğuna köçürün. Skriptin işləməsi üçün faylın icazələrini redaktə edin, sonra systemd demonunu yenidən yükləyin:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Siz həmçinin sistemin işə salınması zamanı xidmətin avtomatik yenidən başlamasına icazə verməlisiniz:
sudo chkconfig haproxy on
Rahatlıq üçün HAProxy-ni işə salmaq üçün yeni istifadəçi əlavə etmək də tövsiyə olunur:
sudo useradd -r haproxy
Bundan sonra, aşağıdakı əmrlə quraşdırılmış versiya nömrəsini yenidən yoxlaya bilərsiniz:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Bizim vəziyyətimizdə yuxarıdakı nümunə çıxışında göstərildiyi kimi versiya 2.0.7 olmalıdır.
Nəhayət, CentOS 8-də standart firewall bu layihə üçün olduqca məhdudlaşdırıcıdır. Tələb olunan xidmətləri aktivləşdirmək və təhlükəsizlik duvarını sıfırlamaq üçün aşağıdakı əmrlərdən istifadə edin:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Yük balanslaşdırıcısının qurulması
HAProxy-nin qurulması kifayət qədər sadə bir prosesdir. Əslində, sizə lazım olan tək şey HAProxy-ə hansı əlaqələri dinləməli olduğunu və onları hara ötürəcəyini söyləməkdir.
Bu, parametrləri müəyyən edən /etc/haproxy/haproxy.cfg konfiqurasiya faylı yaratmaqla həyata keçirilir. HAProxy konfiqurasiya seçimləri haqqında oxuya bilərsiniz
Nəqliyyat qatında yük balansı (qat 4)
Əsas quraşdırma ilə başlayaq. Yeni konfiqurasiya faylı yaradın, məsələn istifadə edərək vi aşağıdakı əmrlə:
sudo vi /etc/haproxy/haproxy.cfg
Fayla aşağıdakı bölmələri əlavə edin. Əvəz edin server_name Statistika səhifəsində serverlərinizə zəng etməli olan və şəxsi_ip - veb trafikini yönləndirmək istədiyiniz serverlərin şəxsi IP ünvanları. Şəxsi IP ünvanlarını yoxlaya bilərsiniz
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
Bu, 4-ci portda xarici olaraq http_front dinləmə adlı nəqliyyat qatının yük balanslaşdırıcısını (qat 80) müəyyən edir, sonra isə trafiki http_back adlı standart backendə yönləndirir. Əlavə statistika /haproxy?stats statistika səhifəsini göstərilən ünvana birləşdirir.
Müxtəlif yük balanslaşdırma alqoritmləri.
Backend bölməsində serverlərin müəyyən edilməsi HAProxy-ə mümkün olduqda dəyirmi sistem alqoritminə uyğun olaraq yük balansı üçün həmin serverlərdən istifadə etməyə imkan verir.
Balanslaşdırma alqoritmləri hər bir əlaqənin hansı serverə göndərildiyini müəyyən etmək üçün istifadə olunur. Budur faydalı variantlardan bəziləri:
- Rounddrobin: hər server öz çəkisinə görə növbə ilə istifadə olunur. Bu, serverlərin emal vaxtı bərabər paylanmış vəziyyətdə qaldıqda ən hamar və ədalətli alqoritmdir. Bu alqoritm dinamikdir, bu da serverin çəkisini tez bir zamanda tənzimləməyə imkan verir.
- Leastconn: ən az əlaqəsi olan server seçilir. Round robin eyni yüklə serverlər arasında həyata keçirilir. Bu alqoritmin istifadəsi LDAP, SQL, TSE və s. kimi uzun sessiyalar üçün tövsiyə olunur, lakin HTTP kimi qısa seanslar üçün çox uyğun deyil.
- Birincisi: mövcud əlaqə yuvaları olan ilk server əlaqəni qəbul edir. Serverlər ən aşağı rəqəmsal identifikatordan ən yüksəyə qədər seçilir ki, bu da standart olaraq fermadakı serverin mövqeyinə uyğun gəlir. Server maxconn dəyərinə çatdıqdan sonra növbəti server istifadə olunur.
- Mənbə: Sorğunu hansı serverin qəbul edəcəyini müəyyən etmək üçün mənbə IP ünvanı haşlanır və işləyən serverlərin ümumi çəkisinə bölünür. Beləliklə, eyni müştəri IP ünvanı həmişə eyni serverə gedəcək, serverlər isə dəyişməz qalacaq.
Tətbiq səviyyəsində yük balansının konfiqurasiyası (qat 7)
Mövcud olan başqa bir seçim yük balanslaşdırıcısını tətbiq səviyyəsində (qat 7) işləmək üçün konfiqurasiya etməkdir, bu, veb tətbiqinizin hissələri müxtəlif hostlarda yerləşdikdə faydalıdır. Buna bağlantının ötürülməsini məhdudlaşdırmaqla, məsələn, URL vasitəsilə nail olmaq olar.
HAProxy konfiqurasiya faylını mətn redaktoru ilə açın:
sudo vi /etc/haproxy/haproxy.cfg
Sonra aşağıdakı nümunəyə uyğun olaraq frontend və backend seqmentlərini qurun:
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
backend blog_back
server server_name3 private_ip3:80 check
Frontend url_blog adlı ACL qaydasını elan edir və bu, /blog ilə başlayan yolları olan bütün əlaqələrə aiddir. Use_backend müəyyən edir ki, url_blog şərtinə uyğun olan bağlantılar blog_back adlı backend tərəfindən təmin edilməlidir və bütün digər sorğular defolt backend tərəfindən idarə olunur.
Arxa tərəfdə konfiqurasiya iki server qrupu qurur: əvvəlki kimi http_back və example.com/blog ilə əlaqəni idarə edən blog_back adlı yenisi.
Parametrləri dəyişdirdikdən sonra faylı yadda saxlayın və aşağıdakı əmrlə HAProxy-ni yenidən başladın:
sudo systemctl restart haproxy
Başlayarkən hər hansı xəbərdarlıq və ya səhv alsanız, hər hansı bir konfiqurasiyanı yoxlayın və bütün lazımi fayl və qovluqları yaratdığınızdan əmin olun və sonra yenidən başladın.
Quraşdırmanın sınaqdan keçirilməsi
HAProxy konfiqurasiya edildikdən və işə salındıqdan sonra brauzerdə yük balanslaşdırıcı serverinin ictimai IP ünvanını açın və arxa hissəyə düzgün qoşulub-qoşulmadığınızı yoxlayın. Konfiqurasiyadakı stats uri parametri göstərilən ünvanda statistik səhifə yaradır.
http://load_balancer_public_ip/haproxy?stats
Statistika səhifəsini yüklədiyiniz zaman bütün serverləriniz yaşıl rəngdədirsə, quraşdırma uğurlu oldu!
Statistika səhifəsində veb hostlarınızı izləmək üçün bəzi faydalı məlumatlar, o cümlədən yuxarı/aşağı vaxt və sessiyaların sayı var. Server qırmızı ilə işarələnibsə, serverin işlədiyinə və onu yük balanslaşdırıcısından ping edə bildiyinizə əmin olun.
Yük balanslaşdırıcınız cavab vermirsə, HTTP bağlantılarının firewall tərəfindən bloklanmadığından əmin olun. Həmçinin HAProxy-nin aşağıdakı əmrlə işlədiyinə əmin olun:
sudo systemctl status haproxy
Statistika səhifəsinin parolla qorunması
Bununla belə, əgər statistika səhifəsi sadəcə ön hissədə verilmişdirsə, o, ictimaiyyət üçün açıqdır, bu yaxşı fikir olmaya bilər. Bunun əvəzinə, haproxy.cfg faylınızın sonuna aşağıdakı nümunəni əlavə etməklə, ona öz port nömrənizi təyin edə bilərsiniz. Əvəz edin istifadəçi adı и parol təhlükəsiz bir şeyə:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Yeni dinləyici qrupunu əlavə etdikdən sonra köhnə stats uri arayışını frontend qrupundan çıxarın. Bitirdikdən sonra faylı yadda saxlayın və HAProxy-ni yenidən başladın.
sudo systemctl restart haproxy
Sonra yeni port nömrəsi ilə yük balanslaşdırıcısını yenidən açın və konfiqurasiya faylında göstərdiyiniz istifadəçi adı və şifrə ilə daxil olun.
http://load_balancer_public_ip:8181
Bütün serverlərinizin hələ də yaşıl olduğundan əmin olun və sonra brauzerinizdə heç bir port nömrəsi olmadan yalnız yük balanslaşdırıcı IP-ni açın.
http://load_balancer_public_ip/
Daxili serverlərinizdə ən azı bir neçə müxtəlif açılış səhifələriniz varsa, səhifəni hər dəfə yenidən yüklədiyiniz zaman fərqli hostdan cavab aldığınızı görəcəksiniz. Siz konfiqurasiya bölməsində müxtəlif balanslaşdırma alqoritmlərini sınaya və ya baxa bilərsiniz
Nəticə: HAProxy Load Balancer
HAProxy yük balanslaşdırıcınızı uğurla qurduğunuz üçün sizi təbrik edirik! Əsas yük balansı quraşdırması ilə belə, veb tətbiqinizin performansını və əlçatanlığını əhəmiyyətli dərəcədə yaxşılaşdıra bilərsiniz. Bu təlimat HAProxy ilə yük balansına girişdir və bu, sürətli quraşdırma təlimatında təsvir oluna biləndən daha çox şeyə qadirdir. Müxtəlif konfiqurasiyalardan istifadə edərək sınaqdan keçirməyi məsləhət görürük
Veb xidmətinizi boşluqla qorumaq üçün çoxlu hostlardan istifadə etməklə, yük balanslaşdırıcının özü hələ də uğursuzluq nöqtəsini təmsil edə bilər. Çoxlu yük balanslaşdırıcıları arasında üzən IP qurmaqla yüksək əlçatanlığı daha da təkmilləşdirə bilərsiniz. Bu barədə ətraflı məlumatı bizim məqaləmizdə tapa bilərsiniz
Kurs haqqında ətraflı
Mənbə: www.habr.com