HAProxy ఏదైనా సర్వర్ ఓవర్లోడింగ్ను తగ్గించడానికి పని చేస్తుంది మరియు సర్వర్ ఓవర్లోడ్ కాకుండా ఇతర సర్వర్లు అందుబాటులో లేవని నిర్ధారించడానికి ట్రాఫిక్ని పంపిణీ చేయడం ద్వారా ఇది సాధిస్తుంది. ఇన్స్టాగ్రామ్ వంటి ప్లాట్ఫారమ్ సెకనుకు పంపిన అభ్యర్థనల కారణంగా భారీ ట్రాఫిక్ను కలిగి ఉంది, అందువల్ల ఓవర్లోడ్ను నివారించడానికి సర్వర్ల కోసం ఫ్రంటెండ్, బ్యాకెండ్ మరియు లిజనర్లను నిర్వచించడానికి HAProxyని ఉపయోగించాల్సిన అవసరం ఉంది.
HAProxy ఎందుకు ఉపయోగించాలి
HAProxy యొక్క ఇన్స్టాలేషన్ మరియు కాన్ఫిగరేషన్ గురించి తెలుసుకోవడానికి ముందు, అది అందించే ఫీచర్ల సౌజన్యంతో మాకు ఇది ఎందుకు అవసరమో మీరు అర్థం చేసుకోవాలి. HAProxy యొక్క ప్రాథమిక లక్షణాలు క్రిందివి:
- లోడ్ బ్యాలెన్సింగ్ - HAProxyతో, మీరు ఒకే సర్వర్ను ఓవర్లోడ్ చేయకుండా ఉండటానికి వివిధ సర్వర్లలో ట్రాఫిక్ను సౌకర్యవంతంగా పంపిణీ చేయవచ్చు. ఆ విధంగా, మీ అప్లికేషన్ ఎటువంటి పనికిరాని సమస్యలను ఎదుర్కోదు మరియు మీరు వేగంగా ప్రతిస్పందన, విశ్వసనీయత మరియు లభ్యతను పొందుతారు.
- లాగింగ్ మరియు మానిటరింగ్ - ట్రబుల్షూటింగ్ సమస్యలతో సహాయం చేయడానికి మీరు మీ సర్వర్ల కోసం వివరణాత్మక పర్యవేక్షణ లాగ్లను పొందుతారు. అంతేకాకుండా, HAProxy గణాంకాల పేజీని కలిగి ఉంది, ఇక్కడ మీరు మీ లోడ్ బ్యాలెన్సర్ కోసం నిజ-సమయ పనితీరు విశ్లేషణలను పొందవచ్చు.
- ఆరోగ్య తనిఖీలు - మీ సర్వర్లకు కూడా వాటి స్థితిని గుర్తించడానికి ఆరోగ్య తనిఖీ అవసరం. మీ సర్వర్ విశ్వసనీయతను మెరుగుపరచడానికి దాని స్థితిని తెలుసుకోవడానికి HAProxy తరచుగా ఆరోగ్య తనిఖీలను అమలు చేస్తుంది. అనారోగ్య సర్వర్ గుర్తించబడితే, అది ట్రాఫిక్ను మరొక సర్వర్కు దారి మళ్లిస్తుంది.
- రివర్స్ ప్రాక్సీ - అంతర్గత నిర్మాణాన్ని దాచడం ద్వారా భద్రతను పెంచే ఒక మార్గం. అదృష్టవశాత్తూ, HAProxy మిమ్మల్ని క్లయింట్ల నుండి ట్రాఫిక్ని స్వీకరించడానికి మరియు వాటిని తగిన సర్వర్లకు మార్గనిర్దేశం చేస్తుంది. ఆ విధంగా, మీ అంతర్గత నిర్మాణం హ్యాకర్ కన్ను నుండి దాచబడుతుంది.
- ACLలు (యాక్సెస్ నియంత్రణ జాబితాలు) - HAProxyతో, మీరు మార్గాలు, హెడర్లు మరియు IP చిరునామాల వంటి వివిధ ప్రమాణాలను ఉపయోగించి ట్రాఫిక్ రూటింగ్ ఎలా జరగాలో నిర్వచించవచ్చు. అందువల్ల, మీ ట్రాఫిక్ కోసం అనుకూల రూటింగ్ లాజిక్ను నిర్వచించడం సులభం అవుతుంది.
- SSL ముగింపు - డిఫాల్ట్గా, SSL/TLS బ్యాకెండ్ సర్వర్ల ద్వారా ఆఫ్లోడ్ చేయబడింది, దీని వలన పనితీరు తగ్గుతుంది. అయినప్పటికీ, HAProxyతో, SSL/TLS ముగింపు లోడ్ బ్యాలెన్సర్ వద్ద జరుగుతుంది, బ్యాకెండ్ సర్వర్లలో పనిని ఆఫ్లోడ్ చేస్తుంది.
HAProxyని ఇన్స్టాల్ చేస్తోంది
ఇప్పటివరకు, మేము HAProxy అంటే ఏమిటో నిర్వచించాము మరియు మీ అప్లికేషన్ కోసం మీకు ఇది ఎందుకు అవసరమో అర్థం చేసుకోవడంలో మీకు సహాయపడటానికి ఇది అందించే ఫీచర్లను చర్చించాము. మీ సిస్టమ్లో దీన్ని ఇన్స్టాల్ చేయడం ద్వారా ఎలా ప్రారంభించాలో అర్థం చేసుకోవడం తదుపరి దశ.
మీరు ఉబుంటు లేదా డెబియన్ సిస్టమ్లను నడుపుతున్నట్లయితే, APT ప్యాకేజీ మేనేజర్ నుండి HAProxyని ఇన్స్టాల్ చేయవచ్చు. కింది ఆదేశాన్ని అమలు చేయండి:
$ sudo సరైన నవీకరణ
$ సుడో ఆప్ట్ ఇన్స్టాల్ హ్యాప్రాక్సీ
అదేవిధంగా, మీరు RHEL-ఆధారిత సిస్టమ్లు లేదా CentOSని ఉపయోగిస్తుంటే, 'yum' ప్యాకేజీ మేనేజర్ నుండి HAProxy అందుబాటులో ఉంటుంది. కింది ఆదేశాలను అమలు చేయండి:
$ సుడో యమ్ అప్డేట్
$ సుడో యమ్ ఇన్స్టాల్ హ్యాప్రాక్సీ
మా విషయంలో, మేము ఉబుంటును ఉపయోగిస్తున్నాము. కాబట్టి, మేము ఈ క్రింది విధంగా మా ఆదేశాన్ని కలిగి ఉన్నాము:
మేము HAProxyని విజయవంతంగా ఇన్స్టాల్ చేయగలిగామని నిర్ధారించుకోవడానికి మేము దాని సంస్కరణను తనిఖీ చేయవచ్చు.
$ హాప్రాక్సీ --వెర్షన్
HAProxyని ఎలా కాన్ఫిగర్ చేయాలి
HAProxy ఇన్స్టాల్ చేయడంతో, మీరు ఇప్పుడు దాని కాన్ఫిగరేషన్ ఫైల్ను తెరవవచ్చు ( / etc/haproxy/haproxy.cfg) మరియు మీ లోడ్ బ్యాలెన్సర్ కోసం మీరు ఉపయోగించాలనుకుంటున్న సెట్టింగ్లను నిర్వచించండి.
నానో లేదా విమ్ వంటి ఎడిటర్ని ఉపయోగించి కాన్ఫిగర్ ఫైల్ను తెరవండి.
$ సుడో నానో /etc/haproxy/haproxy.cfgమీరు కింది వాటిలో ఒక కాన్ఫిగరేషన్ ఫైల్ను పొందుతారు:
కాన్ఫిగరేషన్ ఫైల్ నుండి, ఇది రెండు ప్రధాన విభాగాలతో వస్తుందని మీరు గమనించవచ్చు:
- ప్రపంచ - ఇది ఫైల్లోని మొదటి విభాగం మరియు దాని విలువలను మార్చకూడదు. ఇది HAProxy ఎలా పనిచేస్తుందో నిర్వచించే ప్రాసెస్ సెట్టింగ్లను కలిగి ఉంటుంది. ఉదాహరణకు, ఇది లాగింగ్ వివరాలు మరియు HAProxy ఫంక్షన్లను అమలు చేయగల సమూహాలు లేదా వినియోగదారులను నిర్వచిస్తుంది. ఈ కాన్ఫిగరేషన్ ఫైల్లో, మీరు ఒక గ్లోబల్ విభాగాన్ని మాత్రమే కలిగి ఉండవచ్చని మరియు దాని విలువలు మారకుండా ఉండాలని గమనించండి.
- డిఫాల్ట్లు - ఈ విభాగం నోడ్ల కోసం డిఫాల్ట్ విలువలను కలిగి ఉంది. ఉదాహరణకు, మీరు ఈ విభాగంలో మీ HAProxy కోసం గడువులు లేదా కార్యాచరణ మోడ్ను జోడించవచ్చు. అంతేకాకుండా, మీ HAProxy కాన్ఫిగరేషన్ ఫైల్లో అనేక డిఫాల్ట్ విభాగాలు ఉండే అవకాశం ఉంది.
ఇక్కడ 'డిఫాల్ట్లు' విభాగానికి ఉదాహరణ:
ఇచ్చిన చిత్రంలో, మీ HAProxy ఇన్కమింగ్ అభ్యర్థనలను ఎలా నిర్వహిస్తుందో మోడ్ నిర్వచిస్తుంది. మీరు మోడ్ను HTTP లేదా TCPకి సెట్ చేయవచ్చు. గడువు ముగిసే సమయానికి, HAProxy ఎంతకాలం వేచి ఉండాలో నిర్దేశిస్తుంది. ఉదాహరణకు, టైమ్ అవుట్ కనెక్షన్ అనేది బ్యాకెండ్ కనెక్షన్ చేయడానికి ముందు వేచి ఉండాల్సిన సమయం. క్లయింట్ డేటాను పంపడానికి HAProxy ఎంతకాలం వేచి ఉండాలి అనేది గడువు ముగిసిన క్లయింట్. గడువు ముగిసిన సర్వర్ అనేది క్లయింట్కు ఫార్వార్డ్ చేయబడే డేటాను పంపడానికి తగిన సర్వర్ కోసం వేచి ఉండాల్సిన సమయం. మీ అప్లికేషన్ యొక్క ప్రతిస్పందన సమయాన్ని మెరుగుపరచడంలో మీరు డిఫాల్ట్ విలువలను ఎలా నిర్వచించారు అనేది చాలా ముఖ్యమైనది.
మీ లోడ్ బ్యాలెన్సర్ ఊహించిన విధంగా పని చేయడానికి మీరు నిర్వచించవలసిన మరో మూడు విభాగాలు ఉన్నాయి.
- ముందుభాగం - ఈ విభాగంలో మీ క్లయింట్లు కనెక్షన్ని స్థాపించడానికి ఉపయోగించాలని మీరు కోరుకునే IP చిరునామాలను కలిగి ఉంటుంది.
- బ్యాకెండ్ - ఇది ఫ్రంటెండ్ విభాగంలో నిర్వచించిన విధంగా అభ్యర్థనలను నిర్వహించే సర్వర్ పూల్లను చూపుతుంది.
- వినండి - మీరు నిర్దిష్ట సర్వర్ సమూహాన్ని రూట్ చేయాలనుకున్నప్పుడు ఇది వరుసగా ఉపయోగించబడుతుంది. ఈ విభాగం ఫ్రంటెండ్ మరియు బ్యాకెండ్ యొక్క పనులను మిళితం చేస్తుంది.
ఒక ఉదాహరణ చూద్దాం
ఈ ఉదాహరణ కోసం, నిర్దిష్ట పోర్ట్తో లోకల్ హోస్ట్ని ఉపయోగించడానికి మేము ఫ్రంటెండ్ని నిర్వచించాము. తరువాత, మేము దానిని లోకల్ హోస్ట్ని అమలు చేసే బ్యాకెండ్తో బైండ్ చేస్తాము మరియు లోడ్ బ్యాలెన్సింగ్ కోసం ప్రతిదీ ఆశించిన విధంగా పనిచేస్తుందో లేదో పరీక్షించడానికి పైథాన్ సర్వర్ను అమలు చేస్తాము. ఇచ్చిన దశలను అనుసరించండి.
దశ 1: డిఫాల్ట్ విభాగాన్ని కాన్ఫిగర్ చేస్తోంది
'డిఫాల్ట్లు' విభాగంలో, మేము నోడ్ల అంతటా భాగస్వామ్యం చేయడానికి విలువలను సెట్ చేసాము. మా విషయంలో, మేము మోడ్ను HTTPకి సెట్ చేసాము మరియు క్లయింట్ మరియు సర్వర్ కోసం గడువులను సెట్ చేస్తాము. మీరు మీ అవసరాలకు అనుగుణంగా సమయాన్ని సర్దుబాటు చేసుకోవచ్చు.
ఈ సవరణలన్నీ “/etc/haproxy/haproxy.cfg”లో ఉన్న HAProxy కాన్ఫిగరేషన్లో ఉన్నాయని గుర్తుంచుకోండి. డిఫాల్ట్ విభాగం కాన్ఫిగర్ చేయబడిన తర్వాత, ఫ్రంటెండ్ను నిర్వచిద్దాం.
దశ 2: ఫ్రంటెండ్ విభాగాన్ని కాన్ఫిగర్ చేస్తోంది
ఫ్రంటెండ్ విభాగంలో, క్లయింట్లు ఆన్లైన్లో అప్లికేషన్ లేదా వెబ్సైట్ను ఎలా యాక్సెస్ చేయాలనుకుంటున్నామో మేము నిర్వచించాము. మేము అప్లికేషన్ కోసం IP చిరునామాలను ఇస్తాము. కానీ ఈ సందర్భంలో, మేము స్థానిక హోస్ట్తో పని చేస్తాము. కాబట్టి, మా IP చిరునామా 127.0.0.1 యొక్క ఫాల్బ్యాక్ చిరునామా మరియు మేము పోర్ట్ 80 ద్వారా కనెక్షన్లను ఆమోదించాలనుకుంటున్నాము.
మీరు పేర్కొన్న పోర్ట్లో IP చిరునామా కోసం వినేవారుగా పనిచేసే “బైండ్” కీవర్డ్ను తప్పనిసరిగా జోడించాలి. IP చిరునామా మరియు మీరు నిర్వచించిన పోర్ట్ ఇన్కమింగ్ అభ్యర్థనలను అంగీకరించడానికి లోడ్ బ్యాలెన్సర్ ఉపయోగిస్తుంది.
మీ కాన్ఫిగరేషన్ ఫైల్లో మునుపటి పంక్తులను జోడించిన తర్వాత, మేము కింది ఆదేశంతో “haproxy.service”ని పునఃప్రారంభించాలి:
$ sudo systemctl హాప్రాక్సీని పునఃప్రారంభించండి
ఈ సమయంలో, మేము 'కర్ల్' ఆదేశాన్ని ఉపయోగించి మా వెబ్సైట్కు అభ్యర్థనలను పంపడానికి ప్రయత్నించవచ్చు. ఆదేశాన్ని అమలు చేయండి మరియు లక్ష్య IP చిరునామాను జోడించండి.
$ కర్ల్మా HAProxy యొక్క బ్యాకెండ్ ఎలా ఉంటుందో మేము ఇంకా నిర్వచించనందున, కింది వాటిలో చూపిన విధంగా మనకు 503 ఎర్రర్ వస్తుంది. లోడ్ బ్యాలెన్సర్ అభ్యర్థనలను స్వీకరించగలిగినప్పటికీ, దానిని నిర్వహించడానికి ప్రస్తుతం సర్వర్ అందుబాటులో లేదు, అందువల్ల లోపం ఏర్పడింది.
దశ 3: బ్యాకెండ్ను కాన్ఫిగర్ చేయడం
ఏదైనా ఇన్కమింగ్ అభ్యర్థనలను నిర్వహించే సర్వర్లను మేము నిర్వచించే బ్యాకెండ్ విభాగం. లోడ్ బ్యాలెన్సర్ ఏ సర్వర్ ఓవర్లోడ్ చేయబడకుండా చూసుకోవడానికి ఇన్కమింగ్ అభ్యర్థనలను ఎలా పంపిణీ చేయాలో తెలుసుకోవడానికి ఈ విభాగాన్ని సూచిస్తుంది.
అభ్యర్థనలను నిర్వహించడానికి మాకు ఎటువంటి బ్యాకెండ్ లేనందున 503 లోపం ఏర్పడింది. అభ్యర్థనలను నిర్వహించడానికి “default_backend”ని నిర్వచించడం ద్వారా ప్రారంభిద్దాం. మీరు దానిని ఫ్రంటెండ్ విభాగంలో నిర్వచించండి. ఈ కేసు కోసం మేము దీనికి “linux_backend” అని పేరు పెట్టాము.
తరువాత, ఫ్రంటెండ్ విభాగంలో నిర్వచించబడిన పేరు వలె అదే పేరుతో బ్యాకెండ్ విభాగాన్ని సృష్టించండి. మీరు మీ సర్వర్ పేరు మరియు దాని IP చిరునామాతో పాటుగా 'సర్వర్' కీవర్డ్ని తప్పనిసరిగా ఉపయోగించాలి. మేము IP 127.0.0.1 మరియు పోర్ట్ 8001ని ఉపయోగించి “linuxhint1” సర్వర్ని నిర్వచించామని క్రింది చిత్రం చూపిస్తుంది:
మీరు బ్యాకెండ్ సర్వర్ల సమూహాన్ని కలిగి ఉండవచ్చు, కానీ మేము ఈ సందర్భంలో ఒకదాన్ని మాత్రమే నిర్వచించాము. మీరు ఫైల్ను సేవ్ చేశారని నిర్ధారించుకోండి. మేము మళ్లీ HAProxy సేవను పునఃప్రారంభించాలి.
సృష్టించిన HAProxy లోడ్ బ్యాలెన్సర్ని పరీక్షించడానికి, మేము పేర్కొన్న IP చిరునామాను ఉపయోగించి బ్యాకెండ్ పోర్ట్లను బైండ్ చేయడానికి Python3ని ఉపయోగించి వెబ్ సర్వర్ని సృష్టిస్తాము. మేము ఆదేశాన్ని ఈ క్రింది విధంగా అమలు చేస్తాము:
$ python3 -m http.server 8001 --bind 127.0.0.1మీరు మీ IP చిరునామా మరియు మీరు బైండ్ చేయాలనుకుంటున్న పోర్ట్తో సరిపోలడానికి విలువలను భర్తీ చేశారని నిర్ధారించుకోండి. వెబ్ సర్వర్ ఎలా సృష్టించబడుతుందో గమనించండి మరియు ఏవైనా ఇన్కమింగ్ అభ్యర్థనలను వింటుంది.
మరొక టెర్మినల్లో, సర్వర్కు అభ్యర్థనను పంపడానికి “కర్ల్” ఆదేశాన్ని ఉపయోగిస్తాము.
$ కర్ల్అభ్యర్థనను నిర్వహించడానికి ఏ సర్వర్ అందుబాటులో లేదని చూపే 503 ఎర్రర్ను మేము ఇంతకు ముందు ఎలా పొందాము కాకుండా, మా HAProxy లోడ్ బ్యాలెన్సర్ పని చేస్తోందని నిర్ధారించే అవుట్పుట్ను ఈసారి మేము పొందుతాము.
మీరు వెబ్ సర్వర్ను సృష్టించిన మునుపటి టెర్మినల్కు తిరిగి వెళితే, మేము విజయవంతమైన అవుట్పుట్ 200ని పొందడాన్ని మీరు చూస్తారు, ఇది HAProxy అభ్యర్థనను స్వీకరించిందని మరియు దానిని మా బ్యాకెండ్ విభాగంలో నిర్వచించిన సర్వర్కు పంపడం ద్వారా నిర్వహించిందని నిర్ధారిస్తుంది.
మీరు మీ వెబ్సైట్ లేదా అప్లికేషన్ కోసం ఒక సాధారణ HAProxyని ఎలా సెట్ చేయవచ్చు.
నిబంధనలతో పనిచేయడం
మేము ఈ అనుభవశూన్యుడు HAProxy ట్యుటోరియల్ని ముగించే ముందు, అభ్యర్థనలను లోడ్ బ్యాలెన్సర్ ఎలా నిర్వహించాలో మార్గనిర్దేశం చేయడానికి మీరు నియమాలను ఎలా నిర్వచించవచ్చనే దాని గురించి త్వరగా మాట్లాడుదాం.
మునుపటి దశలను అనుసరించి, మన డిఫాల్ట్ విభాగాన్ని అలాగే ఉంచి, ఫ్రంటెండ్ విభాగంలో విభిన్న IP చిరునామాలను నిర్వచిద్దాం. మేము ఒకే IP చిరునామాను బంధిస్తాము కానీ వివిధ పోర్ట్ల నుండి కనెక్షన్లను అంగీకరిస్తాము.
అంతేకాకుండా, మేము మా “default_backend” మరియు మరొక “use_backend”ని కలిగి ఉన్నాము, ఇది అభ్యర్థనలు వచ్చే పోర్ట్ను బట్టి మేము ఉపయోగించే విభిన్న సర్వర్ల పూల్. కింది కాన్ఫిగరేషన్లో, పోర్ట్ 81 ద్వారా అన్ని అభ్యర్థనలు “Linux2_backend”లోని సర్వర్ల ద్వారా నిర్వహించబడతాయి. ఏవైనా ఇతర అభ్యర్థనలు “default_backend” ద్వారా నిర్వహించబడతాయి.
మేము ఫ్రంటెండ్లో నిర్వచించిన విధంగా బ్యాకెండ్ విభాగాలను సృష్టిస్తాము. ప్రతి బ్యాకెండ్ కోసం, అభ్యర్థనలను నిర్వహించడానికి మేము పేర్కొనే విభిన్న సర్వర్ని మేము కలిగి ఉన్నామని గమనించండి.
HAProxy సేవను త్వరగా పునఃప్రారంభించండి.
Python3ని ఉపయోగించి వెబ్ సర్వర్ని సృష్టిద్దాం మరియు ప్రత్యామ్నాయ బ్యాకెండ్ సర్వర్ అయిన పోర్ట్ 8002లో అభ్యర్థనలను బైండ్ చేద్దాం.
దీనికి అభ్యర్థనలను పంపుతున్నప్పుడు, డిఫాల్ట్ కాని ప్రత్యామ్నాయ సర్వర్కు అభ్యర్థనలను పంపడానికి లోడ్ బ్యాలెన్సర్ను ట్రిగ్గర్ చేయడానికి మేము పోర్ట్ను 81గా పేర్కొంటాము.
మా వెబ్ సర్వర్ని మళ్లీ తనిఖీ చేయడం ద్వారా, ఇది అభ్యర్థనలను స్వీకరించడం మరియు నిర్వహించడం మరియు 200 (విజయం) ప్రతిస్పందనను అందించడాన్ని మేము చూడవచ్చు.
మీ లోడ్ బ్యాలెన్సర్ రిక్వెస్ట్లను ఎలా స్వీకరిస్తుంది మరియు ఎలా హ్యాండిల్ చేస్తుందో మార్గనిర్దేశం చేయడానికి మీరు నియమాలను ఎలా నిర్వచించగలరు.
ముగింపు
TCP/HTTP అప్లికేషన్ల కోసం లోడ్ బ్యాలెన్సింగ్ కోసం HAProxy ఒక ఆదర్శవంతమైన పరిష్కారం. ఇన్స్టాల్ చేసిన తర్వాత, మీ లోడ్ బ్యాలెన్సర్ ఎలా పని చేస్తుందో మార్గనిర్దేశం చేసేందుకు డిఫాల్ట్లు, ఫ్రంటెండ్ మరియు బ్యాకెండ్ విభాగాలను నిర్వచించడానికి మీరు కాన్ఫిగరేషన్ ఫైల్ను సౌకర్యవంతంగా సవరించవచ్చు. ఈ పోస్ట్ HAProxyకి బిగినర్స్ గైడ్. ఇది HAProxy మరియు దాని లక్షణాలను నిర్వచించడం ద్వారా ప్రారంభమైంది. తర్వాత, ఇది HAProxyని ఎలా కాన్ఫిగర్ చేయాలో అర్థం చేసుకోవడంలో త్రవ్వి, HAProxyని లోడ్ బ్యాలెన్సర్గా ఎలా ఉపయోగించాలో ఉదాహరణ ఇవ్వడం ద్వారా ముగించారు.