Masang pangimbang beban HAProxy dina CentOS

Tarjamahan tina artikel ieu disiapkeun dina wengi mimiti kursus "Pangurus Linux. Virtualisasi sareng klaster"

Masang pangimbang beban HAProxy dina CentOS

Balancing beban mangrupikeun solusi umum pikeun skala horisontal aplikasi wéb dina sababaraha host bari nyayogikeun pangguna hiji titik aksés kana jasa éta. HAProxy mangrupikeun salah sahiji parangkat lunak open source load balancing anu pang populerna anu ogé nyayogikeun kasadiaan anu luhur sareng fungsionalitas proxy.

HAProxy narékahan pikeun ngaoptimalkeun pamakean sumber daya, maksimalkeun throughput, ngaminimalkeun waktos réspon, sareng ngahindarkeun seueur sumber daya individu. Éta tiasa dipasang dina rupa-rupa distribusi Linux, sapertos CentOS 8, anu bakal urang difokuskeun dina pituduh ieu, ogé sistem. Debian 8 и Ubuntu 16.

Masang pangimbang beban HAProxy dina CentOS

HAProxy sabagian cocog pikeun situs wéb anu lalu lintas anu luhur pisan sahingga sering dianggo pikeun ningkatkeun reliabilitas sareng kinerja konfigurasi jasa wéb multi-server. Pituduh ieu ngagariskeun léngkah-léngkah pikeun nyetél HAProxy salaku pangimbang beban dina host awan CentOS 8, anu teras ngalihkeun lalu lintas ka pangladén wéb anjeun.

Salaku prasyarat pikeun hasil anu pangsaéna, anjeun kedah gaduh sahenteuna dua pangladén wéb sareng pangladén kasaimbangan beban. Pangladén wéb kedah ngajalankeun sahenteuna jasa wéb dasar sapertos nginx atanapi httpd pikeun nguji kasaimbangan beban antara aranjeunna.

Masang HAProxy dina CentOS 8

Kusabab HAProxy mangrupikeun aplikasi open source anu ngembang pesat, distribusi anu sayogi pikeun anjeun dina repositori CentOS standar tiasa sanés versi panganyarna. Pikeun milarian versi ayeuna, jalankeun paréntah di handap ieu:

sudo yum info haproxy

HAProxy sok nyadiakeun tilu vérsi stabil pikeun dipilih: dua vérsi nu dirojong panganyarna jeung katilu, vérsi nu leuwih kolot nu masih narima apdet kritis. Anjeun salawasna tiasa pariksa versi stabil panganyarna didaptarkeun dina ramatloka HAProxy lajeng mutuskeun versi nu Anjeun hoyong gawekeun.

Dina pituduh ieu, urang bakal masang versi stabil panganyarna 2.0, anu henteu acan sayogi dina gudang standar nalika nyerat pituduh. Anjeun bakal kedah install deui tina sumber aslina. Tapi ke heula, pariksa naha anjeun parantos nyumponan syarat anu diperyogikeun pikeun ngaunduh sareng nyusun program.

sudo yum install gcc pcre-devel tar make -y

Unduh kodeu sumber nganggo paréntah di handap ieu. Anjeun tiasa mariksa lamun aya versi anyar sadia on Kaca download HAProxy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Saatos unduh parantos réngsé, ekstrak file nganggo paréntah di handap ieu:

tar xzvf ~/haproxy.tar.gz -C ~/

Pindah ka diréktori sumber anu teu dibungkus:

cd ~/haproxy-2.0.7

Teras kompilkeun program pikeun sistem anjeun:

make TARGET=linux-glibc

Tungtungna, pasang HAProxy sorangan:

sudo make install

HAProxy ayeuna dipasang, tapi merlukeun sababaraha manipulasi tambahan sangkan eta jalan. Hayu urang teraskeun nyetel parangkat lunak sareng jasa di handap.

Nyetél HAProxy pikeun server anjeun

Ayeuna tambahkeun diréktori sareng file statistik ieu pikeun éntri HAProxy:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Jieun tautan simbolis pikeun binari supados anjeun tiasa ngajalankeun paréntah HAProxy salaku pangguna biasa:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Upami anjeun hoyong nambihan proxy kana sistem anjeun salaku jasa, salin file haproxy.init tina conto kana diréktori /etc/init.d anjeun. Édit idin file supados naskahna jalan, teras balikan deui daemon systemd:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Anjeun ogé kedah ngijinkeun jasa pikeun otomatis balikan deui nalika sistem ngamimitian:

sudo chkconfig haproxy on

Pikeun genah, disarankeun ogé nambihan pangguna énggal pikeun ngajalankeun HAProxy:

sudo useradd -r haproxy

Saatos ieu, anjeun tiasa pariksa deui nomer versi anu dipasang nganggo paréntah di handap ieu:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

Dina kasus urang, versi kudu 2.0.7, ditémbongkeun saperti dina conto kaluaran di luhur.

Tungtungna, firewall standar di CentOS 8 cukup restrictive pikeun proyék ieu. Anggo paréntah di handap ieu pikeun ngijinkeun jasa anu diperyogikeun sareng ngareset firewall:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Beban Balancer Setup

Nyetél HAProxy mangrupikeun prosés anu saderhana. Intina, sadaya anu anjeun kedah laksanakeun nyaéta ngawartosan HAProxy sambungan naon anu kedah didangukeun sareng dimana éta kedah ngirimkeunana.

Hal ieu dilakukeun ku nyieun hiji file konfigurasi /etc/haproxy/haproxy.cfg kalawan netepkeun setélan. Anjeun tiasa maca ngeunaan pilihan konfigurasi HAProxy dina kaca dokuméntasiupami anjeun hoyong terang langkung seueur ngeunaan éta.

Balancing beban dina lapisan angkutan (lapisan 4)

Hayu urang mimitian ku setelan dasar. Jieun file config anyar, contona ngagunakeun vi kalayan paréntah di handap ieu:

sudo vi /etc/haproxy/haproxy.cfg

Tambahkeun bagian handap kana file. Ngaganti server_name naon kudu nelepon server anjeun dina kaca statistik, jeung private_ip - alamat IP pribadi tina server anu anjeun hoyong ngarahkeun lalu lintas wéb. Anjeun tiasa pariksa alamat IP pribadi dina panel kontrol UpCloud jeung dina tab Jaringan swasta dina ménu Network.

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

Ieu ngahartikeun hiji lapisan angkutan balancer beban (lapisan 4) externally ngaranna http_front déngékeun on port 80, nu lajeng neraskeun lalulintas ka backend standar ngaranna http_back. Statistik tambahan /haproxy?stats nyambungkeun kaca statistik ka alamat nu ditangtukeun.

Rupa-rupa algoritma beban balancing.

Nangtukeun server dina bagian backend ngamungkinkeun HAProxy ngagunakeun server ieu pikeun beban balancing nurutkeun algoritma round-robin lamun mungkin.

Algoritma balancing dipaké pikeun nangtukeun mana server di backend unggal sambungan disalurkeun. Ieu sababaraha pilihan mangpaat:

  • Roundrobin: Unggal server dipaké dina gilirannana nurutkeun beurat na. Ieu mangrupikeun algoritma anu paling lancar sareng paling adil nalika waktos ngolah server tetep merata. Algoritma ieu dinamis, ngamungkinkeun beurat server disaluyukeun dina laleur.
  • Leastconn: server jeung pangsaeutikna sambungan dipilih. Round robin dipigawé antara server jeung beban sarua. Ngagunakeun algoritma ieu dianjurkeun pikeun sesi panjang kayaning LDAP, SQL, TSE, jsb, tapi teu cocog pisan pikeun sesi pondok kayaning HTTP.
  • Mimiti: The server munggaran kalayan slot sambungan sadia narima sambungan. Server dipilih ti ID numerik panghandapna ka pangluhurna, nu ingkar kana posisi server di tegalan. Sakali server ngahontal maxconn, server salajengna dipaké.
  • sumber: Alamat IP sumber hashed sarta dibagi ku total beurat ngajalankeun server pikeun nangtukeun mana server bakal nampa pamundut nu. Ku cara ieu, alamat IP klien anu sami bakal teras-terasan ka server anu sami, sedengkeun pangladén tetep sami.

Nyetél kasaimbangan beban dina tingkat aplikasi (lapisan 7)

Pilihan séjén anu sayogi nyaéta ngonpigurasikeun kasaimbangan beban pikeun dijalankeun dina lapisan aplikasi (lapisan 7), anu kapaké nalika bagian tina aplikasi wéb anjeun aya dina host anu béda. Ieu bisa dihontal ku throttling pangiriman sambungan, contona ku URL.

Buka file konfigurasi HAProxy nganggo pangropéa téksu:

sudo vi /etc/haproxy/haproxy.cfg

Teras ngonpigurasikeun bagéan frontend sareng backend sapertos conto di handap ieu:

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 nyatakeun aturan ACL anu disebut url_blog anu manglaku ka sadaya sambungan sareng jalur anu dimimitian ku /blog. Use_backend netepkeun yén sambungan anu cocog sareng kaayaan url_blog kedah dilayanan ku backend anu namina blog_back, sareng sadaya pamundut sanésna diurus ku backend standar.

Di sisi backend, konfigurasi nyetél dua grup server: http_back, sakumaha saméméhna, sarta anyar disebut blog_back, nu handles sambungan kana example.com/blog.

Saatos ngarobih setélan, simpen file sareng balikan deui HAProxy nganggo paréntah di handap ieu:

sudo systemctl restart haproxy

Upami anjeun nampi peringatan atanapi pesen kasalahan nalika ngamimitian, pariksa konfigurasi anjeun pikeun aranjeunna sareng pastikeun anjeun parantos nyiptakeun sadaya file sareng polder anu diperyogikeun, teras cobian balikan deui.

Nguji setelan

Sakali HAProxy dikonpigurasikeun sareng jalan, buka alamat IP umum tina server pangimbang beban dina browser sareng pariksa naha anjeun nyambung ka backend leres. Parameter uri stats dina konfigurasi nyiptakeun halaman statistik dina alamat anu ditangtukeun.

http://load_balancer_public_ip/haproxy?stats

Nalika anjeun ngamuat halaman statistik, upami sadaya pangladén anjeun nunjukkeun héjo, maka setelan éta suksés!

Masang pangimbang beban HAProxy dina CentOS

Kaca statistik ngandung sababaraha inpormasi anu mangpaat pikeun ngalacak host wéb anjeun, kalebet waktos naék/handap sareng jumlah sesi. Upami server ditandaan beureum, pastikeun yén server dihurungkeun sareng anjeun tiasa ping tina mesin penyeimbang beban.

Upami penyeimbang beban anjeun henteu ngaréspon, pastikeun sambungan HTTP henteu diblokir ku firewall. Pastikeun ogé yén HAProxy berpungsi nganggo paréntah di handap ieu:

sudo systemctl status haproxy

Ngajagi halaman statistik nganggo kecap akses

Sanajan kitu, lamun kaca statistik ngan didaptarkeun dina tungtung hareup, mangka kabuka pikeun dulur ningali, nu bisa jadi mangrupakeun ide nu sae. Gantina, anjeun tiasa napelkeun éta nomer port custom ku nambahkeun conto di handap ka tungtung file haproxy.cfg Anjeun. Ngaganti ngaran pamaké и password pikeun hal anu aman:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Saatos nambahkeun grup pangdéngé anyar, piceun stats heubeul link uri ti grup frontend. Nalika réngsé, simpen file sareng balikan deui HAProxy.

sudo systemctl restart haproxy

Teras buka load balancer deui nganggo nomer port énggal sareng lebet nganggo nami pangguna sareng kecap konci anu anjeun lebetkeun dina file konfigurasi.

http://load_balancer_public_ip:8181

Pastikeun sadaya pangladén anjeun masih nunjukkeun héjo teras buka ngan ukur IP balancer beban tanpa nomer port dina panyungsi anjeun.

http://load_balancer_public_ip/

Upami anjeun gaduh sahenteuna sababaraha rupa halaman badarat dina server back-end anjeun, anjeun bakal perhatikeun yén unggal waktos anjeun ngamuat halaman éta anjeun nampi réspon ti host anu béda. Anjeun tiasa nyobian algoritma balancing béda dina bagian konfigurasi atawa pariksa kaluar dokuméntasi lengkep.

kacindekan: HAProxy beban Balancer

Hatur nuhun parantos suksés nyetél kasaimbangan beban HAProxy anjeun! Malah ku setelan kasaimbangan beban dasar, anjeun tiasa sacara signifikan ningkatkeun kinerja sareng kasadiaan aplikasi wéb anjeun. Pituduh ieu ngan ukur bubuka pikeun ngimbangan beban sareng HAProxy, anu sanggup langkung seueur tibatan anu tiasa katutupan dina pituduh pangaturan gancang. Kami ngarékoméndasikeun ékspérimén sareng konfigurasi anu béda ngagunakeun dokuméntasi éksténsif, sadia pikeun HAProxy, lajeng mimitian perencanaan beban balancing pikeun lingkungan produksi Anjeun.

Ku ngagunakeun sababaraha host pikeun ngajagi ladénan wéb anjeun kalayan ruang kepala, penyeimbang beban sorangan masih tiasa nunjukkeun titik gagal. Anjeun tiasa salajengna ningkatkeun kasadiaan tinggi ku masang IP ngambang antara sababaraha beban balancer. Anjeun tiasa mendakan langkung seueur ngeunaan ieu dina kami artikel ngeunaan alamat IP ngambang on UpCloud.

Langkung seueur ngeunaan kursus "Pangurus Linux. Virtualisasi sareng klaster"***

sumber: www.habr.com

Tambahkeun komentar