CentOS-da HAProxy Load Balancer-ın quraşdırılması

Məqalənin tərcüməsi kursun başlaması ərəfəsində hazırlanıb Linux administratoru. Virtuallaşdırma və Klasterləşdirmə»

CentOS-da HAProxy Load Balancer-ın quraşdırılması

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 yüksək əlçatanlıq və proksi funksiyasını təmin edən ən məşhur açıq mənbə yük balanslaşdırma proqramlarından biridir.

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. Debian 8 и Ubuntu 16.

CentOS-da HAProxy Load Balancer-ın quraşdırılması

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 HAProxy yükləmə səhifəsi.

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 sənədlər səhifəsindəbu haqda daha çox bilmək istəyirsinizsə.

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 UpCloud idarəetmə panelində və tabda Şəxsi şəbəkə menyuda şəbəkə.

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!

CentOS-da HAProxy Load Balancer-ın quraşdırılması

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 tam sənədlər.

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 geniş sənədlərHAProxy-də mövcuddur və sonra istehsal mühitiniz üçün yük balansını planlaşdırmağa başlayın.

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 UpCloud-da üzən IP ünvanları haqqında məqalə.

Kurs haqqında ətraflı Linux administratoru. Virtuallaşdırma və Klasterləşdirmə»***

Mənbə: www.habr.com

Добавить комментарий