Ịwụnye nha nha nha HAProxy na CentOS

A haziri nsụgharị nke isiokwu ahụ n'abalị nke mmalite nke ọmụmụ ahụ "Onye nchịkwa Linux. Virtualization na nchịkọta"

Ịwụnye nha nha nha HAProxy na CentOS

Idozi ibu bụ ihe ngwọta a na-ahụkarị maka ngwa weebụ na-ekesa n'ụzọ kwụ ọtọ gafee ọtụtụ ndị ọbịa ebe ọ na-enye ndị ọrụ otu ebe ịnweta ọrụ ahụ. HAProxy bụ otu n'ime sọftụwia na-edozi ibu na-emeghe ihe kachasị ewu ewu nke na-enyekwa nnukwu nnweta yana ọrụ proxy.

HAProxy na-agba mbọ ịkwalite ojiji akụrụngwa, na-ebuli ntinye aka, belata oge nzaghachi, ma zere ibubiga ihe onwunwe ọ bụla. Enwere ike itinye ya na nkesa Linux dị iche iche, dị ka CentOS 8, nke anyị ga-elekwasị anya na ntuziaka a, yana usoro. Debian 8 и Ubuntu 16.

Ịwụnye nha nha nha HAProxy na CentOS

HAProxy dabara adaba maka weebụsaịtị nwere oke okporo ụzọ ma ya mere a na-ejikarị emezi ntụkwasị obi na arụmọrụ nke nhazi ọrụ ntanetị ọtụtụ sava. Ntuziaka a na-akọwapụta usoro iji guzobe HAProxy dị ka ihe nkwụnye ibu na igwe ojii CentOS 8, nke na-ebuga okporo ụzọ gaa na sava weebụ gị.

Dị ka ihe achọrọ maka nsonaazụ kacha mma, ị kwesịrị ịnwe opekata mpe sava weebụ abụọ yana ihe nkesa na-edozi ibu. Sava webụ ga na-agba ọsọ opekata mpe ọrụ webụ dị ka nginx ma ọ bụ httpd iji nwalee nha nha n'etiti ha.

Ịwụnye HAProxy na CentOS 8

N'ihi HAProxy bụ ngwa mepere emepe na-agbanwe ngwa ngwa, nkesa dị gị na ebe nchekwa CentOS ọkọlọtọ nwere ike ọ gaghị abụ ụdị kachasị ọhụrụ. Iji chọpụta ụdịdị dị ugbu a, gbaa iwu a:

sudo yum info haproxy

HAProxy na-enye ụdị atọ kwụsiri ike mgbe niile ịhọrọ site na: ụdị abụọ akwadoro ọhụrụ na nke atọ, ụdị ochie nke ka na-enweta mmelite dị oke egwu. Ị nwere ike ịlele ụdị kwụsiri ike kachasị ọhụrụ edepụtara na webụsaịtị HAProxy wee kpebie ụdị nke ịchọrọ ịrụ ọrụ na ya.

N'ime ntuziaka a, anyị ga na-etinye ụdị 2.0 kwụsiri ike kachasị ọhụrụ, nke na-adịbeghị na ebe nchekwa ọkọlọtọ n'oge edere ntuziaka. Ị ga-achọ ịwụnye ya site na isi mmalite mbụ. Mana nke mbụ, lelee ma ọ bụrụ na ị mezuru ọnọdụ ndị dị mkpa iji budata na chịkọta mmemme ahụ.

sudo yum install gcc pcre-devel tar make -y

Budata koodu mmalite site na iji iwu dị n'okpuru. Ị nwere ike ịlele ma ọ dị ọhụrụ ụdị dị na HAProxy nbudata ibe.

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

Ozugbo nbudata nbudata ahụ, wepụ faịlụ ndị ahụ site na iji iwu dị n'okpuru:

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

Gaa na akwụkwọ ndekọ aha enweghị ngwugwu:

cd ~/haproxy-2.0.7

Mgbe ahụ chịkọta mmemme maka sistemụ gị:

make TARGET=linux-glibc

N'ikpeazụ, wụnye HAProxy n'onwe ya:

sudo make install

Awụnyela HAProxy ugbu a, mana ọ na-achọ ụfọdụ mmegharị ọzọ iji mee ka ọ rụọ ọrụ. Ka anyị gaa n'ihu na-edozi ngwanrọ na ọrụ dị n'okpuru.

Ịtọlite ​​​​HAProxy maka sava gị

Ugbu a tinye akwụkwọ ndekọ aha na faịlụ ndekọ maka ndenye HAProxy:

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

Mepụta njikọ ihe atụ maka ọnụọgụ abụọ ka ị nwee ike ịgba ọsọ HAProxy iwu dị ka onye ọrụ oge niile:

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

Ọ bụrụ na ịchọrọ ịgbakwunye proxy na sistemụ gị dị ka ọrụ, detuo faịlụ haproxy.init site na ọmụmaatụ gaa na ndekọ /etc/init.d gị. Dezie ikike faịlụ ka edemede ahụ wee rụọ ọrụ, wee malitegharịa 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

Ịkwesịrị ikwe ka ọrụ ahụ malitegharịa na-akpaghị aka mgbe sistemụ malitere:

sudo chkconfig haproxy on

Maka ịdị mma, a na-atụ aro ka ịgbakwunye onye ọrụ ọhụrụ iji mee HAProxy:

sudo useradd -r haproxy

Mgbe nke a gasịrị, ịnwere ike ịlele nọmba ụdị arụnyere ọzọ site na iji iwu a:

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

N'ọnọdụ anyị, ụdị kwesịrị ịbụ 2.0.7, dị ka egosiri na mmepụta ihe atụ n'elu.

N'ikpeazụ, firewall ndabara na CentOS 8 bụ ihe mgbochi maka ọrụ a. Jiri iwu ndị a ka ikwe ka ọrụ achọrọ wee tọgharịa firewall:

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

Ibu Ibu Balancer Mbido

Ịtọlite ​​​​HAProxy bụ usoro dị mfe. N'ezie, naanị ihe ị ga - eme bụ ịgwa HAProxy njikọ ọ kwesịrị ige ntị yana ebe ọ ga - ebugharị ha.

A na-eme nke a site na ịmepụta faịlụ nhazi /etc/haproxy/haproxy.cfg na nhazi nhazi. Ị nwere ike ịgụ maka nhọrọ nhazi HAProxy na ibe akwụkwọọ bụrụ na ị chọrọ ịmatakwu banyere ya.

Ndozi ibu na akwa akwa njem (oyi akwa 4)

Ka anyị malite na ntọala ntọala. Mepụta faịlụ nhazi ọhụrụ, dịka ọmụmaatụ iji vi ya na iwu dị n'okpuru:

sudo vi /etc/haproxy/haproxy.cfg

Tinye akụkụ ndị a na faịlụ ahụ. Dochie aha njirimara kedu ihe kwesịrị ịkpọ sava gị na ibe ọnụ ọgụgụ, na nkeonwe_ip - adreesị IP nzuzo nke sava nke ịchọrọ iduzi okporo ụzọ weebụ. Ị nwere ike ịlele adreesị IP nkeonwe na UpCloud akara panel na na tab Netwọk nkeonwe na menu 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

Nke a na-akọwapụta ihe nkwụnye ibu ibu njem (layer 4) nke a na-akpọ http_front na-ege ntị na ọdụ ụgbọ mmiri 80, nke na-ebuga okporo ụzọ gaa na ndabere ndabere aha ya bụ http_back. Ọnụọgụ ndị ọzọ /haproxy?stats na-ejikọta ibe ọnụ ọgụgụ na adreesị akọwapụtara.

Algọridim na-edozi ibu dị iche iche.

Ịkọwapụta ihe nkesa na ngalaba azụ azụ na-enye HAProxy ohere iji sava ndị a maka nhazi ibu dị ka algọridim gburugburu robin mgbe enwere ike.

A na-eji algọridim na-emeziwanye ihe iji chọpụta nkesa nke dị na azụ azụ ka agafere njikọ ọ bụla. Nke a bụ ụfọdụ nhọrọ bara uru:

  • Rondrobin: A na-eji ihe nkesa ọ bụla mee ihe n'otu n'otu dịka ịdị arọ ya si dị. Nke a bụ algọridim kacha dị nro na nke ziri ezi mgbe oge nhazi nke sava na-anọgide na-ekesa nke ọma. Algọridim a dị ike, na-enye ohere ịhazigharị ibu nke ihe nkesa na ofufe.
  • Leastconn: ahọpụtara ihe nkesa nwere njikọ kacha nta. A na-eme okirikiri robin n'etiti sava nwere otu ibu. A na-atụ aro iji algọridim a maka ogologo oge dị ka LDAP, SQL, TSE, wdg, mana ọ dabara nke ọma maka obere oge dị ka HTTP.
  • Nke mbụ: Ihe nkesa mbụ nwere oghere njikọ dị na-enweta njikọ ahụ. A na-ahọrọ ndị nkesa site na NJ ọnụọgụ kachasị ala ruo nke kachasị elu, nke na-adaba na ọnọdụ nkesa na ugbo. Ozugbo sava ruru maxconn, a na-eji ihe nkesa na-esote.
  • Isi Iyi: A na-ekpochapụ adreesị IP isi mmalite site na mkpokọta oke nke sava na-agba ọsọ iji chọpụta nke nkesa ga-anata arịrịọ ahụ. N'ụzọ dị otú a, otu adreesị IP onye ahịa ga-aga n'otu ihe nkesa mgbe niile, ebe ndị sava na-anọgide otu.

Ịtọlite ​​nguzozi ibu na ọkwa ngwa (oyi akwa 7)

Nhọrọ ọzọ dịnụ bụ ịhazi ihe nkwụnye ibu ka ọ na-agba ọsọ na oyi akwa ngwa (layer 7), nke bara uru mgbe akụkụ nke ngwa weebụ gị dị na ndị ọbịa dị iche iche. Enwere ike nweta nke a site n'ịkwụsị nnyefe nke njikọ ahụ, dịka ọmụmaatụ site na URL.

Mepee faịlụ nhazi HAProxy site na iji editọ ederede:

sudo vi /etc/haproxy/haproxy.cfg

Mgbe ahụ hazie akụkụ frontend na azụ azụ dịka ọmụmaatụ n'okpuru:

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

The frontend na-ekwupụta iwu ACL a na-akpọ url_blog nke na-emetụta njikọ niile nwere ụzọ malite na /blog. Use_backend na-akọwapụta na njikọ ga-adabara ọnọdụ url_blog kwesịrị ịbụ onye backend aha ya bụ blog_back ga-eje ozi, yana arịrịọ ndị ọzọ niile na-edozi site na ndabere ndabere ndabere.

N'akụkụ azụ azụ, nhazi ahụ na-edozi ìgwè abụọ nke sava: http_back, dị ka ọ dị na mbụ, na nke ọhụrụ a na-akpọ blog_back, nke na-ejikọta njikọ na example.com/blog.

Mgbe ịgbanwee ntọala ahụ, chekwaa faịlụ ma malitegharịa HAProxy site na iji iwu a:

sudo systemctl restart haproxy

Ọ bụrụ na ịnweta ịdọ aka ná ntị ọ bụla ma ọ bụ ozi njehie n'oge mmalite, lelee nhazi gị maka ha wee hụ na ị mepụtara faịlụ na nchekwa niile dị mkpa, wee gbalịa ịmalitegharịa ọzọ.

Na-anwale nhazi ahụ

Ozugbo ahaziri HAProxy ma na-agba ọsọ, mepee adreesị IP ọha nke ihe nkesa nkwụnye ego na ihe nchọgharị wee lelee ma ị jikọọ na azụ azụ nke ọma. Paramita stats uri dị na nhazi ahụ na-emepụta ibe ọnụ ọgụgụ na adreesị akọwapụtara.

http://load_balancer_public_ip/haproxy?stats

Mgbe ị na-ebugo ibe ọnụ ọgụgụ, ọ bụrụ na sava gị niile na-egosi akwụkwọ ndụ akwụkwọ ndụ, mgbe ahụ nhazi ahụ gara nke ọma!

Ịwụnye nha nha nha HAProxy na CentOS

Ibe ọnụ ọgụgụ ahụ nwere ụfọdụ ozi bara uru maka nsuso ndị nnabata webụ gị, gụnyere oge mgbago/ala na ọnụọgụ nke nnọkọ. Ọ bụrụ na akara ihe nkesa ahụ na-acha ọbara ọbara, gbaa mbọ hụ na agbanyere ihe nkesa yana na ị nwere ike ping ya site na igwe na-edozi ibu.

Ọ bụrụ na onye na-ahụ maka ibu gị anaghị azaghachi, gbaa mbọ hụ na firewall anaghị egbochi njikọ HTTP. Gbaa mbọ hụ na HAProxy na-arụ ọrụ site na iji iwu dị n'okpuru:

sudo systemctl status haproxy

Jiri paswọọdụ chekwaa ibe ọnụ ọgụgụ

Otú ọ dị, ọ bụrụ na e depụtara ibe ọnụ ọgụgụ ahụ n'ihu njedebe, mgbe ahụ ọ na-emeghe ka onye ọ bụla hụ, nke nwere ike ọ gaghị abụ ezigbo echiche. Kama, ị nwere ike kenye ya nọmba ọdụ ụgbọ mmiri omenala site na ịgbakwunye ihe atụ dị n'okpuru na njedebe nke faịlụ haproxy.cfg gị. Dochie aha njirimara и password maka ihe nchekwa:

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

Ka ịgbakwunye otu ndị na-ege ntị ọhụrụ, wepụ njikọ stats uri ochie na otu frontend. Mgbe emechara, chekwaa faịlụ ma malitegharịa HAProxy.

sudo systemctl restart haproxy

Wee meghee ihe nkwụnye ibu ọzọ na nọmba ọdụ ụgbọ mmiri ọhụrụ wee banye na aha njirimara na paswọọdụ ị kpọtụrụ aha na faịlụ nhazi.

http://load_balancer_public_ip:8181

Jide n'aka na ihe nkesa gị niile ka na-egosi akwụkwọ ndụ akwụkwọ ndụ wee mepee naanị ibu balancer IP na-enweghị nọmba ọdụ ụgbọ mmiri ọ bụla na ihe nchọgharị gị.

http://load_balancer_public_ip/

Ọ bụrụ na ị nwere ma ọ dịkarịa ala ụfọdụ ibe ọdịda dị iche iche na sava azụ azụ gị, ị ga-achọpụta na oge ọ bụla i bugharịrị ibe ahụ ị na-enweta nzaghachi site n'aka onye ọbịa dị iche. Ị nwere ike ịnwale algọridim nhazi dị iche iche na ngalaba nhazi ma ọ bụ lelee akwụkwọ zuru oke.

Mmechi: HAProxy Load Balancer

Ekele maka ịtọlite ​​​​haProxy load balancer gị nke ọma! Ọbụlagodi na nhazi nguzozi ibu bụ isi, ị nwere ike melite arụmọrụ yana nnweta ngwa weebụ gị nke ukwuu. Ntuziaka a bụ naanị okwu mmeghe maka ịkwado ibu na HAProxy, nke nwere ike karịa ihe enwere ike kpuchie na ntuziaka nhazi ngwa ngwa. Anyị na-akwado ịnwale nhazi dị iche iche site na iji nnukwu akwụkwọ, dị na HAProxy, wee malite ịhazi nhazi ibu maka gburugburu mmepụta gị.

Site na iji ọtụtụ ndị ọbịa iji chekwaa ọrụ weebụ gị n'isi ụlọ, onye na-edozi ibu n'onwe ya nwere ike ka na-eweta ebe ọdịda. Ị nwere ike imeziwanye nnweta dị elu site na ịwụnye IP na-ese n'elu mmiri n'etiti ọtụtụ ihe nkwụnye ibu. Ị nwere ike ịmatakwu banyere nke a na anyị akụkọ gbasara adreesị IP na-ese n'elu na UpCloud.

Ndị ọzọ gbasara nkuzi "Onye nchịkwa Linux. Virtualization na nchịkọta"***

isi: www.habr.com

Tinye a comment