వ్యాసం యొక్క అనువాదం కోర్సు ప్రారంభం సందర్భంగా తయారు చేయబడింది
లోడ్ బ్యాలెన్సింగ్ అనేది బహుళ హోస్ట్లలో వెబ్ అప్లికేషన్లను క్షితిజ సమాంతరంగా స్కేలింగ్ చేయడానికి ఒక సాధారణ పరిష్కారం, అదే సమయంలో వినియోగదారులకు సేవకు ఒకే పాయింట్ యాక్సెస్ను అందిస్తుంది.
HAProxy వనరుల వినియోగాన్ని ఆప్టిమైజ్ చేయడానికి, నిర్గమాంశను పెంచడానికి, ప్రతిస్పందన సమయాన్ని తగ్గించడానికి మరియు ఏదైనా వ్యక్తిగత వనరును ఓవర్లోడ్ చేయడాన్ని నివారించడానికి ప్రయత్నిస్తుంది. ఇది CentOS 8 వంటి అనేక రకాల Linux పంపిణీలలో ఇన్స్టాల్ చేయబడుతుంది, మేము ఈ గైడ్లో అలాగే సిస్టమ్లపై దృష్టి పెడతాము
HAProxy చాలా ఎక్కువ ట్రాఫిక్ ఉన్న వెబ్సైట్లకు ప్రత్యేకంగా అనుకూలంగా ఉంటుంది మరియు అందువల్ల బహుళ-సర్వర్ వెబ్ సేవా కాన్ఫిగరేషన్ల విశ్వసనీయత మరియు పనితీరును మెరుగుపరచడానికి తరచుగా ఉపయోగించబడుతుంది. CentOS 8 క్లౌడ్ హోస్ట్లో HAProxyని లోడ్ బ్యాలెన్సర్గా సెటప్ చేసే దశలను ఈ గైడ్ వివరిస్తుంది, ఇది మీ వెబ్ సర్వర్లకు ట్రాఫిక్ని రూట్ చేస్తుంది.
ఉత్తమ ఫలితాల కోసం ముందస్తు అవసరంగా, మీరు కనీసం రెండు వెబ్ సర్వర్లు మరియు లోడ్ బ్యాలెన్సింగ్ సర్వర్ని కలిగి ఉండాలి. వెబ్ సర్వర్లు వాటి మధ్య లోడ్ బ్యాలెన్సింగ్ను పరీక్షించడానికి కనీసం nginx లేదా httpd వంటి ప్రాథమిక వెబ్ సేవను తప్పనిసరిగా అమలు చేయాలి.
CentOS 8లో HAProxyని ఇన్స్టాల్ చేస్తోంది
HAProxy వేగంగా అభివృద్ధి చెందుతున్న ఓపెన్ సోర్స్ అప్లికేషన్ కాబట్టి, ప్రామాణిక CentOS రిపోజిటరీలలో మీకు అందుబాటులో ఉన్న పంపిణీ తాజా వెర్షన్ కాకపోవచ్చు. ప్రస్తుత సంస్కరణను కనుగొనడానికి, కింది ఆదేశాన్ని అమలు చేయండి:
sudo yum info haproxy
HAProxy ఎల్లప్పుడూ ఎంచుకోవడానికి మూడు స్థిరమైన సంస్కరణలను అందిస్తుంది: రెండు అత్యంత ఇటీవలి మద్దతు ఉన్న సంస్కరణలు మరియు ఇప్పటికీ క్లిష్టమైన నవీకరణలను అందుకుంటున్న మూడవ, పాత వెర్షన్. మీరు HAProxy వెబ్సైట్లో జాబితా చేయబడిన తాజా స్థిరమైన సంస్కరణను ఎల్లప్పుడూ తనిఖీ చేసి, ఆపై మీరు ఏ వెర్షన్తో పని చేయాలనుకుంటున్నారో నిర్ణయించుకోవచ్చు.
ఈ గైడ్లో, గైడ్ వ్రాసే సమయంలో ప్రామాణిక రిపోజిటరీలలో ఇంకా అందుబాటులో లేని తాజా స్థిరమైన వెర్షన్ 2.0ని మేము ఇన్స్టాల్ చేస్తాము. మీరు దీన్ని అసలు మూలం నుండి ఇన్స్టాల్ చేయాలి. అయితే ముందుగా, మీరు ప్రోగ్రామ్ను డౌన్లోడ్ చేయడానికి మరియు కంపైల్ చేయడానికి అవసరమైన షరతులను కలుసుకున్నారో లేదో తనిఖీ చేయండి.
sudo yum install gcc pcre-devel tar make -y
దిగువ ఆదేశాన్ని ఉపయోగించి సోర్స్ కోడ్ను డౌన్లోడ్ చేయండి. కొత్త వెర్షన్ అందుబాటులో ఉందో లేదో మీరు తనిఖీ చేయవచ్చు
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
డౌన్లోడ్ పూర్తయిన తర్వాత, దిగువ ఆదేశాన్ని ఉపయోగించి ఫైల్లను సంగ్రహించండి:
tar xzvf ~/haproxy.tar.gz -C ~/
ప్యాక్ చేయని సోర్స్ డైరెక్టరీకి వెళ్లండి:
cd ~/haproxy-2.0.7
ఆపై మీ సిస్టమ్ కోసం ప్రోగ్రామ్ను కంపైల్ చేయండి:
make TARGET=linux-glibc
చివరకు, HAProxyని ఇన్స్టాల్ చేయండి:
sudo make install
HAProxy ఇప్పుడు ఇన్స్టాల్ చేయబడింది, అయితే ఇది పని చేయడానికి కొన్ని అదనపు అవకతవకలు అవసరం. దిగువన ఉన్న సాఫ్ట్వేర్ మరియు సేవలను సెటప్ చేయడం కొనసాగిద్దాం.
మీ సర్వర్ కోసం HAProxyని సెటప్ చేస్తోంది
ఇప్పుడు HAProxy ఎంట్రీల కోసం క్రింది డైరెక్టరీలు మరియు గణాంకాల ఫైల్ను జోడించండి:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
బైనరీల కోసం సింబాలిక్ లింక్ను సృష్టించండి, తద్వారా మీరు సాధారణ వినియోగదారుగా HAProxy ఆదేశాలను అమలు చేయవచ్చు:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
మీరు మీ సిస్టమ్కు ప్రాక్సీని సేవగా జోడించాలనుకుంటే, haproxy.init ఫైల్ను ఉదాహరణల నుండి మీ /etc/init.d డైరెక్టరీకి కాపీ చేయండి. ఫైల్ అనుమతులను సవరించండి, తద్వారా స్క్రిప్ట్ రన్ అవుతుంది, ఆపై 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
సిస్టమ్ ప్రారంభమైనప్పుడు మీరు సేవను స్వయంచాలకంగా పునఃప్రారంభించడానికి కూడా అనుమతించాలి:
sudo chkconfig haproxy on
సౌలభ్యం కోసం, HAProxyని అమలు చేయడానికి కొత్త వినియోగదారుని జోడించమని కూడా సిఫార్సు చేయబడింది:
sudo useradd -r haproxy
దీని తరువాత, మీరు కింది ఆదేశాన్ని ఉపయోగించి ఇన్స్టాల్ చేసిన సంస్కరణ సంఖ్యను మళ్లీ తనిఖీ చేయవచ్చు:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
మా విషయంలో, ఎగువ ఉదాహరణ అవుట్పుట్లో చూపిన విధంగా సంస్కరణ 2.0.7 అయి ఉండాలి.
చివరగా, CentOS 8లోని డిఫాల్ట్ ఫైర్వాల్ ఈ ప్రాజెక్ట్ కోసం చాలా పరిమితం చేయబడింది. అవసరమైన సేవలను అనుమతించడానికి మరియు ఫైర్వాల్ను రీసెట్ చేయడానికి క్రింది ఆదేశాలను ఉపయోగించండి:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
బ్యాలెన్సర్ సెటప్ని లోడ్ చేయండి
HAProxyని సెటప్ చేయడం చాలా సులభమైన ప్రక్రియ. ముఖ్యంగా, మీరు చేయాల్సిందల్లా HAProxy ఏ కనెక్షన్ల కోసం వినాలి మరియు వాటిని ఎక్కడ రిలే చేయాలి అని చెప్పండి.
సెట్టింగులను నిర్వచించడంతో కాన్ఫిగరేషన్ ఫైల్ /etc/haproxy/haproxy.cfgని సృష్టించడం ద్వారా ఇది జరుగుతుంది. మీరు HAProxy కాన్ఫిగరేషన్ ఎంపికల గురించి చదువుకోవచ్చు
రవాణా పొర వద్ద లోడ్ బ్యాలెన్సింగ్ (లేయర్ 4)
ప్రాథమిక సెటప్తో ప్రారంభిద్దాం. కొత్త కాన్ఫిగరేషన్ ఫైల్ను సృష్టించండి, ఉదాహరణకు ఉపయోగించడం vi కింది ఆదేశంతో:
sudo vi /etc/haproxy/haproxy.cfg
ఫైల్కి క్రింది విభాగాలను జోడించండి. భర్తీ చేయండి సర్వర్కు గణాంకాల పేజీలో మీ సర్వర్లను ఏమని పిలవాలి మరియు ప్రైవేట్_ఐపి — మీరు వెబ్ ట్రాఫిక్ను డైరెక్ట్ చేయాలనుకుంటున్న సర్వర్ల ప్రైవేట్ IP చిరునామాలు. మీరు ప్రైవేట్ IP చిరునామాలను తనిఖీ చేయవచ్చు
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
ఇది ట్రాన్స్పోర్ట్ లేయర్ లోడ్ బ్యాలెన్సర్ (లేయర్ 4)ని పోర్ట్ 80లో బాహ్యంగా http_front లిజనింగ్ అని నిర్వచిస్తుంది, ఇది http_back అనే డిఫాల్ట్ బ్యాకెండ్కి ట్రాఫిక్ను ఫార్వార్డ్ చేస్తుంది. అదనపు గణాంకాలు /haproxy?stats గణాంకాల పేజీని పేర్కొన్న చిరునామాకు కలుపుతుంది.
వివిధ లోడ్ బ్యాలెన్సింగ్ అల్గోరిథంలు.
బ్యాకెండ్ విభాగంలో సర్వర్లను పేర్కొనడం వలన సాధ్యమైనప్పుడు రౌండ్-రాబిన్ అల్గోరిథం ప్రకారం లోడ్ బ్యాలెన్సింగ్ కోసం HAProxy ఈ సర్వర్లను ఉపయోగించడానికి అనుమతిస్తుంది.
బ్యాలెన్సింగ్ అల్గారిథమ్లు బ్యాకెండ్లోని ఏ సర్వర్కు ప్రతి కనెక్షన్ పంపబడుతుందో నిర్ణయించడానికి ఉపయోగించబడతాయి. ఇక్కడ కొన్ని ఉపయోగకరమైన ఎంపికలు ఉన్నాయి:
- రౌండ్ రాబిన్: ప్రతి సర్వర్ దాని బరువుకు అనుగుణంగా ఉపయోగించబడుతుంది. సర్వర్ల ప్రాసెసింగ్ సమయం సమానంగా పంపిణీ చేయబడినప్పుడు ఇది సున్నితమైన మరియు ఉత్తమమైన అల్గోరిథం. ఈ అల్గారిథమ్ డైనమిక్, ఇది సర్వర్ బరువును ఫ్లైలో సర్దుబాటు చేయడానికి అనుమతిస్తుంది.
- లీస్ట్కాన్: అతి తక్కువ కనెక్షన్లు ఉన్న సర్వర్ ఎంచుకోబడింది. అదే లోడ్తో సర్వర్ల మధ్య రౌండ్ రాబిన్ నిర్వహిస్తారు. LDAP, SQL, TSE మొదలైన సుదీర్ఘ సెషన్లకు ఈ అల్గారిథమ్ని ఉపయోగించడం సిఫార్సు చేయబడింది, అయితే HTTP వంటి చిన్న సెషన్లకు ఇది చాలా సరిఅయినది కాదు.
- ప్రధమ: అందుబాటులో ఉన్న కనెక్షన్ స్లాట్లతో మొదటి సర్వర్ కనెక్షన్ని అందుకుంటుంది. సర్వర్లు అత్యల్ప సంఖ్యా ID నుండి అత్యధికం వరకు ఎంచుకోబడతాయి, ఇది ఫారమ్లోని సర్వర్ స్థానానికి డిఫాల్ట్ అవుతుంది. సర్వర్ maxconnకు చేరుకున్న తర్వాత, తదుపరి సర్వర్ ఉపయోగించబడుతుంది.
- మూలం: అభ్యర్థనను ఏ సర్వర్ స్వీకరిస్తుందో నిర్ణయించడానికి మూలం IP చిరునామా హ్యాష్ చేయబడింది మరియు నడుస్తున్న సర్వర్ల మొత్తం బరువుతో విభజించబడింది. ఈ విధంగా, అదే క్లయింట్ IP చిరునామా ఎల్లప్పుడూ ఒకే సర్వర్కు వెళుతుంది, అయితే సర్వర్లు అలాగే ఉంటాయి.
అప్లికేషన్ స్థాయిలో లోడ్ బ్యాలెన్సింగ్ను సెటప్ చేస్తోంది (లేయర్ 7)
అందుబాటులో ఉన్న మరొక ఎంపిక ఏమిటంటే, అప్లికేషన్ లేయర్ (లేయర్ 7) వద్ద అమలు చేయడానికి లోడ్ బ్యాలెన్సర్ను కాన్ఫిగర్ చేయడం, ఇది మీ వెబ్ అప్లికేషన్ యొక్క భాగాలు వేర్వేరు హోస్ట్లలో ఉన్నప్పుడు ఉపయోగపడుతుంది. కనెక్షన్ యొక్క ప్రసారాన్ని త్రోట్ చేయడం ద్వారా దీనిని సాధించవచ్చు, ఉదాహరణకు URL ద్వారా.
టెక్స్ట్ ఎడిటర్ని ఉపయోగించి HAProxy కాన్ఫిగరేషన్ ఫైల్ను తెరవండి:
sudo vi /etc/haproxy/haproxy.cfg
దిగువ ఉదాహరణ ప్రకారం ఫ్రంటెండ్ మరియు బ్యాకెండ్ విభాగాలను కాన్ఫిగర్ చేయండి:
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
ఫ్రంటెండ్ url_blog అని పిలవబడే ACL నియమాన్ని ప్రకటిస్తుంది, ఇది /blogతో ప్రారంభమయ్యే మార్గాలతో అన్ని కనెక్షన్లకు వర్తిస్తుంది. Use_backend url_blog స్థితికి సరిపోలే కనెక్షన్లు blog_back అనే బ్యాకెండ్ ద్వారా అందించబడాలని పేర్కొంటుంది మరియు అన్ని ఇతర అభ్యర్థనలు డిఫాల్ట్ బ్యాకెండ్ ద్వారా నిర్వహించబడతాయి.
బ్యాకెండ్ వైపు, కాన్ఫిగరేషన్ సర్వర్ల యొక్క రెండు సమూహాలను సెటప్ చేస్తుంది: http_back, మునుపటిలాగా మరియు blog_back అనే కొత్తది, ఇది example.com/blogకి కనెక్షన్లను నిర్వహిస్తుంది.
సెట్టింగ్లను మార్చిన తర్వాత, ఫైల్ను సేవ్ చేసి, కింది ఆదేశాన్ని ఉపయోగించి HAProxyని పునఃప్రారంభించండి:
sudo systemctl restart haproxy
మీరు ప్రారంభ సమయంలో ఏవైనా హెచ్చరికలు లేదా దోష సందేశాలను స్వీకరిస్తే, వాటి కోసం మీ కాన్ఫిగరేషన్ని తనిఖీ చేసి, అవసరమైన అన్ని ఫైల్లు మరియు ఫోల్డర్లను మీరు సృష్టించారని నిర్ధారించుకోండి, ఆపై మళ్లీ పునఃప్రారంభించి ప్రయత్నించండి.
సెటప్ని పరీక్షిస్తోంది
HAProxy కాన్ఫిగర్ చేయబడి మరియు రన్ అయిన తర్వాత, బ్రౌజర్లో లోడ్ బ్యాలెన్సర్ సర్వర్ యొక్క పబ్లిక్ IP చిరునామాను తెరిచి, మీరు సరిగ్గా బ్యాకెండ్కి కనెక్ట్ చేయబడి ఉన్నారో లేదో తనిఖీ చేయండి. కాన్ఫిగరేషన్లోని గణాంకాలు uri పారామీటర్ పేర్కొన్న చిరునామాలో గణాంకాల పేజీని సృష్టిస్తుంది.
http://load_balancer_public_ip/haproxy?stats
మీరు గణాంకాల పేజీని లోడ్ చేసినప్పుడు, మీ సర్వర్లన్నీ ఆకుపచ్చ రంగులో కనిపిస్తే, సెటప్ విజయవంతమైంది!
గణాంకాల పేజీలో మీ వెబ్ హోస్ట్లను ట్రాక్ చేయడం కోసం అప్/డౌన్ సమయం మరియు సెషన్ల సంఖ్యతో సహా కొంత ఉపయోగకరమైన సమాచారం ఉంది. సర్వర్ ఎరుపు రంగులో ఉన్నట్లయితే, సర్వర్ ఆన్ చేయబడిందని మరియు మీరు దానిని లోడ్ బ్యాలెన్సర్ మెషీన్ నుండి పింగ్ చేయగలరని నిర్ధారించుకోండి.
మీ లోడ్ బ్యాలెన్సర్ ప్రతిస్పందించనట్లయితే, HTTP కనెక్షన్లు ఫైర్వాల్ ద్వారా బ్లాక్ చేయబడలేదని నిర్ధారించుకోండి. దిగువ ఆదేశాన్ని ఉపయోగించి HAProxy పని చేస్తుందో లేదో కూడా నిర్ధారించుకోండి:
sudo systemctl status haproxy
పాస్వర్డ్తో గణాంకాల పేజీని రక్షించడం
అయితే, స్టాటిస్టిక్స్ పేజీ కేవలం ఫ్రంట్ ఎండ్లో లిస్ట్ చేయబడితే, అది అందరికీ కనిపించేలా తెరిచి ఉంటుంది, ఇది మంచి ఆలోచన కాకపోవచ్చు. బదులుగా, మీరు మీ haproxy.cfg ఫైల్ చివర దిగువ ఉదాహరణను జోడించడం ద్వారా దానికి అనుకూల పోర్ట్ నంబర్ను కేటాయించవచ్చు. భర్తీ చేయండి <span style="font-family: Mandali; "> యూజర్ పేరు </span> и <span style="font-family: Mandali; "> పాస్వర్డ్</span> సురక్షితమైన వాటి కోసం:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
కొత్త శ్రోత సమూహాన్ని జోడించిన తర్వాత, ఫ్రంటెండ్ గ్రూప్ నుండి పాత గణాంకాలు uri లింక్ను తీసివేయండి. పూర్తయిన తర్వాత, ఫైల్ను సేవ్ చేసి, HAProxyని పునఃప్రారంభించండి.
sudo systemctl restart haproxy
తర్వాత కొత్త పోర్ట్ నంబర్తో మళ్లీ లోడ్ బ్యాలెన్సర్ని తెరిచి, కాన్ఫిగరేషన్ ఫైల్లో మీరు పేర్కొన్న యూజర్నేమ్ మరియు పాస్వర్డ్తో లాగిన్ అవ్వండి.
http://load_balancer_public_ip:8181
మీ సర్వర్లన్నీ ఇప్పటికీ ఆకుపచ్చ రంగులో ఉన్నాయని నిర్ధారించుకోండి, ఆపై మీ బ్రౌజర్లో పోర్ట్ నంబర్లు లేకుండా లోడ్ బ్యాలెన్సర్ IPని తెరవండి.
http://load_balancer_public_ip/
మీరు మీ బ్యాక్-ఎండ్ సర్వర్లలో కనీసం కొన్ని రకాల ల్యాండింగ్ పేజీలను కలిగి ఉంటే, మీరు పేజీని రీలోడ్ చేసిన ప్రతిసారీ మీకు వేరే హోస్ట్ నుండి ప్రతిస్పందన వస్తుందని మీరు గమనించవచ్చు. మీరు కాన్ఫిగరేషన్ విభాగంలో విభిన్న బ్యాలెన్సింగ్ అల్గారిథమ్లను ప్రయత్నించవచ్చు లేదా తనిఖీ చేయవచ్చు
ముగింపు: HAProxy లోడ్ బ్యాలెన్సర్
మీ HAProxy లోడ్ బ్యాలెన్సర్ని విజయవంతంగా సెటప్ చేసినందుకు అభినందనలు! ప్రాథమిక లోడ్ బ్యాలెన్సింగ్ సెటప్తో కూడా, మీరు మీ వెబ్ అప్లికేషన్ యొక్క పనితీరు మరియు లభ్యతను గణనీయంగా మెరుగుపరచవచ్చు. ఈ గైడ్ HAProxyతో లోడ్ బ్యాలెన్సింగ్కు ఒక పరిచయం మాత్రమే, ఇది త్వరిత సెటప్ గైడ్లో కవర్ చేయగల దానికంటే చాలా ఎక్కువ సామర్థ్యం కలిగి ఉంటుంది. ఉపయోగించి విభిన్న కాన్ఫిగరేషన్లతో ప్రయోగాలు చేయాలని మేము సిఫార్సు చేస్తున్నాము
హెడ్రూమ్తో మీ వెబ్ సేవను రక్షించడానికి బహుళ హోస్ట్లను ఉపయోగించడం ద్వారా, లోడ్ బ్యాలెన్సర్ ఇప్పటికీ వైఫల్యం యొక్క పాయింట్ను ప్రదర్శించవచ్చు. మీరు బహుళ లోడ్ బ్యాలెన్సర్ల మధ్య ఫ్లోటింగ్ IPని ఇన్స్టాల్ చేయడం ద్వారా అధిక లభ్యతను మరింత మెరుగుపరచవచ్చు. మీరు మాలో దీని గురించి మరింత తెలుసుకోవచ్చు
కోర్సు గురించి మరింత
మూలం: www.habr.com