AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

అందరికి వందనాలు! నా పేరు కిరిల్, నేను అడాప్టీలో CTO. మా ఆర్కిటెక్చర్ చాలా వరకు AWSలో ఉంది మరియు ఈ రోజు నేను ఉత్పత్తి వాతావరణంలో స్పాట్ ఇన్‌స్టాన్స్‌లను ఉపయోగించడం ద్వారా సర్వర్ ఖర్చులను 3 రెట్లు తగ్గించాము, అలాగే వాటి ఆటో-స్కేలింగ్‌ను ఎలా సెటప్ చేయాలి అనే దాని గురించి మాట్లాడతాను. మొదట ఇది ఎలా పని చేస్తుందనే దాని యొక్క అవలోకనం ఉంటుంది, ఆపై ప్రారంభించడానికి వివరణాత్మక సూచనలు.

స్పాట్ ఉదంతాలు అంటే ఏమిటి?

స్పాట్ సందర్భాలు ప్రస్తుతం పనిలేకుండా ఉన్న ఇతర AWS వినియోగదారుల సర్వర్‌లు మరియు వారు వాటిని పెద్ద తగ్గింపుతో విక్రయిస్తారు (Amazon 90% వరకు వ్రాస్తుంది, మా అనుభవంలో ~3x, ప్రాంతం, AZ మరియు ఉదాహరణ రకాన్ని బట్టి మారుతుంది). సాధారణ వాటి నుండి వారి ప్రధాన వ్యత్యాసం ఏమిటంటే వారు ఎప్పుడైనా ఆఫ్ చేయవచ్చు. అందువల్ల, S3 లేదా డేటాబేస్‌లో సేవ్ చేయబడిన ఇంటర్మీడియట్ ఫలితాలు వర్జిన్ పరిసరాల కోసం లేదా ఏదైనా గణించే పనుల కోసం వాటిని ఉపయోగించడం సాధారణమని చాలా కాలంగా మేము నమ్ముతున్నాము, కానీ అమ్మకాల కోసం కాదు. ఉత్పత్తిపై మచ్చలను ఉపయోగించడానికి మిమ్మల్ని అనుమతించే మూడవ పక్ష పరిష్కారాలు ఉన్నాయి, కానీ మా విషయంలో చాలా క్రచెస్ ఉన్నాయి, కాబట్టి మేము వాటిని అమలు చేయలేదు. వ్యాసంలో వివరించిన విధానం అదనపు స్క్రిప్ట్‌లు, కిరీటాలు మొదలైనవి లేకుండా పూర్తిగా ప్రామాణిక AWS కార్యాచరణలో పని చేస్తుంది.

స్పాట్ ఉదంతాల కోసం ధర చరిత్రను చూపించే కొన్ని స్క్రీన్‌షాట్‌లు క్రింద ఉన్నాయి.

m5.eu-వెస్ట్-1 (ఐర్లాండ్) ప్రాంతంలో పెద్దది. ధర 3 నెలలుగా స్థిరంగా ఉంది, ప్రస్తుతం 2.9x ఆదా అవుతుంది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

m5. us-east-1 ప్రాంతంలో (N. వర్జీనియా) పెద్దది. ధర 3 నెలల్లో నిరంతరం మారుతూ ఉంటుంది, ప్రస్తుతం లభ్యత జోన్ ఆధారంగా 2.3x నుండి 2.8x వరకు ఆదా అవుతుంది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

t3.small in the us-east-1 ప్రాంతంలో (N. వర్జీనియా). ధర 3 నెలలుగా స్థిరంగా ఉంది, ప్రస్తుతం 3.4x ఆదా అవుతుంది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

సర్వీస్ ఆర్కిటెక్చర్

ఈ వ్యాసంలో మనం మాట్లాడే సేవ యొక్క ప్రాథమిక నిర్మాణం క్రింది రేఖాచిత్రంలో చూపబడింది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

అప్లికేషన్ లోడ్ బ్యాలెన్సర్ → EC2 టార్గెట్ గ్రూప్ → సాగే కంటైనర్ సర్వీస్

అప్లికేషన్ లోడ్ బ్యాలెన్సర్ (ALB) బ్యాలెన్సర్‌గా ఉపయోగించబడుతుంది, ఇది EC2 టార్గెట్ గ్రూప్ (TG)కి అభ్యర్థనలను పంపుతుంది. ALBల కోసం పోర్ట్‌లను తెరవడానికి మరియు వాటిని ఎలాస్టిక్ కంటైనర్ సర్వీస్ (ECS) కంటైనర్‌లకు కనెక్ట్ చేయడానికి TG బాధ్యత వహిస్తుంది. ECS అనేది AWSలోని కుబెర్నెట్స్ యొక్క అనలాగ్, ఇది డాకర్ కంటైనర్‌లను నిర్వహిస్తుంది.

ఒక ఉదాహరణ ఒకే పోర్ట్‌లతో అనేక రన్నింగ్ కంటైనర్‌లను కలిగి ఉంటుంది, కాబట్టి మేము వాటిని స్థిరంగా సెట్ చేయలేము. ECS TGకి కొత్త పనిని ప్రారంభిస్తున్నట్లు చెబుతుంది (కుబెర్నెటెస్ పరిభాషలో దీనిని పాడ్ అంటారు), ఇది ఉచిత పోర్ట్‌ల కోసం తనిఖీ చేస్తుంది మరియు వాటిలో ఒకదాన్ని ప్రారంభించిన పనికి కేటాయిస్తుంది. ఆరోగ్య తనిఖీని ఉపయోగించి ఉదాహరణ మరియు API దానిపై పని చేస్తున్నాయో లేదో కూడా TG క్రమం తప్పకుండా తనిఖీ చేస్తుంది మరియు ఏదైనా సమస్యలు కనిపిస్తే, అక్కడ అభ్యర్థనలను పంపడం ఆపివేస్తుంది.

EC2 ఆటో స్కేలింగ్ గుంపులు + ECS కెపాసిటీ ప్రొవైడర్లు

పై రేఖాచిత్రం EC2 ఆటో స్కేలింగ్ గ్రూప్స్ (ASG) సేవను చూపదు. స్కేలింగ్ ఉదంతాలకు ఇది బాధ్యత వహిస్తుందని పేరు నుండి మీరు అర్థం చేసుకోవచ్చు. అయినప్పటికీ, ఇటీవలి వరకు, ECS నుండి నడుస్తున్న యంత్రాల సంఖ్యను నిర్వహించడానికి AWSకి అంతర్నిర్మిత సామర్థ్యం లేదు. ECS టాస్క్‌ల సంఖ్యను స్కేల్ చేయడం సాధ్యం చేసింది, ఉదాహరణకు, CPU వినియోగం, RAM లేదా అభ్యర్థనల సంఖ్య. టాస్క్‌లు అన్ని ఉచిత సందర్భాలను ఆక్రమించినట్లయితే, కొత్త యంత్రాలు స్వయంచాలకంగా సృష్టించబడవు.

ECS కెపాసిటీ ప్రొవైడర్స్ (ECS CP) రాకతో ఇది మారిపోయింది. ఇప్పుడు ECSలోని ప్రతి సేవను ASGతో అనుబంధించవచ్చు మరియు రన్నింగ్ ఇన్‌స్టాన్స్‌లకు టాస్క్‌లు సరిపోకపోతే, కొత్తవి పెంచబడతాయి (కానీ ఏర్పాటు చేసిన ASG పరిమితుల్లో). ఇది కూడా వ్యతిరేక దిశలో పని చేస్తుంది, ECS CP టాస్క్‌లు లేకుండా నిష్క్రియ సందర్భాలను చూసినట్లయితే, అది వాటిని మూసివేయడానికి ASG ఆదేశాన్ని ఇస్తుంది. ECS CP లక్ష్య లోడ్ యొక్క లక్ష్య శాతాన్ని పేర్కొనే సామర్థ్యాన్ని కలిగి ఉంది, తద్వారా నిర్దిష్ట సంఖ్యలో యంత్రాలు ఎల్లప్పుడూ త్వరితగతిన స్కేలింగ్ టాస్క్‌ల కోసం ఉచితం; నేను దీని గురించి కొంచెం తర్వాత మాట్లాడతాను.

EC2 టెంప్లేట్‌లను ప్రారంభించండి

ఈ అవస్థాపనను సృష్టించడం గురించి వివరంగా చెప్పే ముందు నేను మాట్లాడే చివరి సేవ EC2 లాంచ్ టెంప్లేట్‌లు. ఇది ప్రతిసారీ మొదటి నుండి పునరావృతం కాకుండా అన్ని యంత్రాలు ప్రారంభమయ్యే టెంప్లేట్‌ను రూపొందించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇక్కడ మీరు ప్రారంభించడానికి యంత్రం రకం, భద్రతా సమూహం, డిస్క్ ఇమేజ్ మరియు అనేక ఇతర పారామితులను ఎంచుకోవచ్చు. మీరు ప్రారంభించిన అన్ని సందర్భాలకు అప్‌లోడ్ చేయబడే వినియోగదారు డేటాను కూడా పేర్కొనవచ్చు. మీరు వినియోగదారు డేటాలో స్క్రిప్ట్‌లను అమలు చేయవచ్చు, ఉదాహరణకు, మీరు ఫైల్ యొక్క కంటెంట్‌లను సవరించవచ్చు ECS ఏజెంట్ కాన్ఫిగరేషన్‌లు.

ఈ వ్యాసం కోసం అత్యంత ముఖ్యమైన కాన్ఫిగరేషన్ పారామీటర్లలో ఒకటి ECS_ENABLE_SPOT_INSTANCE_DRAINING= నిజం. ఈ పరామితి ప్రారంభించబడితే, స్పాట్ ఇన్‌స్టాన్స్ తీసివేయబడుతుందనే సంకేతాన్ని ECS అందుకున్న వెంటనే, దానిపై పని చేసే అన్ని టాస్క్‌లను డ్రైనింగ్ స్థితికి బదిలీ చేస్తుంది. ఈ సందర్భానికి కొత్త టాస్క్‌లు ఏవీ కేటాయించబడవు; ప్రస్తుతం దీనికి రోల్ అవుట్ చేయాలనుకుంటున్న టాస్క్‌లు ఉంటే, అవి రద్దు చేయబడతాయి. బ్యాలెన్సర్ నుండి అభ్యర్థనలు కూడా రావడం ఆగిపోతాయి. వాస్తవ సంఘటనకు 2 నిమిషాల ముందు ఉదాహరణ తొలగింపు నోటిఫికేషన్ వస్తుంది. అందువల్ల, మీ సేవ 2 నిమిషాల కంటే ఎక్కువ పనిని చేయకపోతే మరియు డిస్క్‌లో ఏదైనా సేవ్ చేయకపోతే, మీరు డేటాను కోల్పోకుండా స్పాట్ ఇన్‌స్టాన్స్‌లను ఉపయోగించవచ్చు.

డిస్క్ గురించి - AWS ఇటీవల నేను ECS తో కలిసి సాగే ఫైల్ సిస్టమ్ (EFS) ను ఉపయోగించడం సాధ్యమవుతుంది; ఈ పథకంతో, డిస్క్ కూడా అడ్డంకి కాదు, కానీ మేము దీన్ని ప్రయత్నించలేదు, ఎందుకంటే సూత్రప్రాయంగా మనకు స్థితిని నిల్వ చేయడానికి డిస్క్ అవసరం లేదు. డిఫాల్ట్‌గా, SIGINTని స్వీకరించిన తర్వాత (ఒక పనిని డ్రైనింగ్ స్థితికి బదిలీ చేసినప్పుడు పంపబడుతుంది), అన్ని రన్నింగ్ టాస్క్‌లు 30 సెకన్ల తర్వాత ఆపివేయబడతాయి, అవి ఇంకా పూర్తి కానప్పటికీ; మీరు ఈ సమయాన్ని పారామీటర్ ఉపయోగించి మార్చవచ్చు ECS_CONTAINER_STOP_TIMEOUT. ప్రధాన విషయం ఏమిటంటే స్పాట్ మెషీన్ల కోసం 2 నిమిషాల కంటే ఎక్కువ సెట్ చేయకూడదు.

సేవను సృష్టిస్తోంది

వివరించిన సేవను రూపొందించడానికి ముందుకు వెళ్దాం. ఈ ప్రక్రియలో, పైన పేర్కొనబడని అనేక ఉపయోగకరమైన అంశాలను నేను అదనంగా వివరిస్తాను. సాధారణంగా, ఇది దశల వారీ సూచన, కానీ నేను చాలా ప్రాథమికంగా పరిగణించను లేదా దీనికి విరుద్ధంగా, చాలా నిర్దిష్ట కేసులను పరిగణించను. అన్ని చర్యలు AWS విజువల్ కన్సోల్‌లో నిర్వహించబడతాయి, అయితే క్లౌడ్‌ఫార్మేషన్ లేదా టెర్రాఫార్మ్‌ని ఉపయోగించి ప్రోగ్రామటిక్‌గా పునరుత్పత్తి చేయవచ్చు. Adapty వద్ద మేము Terraformని ఉపయోగిస్తాము.

EC2 లాంచ్ టెంప్లేట్

ఈ సేవ ఉపయోగించబడే యంత్రాల కాన్ఫిగరేషన్‌ను సృష్టిస్తుంది. టెంప్లేట్‌లు EC2 -> ఉదంతాలు -> లాంచ్ టెంప్లేట్‌ల విభాగంలో నిర్వహించబడతాయి.

అమెజాన్ మెషిన్ ఇమేజ్ (AMI) — అన్ని ఉదంతాలు ప్రారంభించబడే డిస్క్ ఇమేజ్‌ను పేర్కొనండి. ECS కోసం, చాలా సందర్భాలలో అమెజాన్ నుండి ఆప్టిమైజ్ చేసిన చిత్రాన్ని ఉపయోగించడం విలువ. ఇది క్రమం తప్పకుండా నవీకరించబడుతుంది మరియు ECS పని చేయడానికి అవసరమైన ప్రతిదాన్ని కలిగి ఉంటుంది. ప్రస్తుత చిత్రం IDని కనుగొనడానికి, పేజీకి వెళ్లండి Amazon ECS-ఆప్టిమైజ్ చేసిన AMIలు, మీరు ఉపయోగిస్తున్న ప్రాంతాన్ని ఎంచుకుని, దాని కోసం AMI IDని కాపీ చేయండి. ఉదాహరణకు, us-east-1 ప్రాంతం కోసం, వ్రాసే సమయంలో ప్రస్తుత ID ami-00c7c1cf5bdc913ed. కస్టమ్ విలువను పేర్కొను అంశంలో ఈ ID తప్పనిసరిగా చొప్పించబడాలి.

ఉదాహరణ రకం - ఉదాహరణ రకాన్ని సూచించండి. మీ పనికి బాగా సరిపోయేదాన్ని ఎంచుకోండి.

కీ జత (లాగిన్) - అవసరమైతే, మీరు SSH ద్వారా ఉదాహరణకి కనెక్ట్ చేయగల ప్రమాణపత్రాన్ని పేర్కొనండి.

నెట్వర్క్ అమరికలు - నెట్‌వర్క్ పారామితులను పేర్కొనండి. నెట్‌వర్కింగ్ ప్లాట్‌ఫారమ్ చాలా సందర్భాలలో వర్చువల్ ప్రైవేట్ క్లౌడ్ (VPC) ఉండాలి. భద్రతా సమూహాలు - మీ ఉదాహరణల కోసం భద్రతా సమూహాలు. మేము ఉదాహరణల ముందు బ్యాలెన్సర్‌ని ఉపయోగిస్తాము కాబట్టి, బ్యాలెన్సర్ నుండి మాత్రమే ఇన్‌కమింగ్ కనెక్షన్‌లను అనుమతించే సమూహాన్ని ఇక్కడ పేర్కొనమని నేను సిఫార్సు చేస్తున్నాను. అంటే, మీరు 2 భద్రతా సమూహాలను కలిగి ఉంటారు, బ్యాలెన్సర్ కోసం ఒకటి, ఇది పోర్ట్‌లు 80 (http) మరియు 443 (https)లో ఎక్కడి నుండైనా ఇన్‌బౌండ్ కనెక్షన్‌లను అనుమతిస్తుంది మరియు బ్యాలెన్సర్ గ్రూప్ నుండి ఏదైనా పోర్ట్‌లలో ఇన్‌కమింగ్ కనెక్షన్‌లను అనుమతించే మెషీన్‌ల కోసం రెండవది. . రెండు సమూహాలలో అవుట్‌బౌండ్ కనెక్షన్‌లు తప్పనిసరిగా TCP ప్రోటోకాల్‌ని ఉపయోగించి అన్ని పోర్ట్‌లకు అన్ని చిరునామాలకు తెరవబడాలి. మీరు అవుట్‌గోయింగ్ కనెక్షన్‌ల కోసం పోర్ట్‌లు మరియు చిరునామాలను పరిమితం చేయవచ్చు, కానీ మీరు క్లోజ్డ్ పోర్ట్‌లో ఏదైనా యాక్సెస్ చేయడానికి ప్రయత్నించడం లేదని మీరు నిరంతరం పర్యవేక్షించాలి.

నిల్వ (వాల్యూమ్‌లు) — యంత్రాల కోసం డిస్క్ పారామితులను పేర్కొనండి. డిస్క్ పరిమాణం AMIలో పేర్కొన్న దానికంటే తక్కువగా ఉండకూడదు; ECS ఆప్టిమైజ్ కోసం ఇది 30 GiB.

అధునాతన వివరాలు - అదనపు పారామితులను పేర్కొనండి.

కొనుగోలు ఎంపిక — మనం స్పాట్ ఇన్‌స్టాన్స్‌లను కొనుగోలు చేయాలనుకుంటున్నారా. మేము కోరుకుంటున్నాము, కానీ మేము ఈ పెట్టెను ఇక్కడ తనిఖీ చేయము; మేము దీనిని ఆటో స్కేలింగ్ సమూహంలో కాన్ఫిగర్ చేస్తాము, అక్కడ మరిన్ని ఎంపికలు ఉన్నాయి.

IAM ఉదాహరణ ప్రొఫైల్ — సందర్భాలు ప్రారంభించబడే పాత్రను సూచించండి. ఉదంతాలు ECSలో అమలు కావాలంటే, వాటికి అనుమతులు అవసరం, ఇవి సాధారణంగా పాత్రలో కనిపిస్తాయి ecsInstanceRole. కొన్ని సందర్భాల్లో దీన్ని సృష్టించవచ్చు, కాకపోతే, ఇక్కడ సూచనల దీన్ని ఎలా చేయాలో. సృష్టి తర్వాత, మేము దానిని టెంప్లేట్‌లో సూచిస్తాము.
తదుపరి అనేక పారామితులు ఉన్నాయి, ప్రాథమికంగా మీరు డిఫాల్ట్ విలువలను ప్రతిచోటా ఉంచవచ్చు, కానీ వాటిలో ప్రతి ఒక్కటి స్పష్టమైన వివరణను కలిగి ఉంటుంది. నేను ఎల్లప్పుడూ EBS-ఆప్టిమైజ్ చేసిన ఉదాహరణను మరియు T2/T3 అన్‌లిమిటెడ్ ఎంపికలను ఉపయోగిస్తే ఎనేబుల్ చేస్తాను పగిలిపోయే సందర్భాలలో.

వినియోగదారు డేటా - వినియోగదారు డేటాను సూచించండి. మేము ఫైల్‌ని ఎడిట్ చేస్తాము /etc/ecs/ecs.config, ఇది ECS ఏజెంట్ కాన్ఫిగరేషన్‌ను కలిగి ఉంటుంది.
వినియోగదారు డేటా ఎలా ఉంటుందో దానికి ఉదాహరణ:

#!/bin/bash
echo ECS_CLUSTER=DemoApiClusterProd >> /etc/ecs/ecs.config
echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config
echo ECS_CONTAINER_STOP_TIMEOUT=1m >> /etc/ecs/ecs.config
echo ECS_ENGINE_AUTH_TYPE=docker >> /etc/ecs/ecs.config
echo "ECS_ENGINE_AUTH_DATA={"registry.gitlab.com":{"username":"username","password":"password"}}" >> /etc/ecs/ecs.config

ECS_CLUSTER=DemoApiClusterProd — పారామీటర్ ఇచ్చిన పేరుతో క్లస్టర్‌కు చెందినదని సూచిస్తుంది, అంటే, ఈ క్లస్టర్ తన విధులను ఈ సర్వర్‌లో ఉంచగలదు. మేము ఇంకా క్లస్టర్‌ని సృష్టించలేదు, కానీ దీన్ని సృష్టించేటప్పుడు మేము ఈ పేరును ఉపయోగిస్తాము.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true — స్పాట్ ఇన్‌స్టాన్స్‌ను ఆఫ్ చేయడానికి సిగ్నల్ వచ్చినప్పుడు, దానిపై ఉన్న అన్ని టాస్క్‌లు డ్రైనింగ్ స్థితికి బదిలీ చేయబడాలని పరామితి నిర్దేశిస్తుంది.

ECS_CONTAINER_STOP_TIMEOUT=1m - పారామీటర్ SIGINT సిగ్నల్‌ను స్వీకరించిన తర్వాత, అన్ని టాస్క్‌లు చంపబడటానికి 1 నిమిషం ముందు ఉంటాయి.

ECS_ENGINE_AUTH_TYPE=docker — డాకర్ స్కీమ్ అధికార యంత్రాంగంగా ఉపయోగించబడుతుందని పరామితి సూచిస్తుంది

ECS_ENGINE_AUTH_DATA=... — మీ డాకర్ చిత్రాలు నిల్వ చేయబడిన ప్రైవేట్ కంటైనర్ రిజిస్ట్రీకి కనెక్షన్ పారామితులు. ఇది పబ్లిక్ అయితే, మీరు దేనినీ పేర్కొనవలసిన అవసరం లేదు.

ఈ కథనం యొక్క ప్రయోజనాల కోసం, నేను డాకర్ హబ్ నుండి పబ్లిక్ ఇమేజ్‌ని ఉపయోగిస్తాను, కాబట్టి పారామితులను పేర్కొనండి ECS_ENGINE_AUTH_TYPE и ECS_ENGINE_AUTH_DATA అవసరం లేదు.

తెలుసుకోవడం మంచిది: AMIని క్రమం తప్పకుండా అప్‌డేట్ చేయాలని సిఫార్సు చేయబడింది, ఎందుకంటే కొత్త వెర్షన్‌లు డాకర్, లైనక్స్, ECS ఏజెంట్ మొదలైన వాటి వెర్షన్‌లను అప్‌డేట్ చేస్తాయి. దీని గురించి మర్చిపోకుండా ఉండేందుకు, మీరు వీటిని చేయవచ్చు. నోటిఫికేషన్‌లను సెటప్ చేయండి కొత్త వెర్షన్ల విడుదల గురించి. మీరు ఇమెయిల్ ద్వారా నోటిఫికేషన్‌లను స్వీకరించవచ్చు మరియు మాన్యువల్‌గా అప్‌డేట్ చేయవచ్చు లేదా నవీకరించబడిన AMIతో లాంచ్ టెంప్లేట్ యొక్క కొత్త వెర్షన్‌ను స్వయంచాలకంగా సృష్టించే లాంబ్డా ఫంక్షన్‌ను మీరు వ్రాయవచ్చు.

EC2 ఆటో స్కేలింగ్ గ్రూప్

ఆటో స్కేలింగ్ గ్రూప్ లాంచ్ మరియు స్కేలింగ్ ఉదంతాలకు బాధ్యత వహిస్తుంది. గుంపులు EC2 -> ఆటో స్కేలింగ్ -> ఆటో స్కేలింగ్ గ్రూపుల విభాగంలో నిర్వహించబడతాయి.

టెంప్లేట్‌ను ప్రారంభించండి — మునుపటి దశలో సృష్టించిన టెంప్లేట్‌ను ఎంచుకోండి. మేము డిఫాల్ట్ సంస్కరణను వదిలివేస్తాము.

కొనుగోలు ఎంపికలు మరియు ఉదాహరణ రకాలు — క్లస్టర్ కోసం ఉదాహరణల రకాలను పేర్కొనండి. లాంచ్ టెంప్లేట్‌కి కట్టుబడి లాంచ్ టెంప్లేట్ నుండి ఇన్‌స్టాన్స్ రకాన్ని ఉపయోగిస్తుంది. కొనుగోలు ఎంపికలు మరియు ఉదాహరణ రకాలను మిళితం చేయడం వలన సందర్భ రకాలను సరళంగా కాన్ఫిగర్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మేము దానిని ఉపయోగిస్తాము.

ఐచ్ఛిక ఆన్-డిమాండ్ బేస్ - ఎల్లప్పుడూ పని చేసే సాధారణ, స్పాట్ కాని సందర్భాల సంఖ్య.

బేస్ కంటే ఎక్కువ డిమాండ్ శాతం - రెగ్యులర్ మరియు స్పాట్ ఇన్‌స్టాన్స్‌ల శాతం నిష్పత్తి, 50-50 సమానంగా పంపిణీ చేయబడుతుంది, ప్రతి సాధారణ ఉదాహరణకి 20-80 4 స్పాట్‌లు పెంచబడతాయి. ఈ ఉదాహరణ యొక్క ప్రయోజనాల కోసం, నేను 50-50ని సూచిస్తాను, కానీ వాస్తవానికి మేము చాలా తరచుగా 20-80 చేస్తాము, కొన్ని సందర్భాల్లో 0-100.

ఉదాహరణ రకాలు — ఇక్కడ మీరు క్లస్టర్‌లో ఉపయోగించబడే అదనపు రకాల ఉదాహరణలను పేర్కొనవచ్చు. కథ యొక్క అర్థం నాకు అర్థం కాలేదు కాబట్టి మేము దానిని ఎప్పుడూ ఉపయోగించలేదు. బహుశా ఇది నిర్దిష్ట రకాల సందర్భాలలో పరిమితుల వల్ల కావచ్చు, కానీ వాటిని మద్దతు ద్వారా సులభంగా పెంచవచ్చు. మీకు అప్లికేషన్ తెలిస్తే, వ్యాఖ్యలలో చదవడానికి నేను సంతోషిస్తాను)

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

నెట్వర్క్ — నెట్‌వర్క్ సెట్టింగ్‌లు, యంత్రాల కోసం VPC మరియు సబ్‌నెట్‌లను ఎంచుకోండి, చాలా సందర్భాలలో మీరు అందుబాటులో ఉన్న అన్ని సబ్‌నెట్‌లను ఎంచుకోవాలి.

లోడ్ బ్యాలెన్సింగ్ - balancer సెట్టింగ్‌లు, కానీ మేము దీన్ని విడిగా చేస్తాము, మేము ఇక్కడ దేనినీ తాకము. ఆరోగ్య తనిఖీలు తర్వాత కూడా కాన్ఫిగర్ చేయబడుతుంది.

సమూహ పరిమాణం — మేము క్లస్టర్‌లోని యంత్రాల సంఖ్య మరియు ప్రారంభంలో కావలసిన యంత్రాల సంఖ్యపై పరిమితులను సూచిస్తాము. కొలమానాల ప్రకారం స్కేలింగ్ జరిగినప్పటికీ, క్లస్టర్‌లోని యంత్రాల సంఖ్య కనిష్టంగా పేర్కొన్న దాని కంటే తక్కువగా ఉండదు మరియు గరిష్టం కంటే ఎక్కువగా ఉండదు.

స్కేలింగ్ విధానాలు - స్కేలింగ్ పారామితులు, కానీ మేము నడుస్తున్న ECS టాస్క్‌ల ఆధారంగా స్కేల్ చేస్తాము, కాబట్టి మేము స్కేలింగ్‌ను తర్వాత కాన్ఫిగర్ చేస్తాము.

ఉదాహరణ స్కేల్-ఇన్ ప్రొటెక్షన్ - స్కేలింగ్ డౌన్ చేసినప్పుడు తొలగింపు నుండి ఉదాహరణల రక్షణ. మేము దీన్ని ప్రారంభిస్తాము, తద్వారా రన్నింగ్ టాస్క్‌లను కలిగి ఉన్న మెషీన్‌ను ASG తొలగించదు. ECS కెపాసిటీ ప్రొవైడర్ టాస్క్‌లు లేని సందర్భాల్లో రక్షణను నిలిపివేస్తుంది.

ట్యాగ్లను అనుసంధించు — మీరు ఉదంతాల కోసం ట్యాగ్‌లను పేర్కొనవచ్చు (దీని కోసం, ట్యాగ్ కొత్త సందర్భాల చెక్‌బాక్స్‌ని తప్పనిసరిగా తనిఖీ చేయాలి). పేరు ట్యాగ్‌ని పేర్కొనమని నేను సిఫార్సు చేస్తున్నాను, అప్పుడు సమూహంలో ప్రారంభించబడిన అన్ని సందర్భాలు ఒకే పేరును కలిగి ఉంటాయి మరియు వాటిని కన్సోల్‌లో వీక్షించడం సౌకర్యంగా ఉంటుంది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

సమూహాన్ని సృష్టించిన తర్వాత, దాన్ని తెరిచి, అధునాతన కాన్ఫిగరేషన్‌ల విభాగానికి వెళ్లండి. సృష్టి దశలో కన్సోల్‌లో అన్ని ఎంపికలు ఎందుకు కనిపించవు.

రద్దు విధానాలు - ఉదాహరణలను తొలగించేటప్పుడు పరిగణనలోకి తీసుకునే నియమాలు. అవి క్రమంలో వర్తించబడతాయి. మేము సాధారణంగా దిగువ చిత్రంలో ఉన్న వాటిని ఉపయోగిస్తాము. ముందుగా, పురాతన లాంచ్ టెంప్లేట్‌తో ఉన్న ఉదంతాలు తొలగించబడతాయి (ఉదాహరణకు, మేము AMIని అప్‌డేట్ చేస్తే, మేము కొత్త వెర్షన్‌ను సృష్టించాము, కానీ అన్ని సందర్భాలు దానికి మారడానికి నిర్వహించబడతాయి). తర్వాతి బిల్లింగ్ గంటకు దగ్గరగా ఉండే సందర్భాలు ఎంపిక చేయబడతాయి. ఆపై ప్రారంభ తేదీ ఆధారంగా పురాతనమైనవి ఎంపిక చేయబడతాయి.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

తెలుసుకోవడం మంచిది: క్లస్టర్‌లో అన్ని మెషీన్‌లను అప్‌డేట్ చేయడానికి, ఉపయోగించడానికి సౌకర్యంగా ఉంటుంది ఉదాహరణ రిఫ్రెష్. మీరు దీన్ని మునుపటి దశ నుండి లాంబ్డా ఫంక్షన్‌తో కలిపితే, మీరు పూర్తిగా ఆటోమేటెడ్ ఇన్‌స్టాన్స్ అప్‌డేట్ సిస్టమ్‌ను కలిగి ఉంటారు. అన్ని మెషీన్‌లను అప్‌డేట్ చేసే ముందు, మీరు గ్రూప్‌లోని అన్ని సందర్భాల్లో ఇన్‌స్టాన్స్ స్కేల్-ఇన్ ప్రొటెక్షన్‌ను తప్పనిసరిగా నిలిపివేయాలి. సమూహంలో కాన్ఫిగరేషన్ కాదు, కానీ యంత్రాల నుండి రక్షణ, ఇది ఇన్‌స్టాన్స్ మేనేజ్‌మెంట్ ట్యాబ్‌లో చేయబడుతుంది.

అప్లికేషన్ లోడ్ బ్యాలెన్సర్ మరియు EC2 టార్గెట్ గ్రూప్

బ్యాలెన్సర్ EC2 → లోడ్ బ్యాలెన్సింగ్ → లోడ్ బ్యాలెన్సర్‌ల విభాగంలో సృష్టించబడింది. మేము అప్లికేషన్ లోడ్ బ్యాలెన్సర్‌ని ఉపయోగిస్తాము; వివిధ రకాల బ్యాలెన్సర్‌ల పోలికను ఇక్కడ చదవవచ్చు సేవా పేజీ.

శ్రోతలు - పోర్ట్‌లు 80 మరియు 443ని తయారు చేయడం మరియు బ్యాలెన్సర్ నియమాలను ఉపయోగించి 80 నుండి 443కి మళ్లించడం అర్ధమే.

లభ్యత మండలాలు — చాలా సందర్భాలలో, మేము ప్రతి ఒక్కరికీ యాక్సెసిబిలిటీ జోన్‌లను ఎంచుకుంటాము.

భద్రతా సెట్టింగ్‌లను కాన్ఫిగర్ చేయండి — బాలన్సర్ కోసం SSL ప్రమాణపత్రం ఇక్కడ సూచించబడింది, అత్యంత అనుకూలమైన ఎంపిక ఒక సర్టిఫికేట్ చేయండి ACM లో. తేడాల గురించి సెక్యూరిటీ పాలసీ లో చదవవచ్చు డాక్యుమెంటేషన్, మీరు దీన్ని డిఫాల్ట్‌గా ఎంచుకోవచ్చు ELBSecurityPolicy-2016-08. బ్యాలెన్సర్‌ను సృష్టించిన తర్వాత, మీరు దాన్ని చూస్తారు DNS పేరు, మీరు మీ డొమైన్ కోసం CNAMEని కాన్ఫిగర్ చేయాలి. ఉదాహరణకు, క్లౌడ్‌ఫ్లేర్‌లో ఇది ఇలా కనిపిస్తుంది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

సెక్యూరిటీ గ్రూప్ — బాలన్సర్ కోసం భద్రతా సమూహాన్ని సృష్టించండి లేదా ఎంచుకోండి, నేను దీని గురించి EC2 లాంచ్ టెంప్లేట్ → నెట్‌వర్క్ సెట్టింగ్‌ల విభాగంలో కొంచెం పైన వ్రాసాను.

టార్గెట్ గుంపు — మేము బ్యాలెన్సర్ నుండి మెషీన్‌లకు అభ్యర్థనలను రూటింగ్ చేయడానికి మరియు సమస్యల విషయంలో వాటిని భర్తీ చేయడానికి వాటి లభ్యతను తనిఖీ చేయడానికి బాధ్యత వహించే సమూహాన్ని సృష్టిస్తాము. లక్ష్య రకం ఉదాహరణగా ఉండాలి, ప్రోటోకాల్ и పోర్ట్ ఏదైనా, మీరు బ్యాలెన్సర్ మరియు ఇన్‌స్టాన్స్‌ల మధ్య కమ్యూనికేషన్ కోసం HTTPSని ఉపయోగిస్తే, మీరు వాటికి సర్టిఫికేట్‌ను అప్‌లోడ్ చేయాలి. ఈ ఉదాహరణ యొక్క ప్రయోజనాల కోసం, మేము దీన్ని చేయము, మేము పోర్ట్ 80ని వదిలివేస్తాము.

ఆరోగ్య తనిఖీలు - సేవ యొక్క కార్యాచరణను తనిఖీ చేయడానికి పారామితులు. నిజమైన సేవలో, ఇది వ్యాపార తర్కంలోని ముఖ్యమైన భాగాలను అమలు చేసే ప్రత్యేక అభ్యర్థన అయి ఉండాలి; ఈ ఉదాహరణ ప్రయోజనాల కోసం, నేను డిఫాల్ట్ సెట్టింగ్‌లను వదిలివేస్తాను. తర్వాత, మీరు అభ్యర్థన విరామం, గడువు ముగిసింది, విజయ కోడ్‌లు మొదలైనవాటిని ఎంచుకోవచ్చు. మా ఉదాహరణలో, మేము విజయ కోడ్‌లు 200-399ని సూచిస్తాము, ఎందుకంటే ఉపయోగించబడే డాకర్ చిత్రం 304 కోడ్‌ని అందిస్తుంది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

లక్ష్యాలను నమోదు చేయండి — ఇక్కడ సమూహం కోసం కార్లు ఎంపిక చేయబడ్డాయి, కానీ మా విషయంలో ఇది ECS ద్వారా చేయబడుతుంది, కాబట్టి మేము ఈ దశను దాటవేస్తాము.

తెలుసుకోవడం మంచిది: బాలన్సర్ స్థాయిలో మీరు నిర్దిష్టంగా S3లో సేవ్ చేయబడే లాగ్‌లను ప్రారంభించవచ్చు ఫార్మాట్. అక్కడ నుండి అవి విశ్లేషణల కోసం మూడవ పక్ష సేవలకు ఎగుమతి చేయబడతాయి లేదా మీరు S3లోని డేటాపై నేరుగా SQL ప్రశ్నలను చేయవచ్చు ఎథీనా ఉపయోగించి. ఇది సౌకర్యవంతంగా ఉంటుంది మరియు అదనపు కోడ్ లేకుండా పని చేస్తుంది. నేను నిర్దిష్ట సమయం తర్వాత S3 బకెట్ నుండి లాగ్‌ల తొలగింపును సెటప్ చేయమని కూడా సిఫార్సు చేస్తున్నాను.

ECS టాస్క్ నిర్వచనం

మునుపటి దశల్లో, మేము సర్వీస్ ఇన్‌ఫ్రాస్ట్రక్చర్‌కు సంబంధించిన ప్రతిదాన్ని సృష్టించాము; ఇప్పుడు మేము ప్రారంభించబోయే కంటైనర్‌లను వివరించడానికి ముందుకు వెళ్తాము. ఇది ECS → టాస్క్ డెఫినిషన్స్ విభాగంలో జరుగుతుంది.

లాంచ్ రకం అనుకూలత - EC2 ఎంచుకోండి.

టాస్క్ ఎగ్జిక్యూషన్ IAM పాత్ర - ఎంచుకోండి ecsTaskExecutionRole. దీన్ని ఉపయోగించి, లాగ్‌లు వ్రాయబడతాయి, రహస్య వేరియబుల్స్‌కు యాక్సెస్ ఇవ్వబడుతుంది, మొదలైనవి.

కంటైనర్ నిర్వచనాల విభాగంలో, కంటైనర్‌ను జోడించు క్లిక్ చేయండి.

చిత్రం - ప్రాజెక్ట్ కోడ్‌తో చిత్రానికి లింక్; ఈ ఉదాహరణ కోసం నేను డాకర్ హబ్ నుండి పబ్లిక్ ఇమేజ్‌ని ఉపయోగిస్తాను బిట్నామి/నోడ్-ఉదాహరణ:0.0.1.

మెమరీ పరిమితులు - కంటైనర్ కోసం మెమరీ పరిమితులు. కఠినమైన పరిమితి - కఠినమైన పరిమితి, కంటైనర్ పేర్కొన్న విలువను మించి ఉంటే, డాకర్ కిల్ కమాండ్ అమలు చేయబడుతుంది, కంటైనర్ వెంటనే చనిపోతుంది. మృదువైన పరిమితి - సాఫ్ట్ పరిమితి, కంటైనర్ పేర్కొన్న విలువకు మించి వెళ్ళవచ్చు, కానీ యంత్రాలపై పనులను ఉంచేటప్పుడు ఈ పరామితి పరిగణనలోకి తీసుకోబడుతుంది. ఉదాహరణకు, ఒక యంత్రం 4 GiB RAMను కలిగి ఉంటే మరియు కంటైనర్ యొక్క మృదువైన పరిమితి 2048 MiB అయితే, ఈ యంత్రం ఈ కంటైనర్‌తో గరిష్టంగా 2 రన్నింగ్ టాస్క్‌లను కలిగి ఉంటుంది. వాస్తవానికి, 4 GiB RAM 4096 MiB కంటే కొంచెం తక్కువగా ఉంది, దీనిని క్లస్టర్‌లోని ECS ఇన్‌స్టాన్సెస్ ట్యాబ్‌లో వీక్షించవచ్చు. సాఫ్ట్ లిమిట్ హార్డ్ లిమిట్ కంటే ఎక్కువగా ఉండకూడదు. ఒక పనిలో అనేక కంటైనర్లు ఉంటే, వాటి పరిమితులు సంగ్రహించబడతాయని అర్థం చేసుకోవడం ముఖ్యం.

పోర్ట్ మ్యాపింగ్‌లు - లో హోస్ట్ పోర్ట్ మేము 0ని సూచిస్తాము, దీని అర్థం పోర్ట్ డైనమిక్‌గా కేటాయించబడుతుంది మరియు టార్గెట్ గ్రూప్ ద్వారా పర్యవేక్షించబడుతుంది. కంటైనర్ పోర్ట్ — మీ అప్లికేషన్ రన్ అయ్యే పోర్ట్ తరచుగా ఎగ్జిక్యూషన్ కమాండ్‌లో పేర్కొనబడుతుంది లేదా మీ అప్లికేషన్ కోడ్, డాకర్‌ఫైల్ మొదలైన వాటిలో కేటాయించబడుతుంది. మా ఉదాహరణ కోసం మేము 3000ని ఉపయోగిస్తాము ఎందుకంటే ఇది జాబితా చేయబడింది Dockerfile ఉపయోగించబడుతున్న చిత్రం.

ఆరోగ్య పరీక్ష — కంటైనర్ ఆరోగ్య తనిఖీ పారామితులు, టార్గెట్ గ్రూప్‌లో కాన్ఫిగర్ చేయబడిన దానితో గందరగోళం చెందకూడదు.

పర్యావరణ - పర్యావరణ సెట్టింగులు. CPU యూనిట్లు - మెమరీ పరిమితుల మాదిరిగానే, ప్రాసెసర్ గురించి మాత్రమే. ప్రతి ప్రాసెసర్ కోర్ 1024 యూనిట్లు, కాబట్టి సర్వర్‌లో డ్యూయల్ కోర్ ప్రాసెసర్ ఉంటే మరియు కంటైనర్ 512కి సెట్ చేయబడితే, ఈ కంటైనర్‌తో 4 టాస్క్‌లు ఒక సర్వర్‌లో ప్రారంభించబడతాయి. CPU యూనిట్లు ఎల్లప్పుడూ కోర్ల సంఖ్యకు అనుగుణంగా ఉంటాయి; మెమరీ విషయంలో వలె వాటిలో కొంచెం తక్కువగా ఉండకూడదు.

కమాండ్ — కంటైనర్ లోపల సేవను ప్రారంభించే ఆదేశం, అన్ని పారామితులు కామాలతో వేరు చేయబడతాయి. ఇది గునికార్న్, npm మొదలైనవి కావచ్చు. పేర్కొనకపోతే, Dockerfile నుండి CMD డైరెక్టివ్ విలువ ఉపయోగించబడుతుంది. మేము సూచిస్తున్నాము npm,start.

పర్యావరణ వేరియబుల్స్ - కంటైనర్ ఎన్విరాన్మెంట్ వేరియబుల్స్. ఇది సాధారణ టెక్స్ట్ డేటా లేదా రహస్య వేరియబుల్స్ కావచ్చు సీక్రెట్స్ మేనేజర్ లేదా పారామీటర్ స్టోర్.

నిల్వ మరియు లాగింగ్ — ఇక్కడ మేము CloudWatch లాగ్‌లలో లాగింగ్‌ను సెటప్ చేస్తాము (AWS నుండి లాగ్‌ల కోసం ఒక సేవ). దీన్ని చేయడానికి, స్వీయ-కాన్ఫిగర్ క్లౌడ్‌వాచ్ లాగ్‌ల చెక్‌బాక్స్‌ను ప్రారంభించండి. టాస్క్ డెఫినిషన్‌ని సృష్టించిన తర్వాత, క్లౌడ్‌వాచ్‌లో లాగ్‌ల సమూహం స్వయంచాలకంగా సృష్టించబడుతుంది. డిఫాల్ట్‌గా, లాగ్‌లు దానిలో నిరవధికంగా నిల్వ చేయబడతాయి; నిలుపుదల వ్యవధిని నెవర్ ఎక్స్‌పైర్ నుండి అవసరమైన కాలానికి మార్చమని నేను సిఫార్సు చేస్తున్నాను. ఇది CloudWatch లాగ్ సమూహాలలో చేయబడుతుంది, మీరు ప్రస్తుత వ్యవధిపై క్లిక్ చేసి కొత్తదాన్ని ఎంచుకోవాలి.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

ECS క్లస్టర్ మరియు ECS కెపాసిటీ ప్రొవైడర్

క్లస్టర్‌ను సృష్టించడానికి ECS → క్లస్టర్‌ల విభాగానికి వెళ్లండి. మేము టెంప్లేట్‌గా EC2 Linux + నెట్‌వర్కింగ్‌ని ఎంచుకుంటాము.

క్లస్టర్ పేరు - చాలా ముఖ్యమైనది, మేము లాంచ్ టెంప్లేట్ పారామీటర్‌లో పేర్కొన్న పేరునే ఇక్కడ చేస్తాము ECS_CLUSTER, మా విషయంలో - DemoApiClusterProd. ఖాళీ క్లస్టర్‌ని సృష్టించు చెక్‌బాక్స్‌ని తనిఖీ చేయండి. ఐచ్ఛికంగా, క్లౌడ్‌వాచ్‌లో సేవల కోసం కొలమానాలను వీక్షించడానికి మీరు కంటైనర్ అంతర్దృష్టులను ప్రారంభించవచ్చు. మీరు ప్రతిదీ సరిగ్గా చేస్తే, ECS ఉదంతాల విభాగంలో మీరు ఆటో స్కేలింగ్ సమూహంలో సృష్టించబడిన యంత్రాలను చూస్తారు.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

ట్యాబ్‌కి వెళ్లండి కెపాసిటీ ప్రొవైడర్లు మరియు క్రొత్తదాన్ని సృష్టించండి. నడుస్తున్న ECS టాస్క్‌ల సంఖ్యను బట్టి యంత్రాల సృష్టి మరియు షట్‌డౌన్‌ను నియంత్రించడం అవసరమని నేను మీకు గుర్తు చేస్తాను. ప్రొవైడర్‌ను ఒక సమూహానికి మాత్రమే కేటాయించగలరని గమనించడం ముఖ్యం.

ఆటో స్కేలింగ్ సమూహం - గతంలో సృష్టించిన సమూహాన్ని ఎంచుకోండి.

నిర్వహించబడిన స్కేలింగ్ — దీన్ని ప్రారంభించండి, తద్వారా ప్రొవైడర్ సేవను స్కేల్ చేయగలరు.

లక్ష్య సామర్థ్యం % - టాస్క్‌లతో లోడ్ చేయబడిన యంత్రాల శాతం మనకు ఎంత అవసరం. మీరు 100% పేర్కొన్నట్లయితే, అన్ని యంత్రాలు ఎల్లప్పుడూ రన్నింగ్ టాస్క్‌లతో బిజీగా ఉంటాయి. మీరు 50% పేర్కొన్నట్లయితే, సగం కార్లు ఎల్లప్పుడూ ఉచితం. ఈ సందర్భంలో, లోడ్‌లో పదునైన జంప్ ఉన్నట్లయితే, కొత్త టాక్సీలు తక్షణమే ఉచిత కార్లను పొందుతాయి, ఉదాహరణల కోసం వేచి ఉండాల్సిన అవసరం లేదు.

నిర్వహించబడిన ముగింపు రక్షణ — ఎనేబుల్, ఈ పరామితి తొలగింపు నుండి ఇన్‌స్టాన్స్‌ల రక్షణను తీసివేయడానికి ప్రొవైడర్‌ని అనుమతిస్తుంది. మెషీన్‌లో యాక్టివ్ టాస్క్‌లు లేనప్పుడు మరియు టార్గెట్ కెపాసిటీ%ని అనుమతించినప్పుడు ఇది జరుగుతుంది.

ECS సర్వీస్ మరియు స్కేలింగ్ సెటప్

చివరి దశ :) సేవను సృష్టించడానికి, మీరు సేవల ట్యాబ్‌లో గతంలో సృష్టించిన క్లస్టర్‌కి వెళ్లాలి.

లాంచ్ రకం — మీరు స్విచ్ టు కెపాసిటీ ప్రొవైడర్ స్ట్రాటజీపై క్లిక్ చేసి, గతంలో సృష్టించిన ప్రొవైడర్లను ఎంచుకోవాలి.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

టాస్క్ డెఫినిషన్ — గతంలో సృష్టించిన టాస్క్ డెఫినిషన్ మరియు దాని పునర్విమర్శను ఎంచుకోండి.

సేవ పేరు — గందరగోళాన్ని నివారించడానికి, మేము ఎల్లప్పుడూ టాస్క్ డెఫినిషన్‌ని సూచిస్తాము.

సేవ రకం - ఎల్లప్పుడూ ప్రతిరూపం.

పనుల సంఖ్య - సేవలో కావలసిన సక్రియ పనుల సంఖ్య. ఈ పరామితి స్కేలింగ్ ద్వారా నియంత్రించబడుతుంది, అయితే తప్పనిసరిగా పేర్కొనబడాలి.

కనీస ఆరోగ్యకరమైన శాతం и గరిష్ట శాతం - విస్తరణ సమయంలో పనుల ప్రవర్తనను నిర్ణయించండి. డిఫాల్ట్ విలువలు 100 మరియు 200, విస్తరణ సమయంలో టాస్క్‌ల సంఖ్య చాలా రెట్లు పెరుగుతుందని, ఆపై కావలసిన విలువకు తిరిగి వస్తుందని సూచిస్తుంది. మీకు 1 టాస్క్ రన్నింగ్ ఉంటే, min=0, మరియు max=100, అప్పుడు విస్తరణ సమయంలో అది చంపబడుతుంది మరియు ఆ తర్వాత కొత్తది లేవనెత్తబడుతుంది, అంటే ఇది పనికిరాని సమయం అవుతుంది. 1 పని నడుస్తుంటే, min=50, max=150, అప్పుడు విస్తరణ అస్సలు జరగదు, ఎందుకంటే 1 పనిని సగానికి విభజించడం లేదా ఒకటిన్నర రెట్లు పెంచడం సాధ్యం కాదు.

విస్తరణ రకం - రోలింగ్ అప్‌డేట్‌ను వదిలివేయండి.

ప్లేస్‌మెంట్ టెంప్లేట్లు - యంత్రాలపై పనులను ఉంచడానికి నియమాలు. డిఫాల్ట్ AZ బ్యాలెన్స్‌డ్ స్ప్రెడ్ - అంటే అన్ని లభ్యత జోన్‌లలో మెషీన్లు పెరిగే వరకు ప్రతి కొత్త టాస్క్ కొత్త ఉదాహరణలో ఉంచబడుతుంది. మేము సాధారణంగా BinPack - CPU మరియు Spread - AZ చేస్తాము; ఈ విధానంతో, ప్రతి CPUకి ఒక మెషీన్‌లో టాస్క్‌లు వీలైనంత దట్టంగా ఉంచబడతాయి. కొత్త యంత్రాన్ని సృష్టించడం అవసరమైతే, అది కొత్త లభ్యత జోన్‌లో సృష్టించబడుతుంది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

లోడ్ బాలన్సర్ రకం — అప్లికేషన్ లోడ్ బ్యాలెన్సర్‌ని ఎంచుకోండి.

సేవ IAM పాత్ర - ఎంచుకోండి ecsServiceRole.

లోడ్ బ్యాలెన్సర్ పేరు - గతంలో సృష్టించిన బాలన్సర్‌ను ఎంచుకోండి.

ఆరోగ్య తనిఖీ గ్రేస్ పీరియడ్ — కొత్త పనిని ప్రారంభించిన తర్వాత ఆరోగ్య తనిఖీలు చేసే ముందు పాజ్ చేయండి, మేము సాధారణంగా దానిని 60 సెకన్లకు సెట్ చేస్తాము.

బ్యాలెన్స్ లోడ్ చేయడానికి కంటైనర్ — టార్గెట్ గ్రూప్ పేరు అంశంలో, గతంలో సృష్టించిన సమూహాన్ని ఎంచుకోండి మరియు ప్రతిదీ స్వయంచాలకంగా పూరించబడుతుంది.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

సర్వీస్ ఆటో స్కేలింగ్ - సర్వీస్ స్కేలింగ్ పారామితులు. మీ సేవ యొక్క కావలసిన గణనను సర్దుబాటు చేయడానికి సర్వీస్ ఆటో స్కేలింగ్‌ని కాన్ఫిగర్ చేయి ఎంచుకోండి. స్కేలింగ్ చేసేటప్పుడు మేము కనిష్ట మరియు గరిష్ట సంఖ్యలో టాస్క్‌లను సెట్ చేస్తాము.

సర్వీస్ ఆటో స్కేలింగ్ కోసం IAM పాత్ర - ఎంచుకోండి AWSServiceRoleForApplicationAutoScaling_ECSService.

ఆటోమేటిక్ టాస్క్ స్కేలింగ్ విధానాలు - స్కేలింగ్ కోసం నియమాలు. 2 రకాలు ఉన్నాయి:

  1. టార్గెట్ ట్రాకింగ్ — ట్రాకింగ్ టార్గెట్ మెట్రిక్స్ (CPU/RAM వినియోగం లేదా ప్రతి పని కోసం అభ్యర్థనల సంఖ్య). ఉదాహరణకు, సగటు ప్రాసెసర్ లోడ్ 85%గా ఉండాలని మేము కోరుకుంటున్నాము, అది ఎక్కువ అయినప్పుడు, లక్ష్య విలువను చేరుకునే వరకు కొత్త టాస్క్‌లు జోడించబడతాయి. లోడ్ తక్కువగా ఉంటే, స్కేలింగ్ డౌన్ నుండి రక్షణ ప్రారంభించబడకపోతే, టాస్క్‌లు తీసివేయబడతాయి, దీనికి విరుద్ధంగా (స్కేల్-ఇన్‌ని నిలిపివేయండి).
  2. స్టెప్ స్కేలింగ్ - ఏకపక్ష సంఘటనకు ప్రతిచర్య. ఇక్కడ మీరు ఏదైనా ఈవెంట్‌కి (క్లౌడ్‌వాచ్ అలారం) ప్రతిస్పందనను కాన్ఫిగర్ చేయవచ్చు, అది సంభవించినప్పుడు, మీరు పేర్కొన్న టాస్క్‌ల సంఖ్యను జోడించవచ్చు లేదా తీసివేయవచ్చు లేదా ఖచ్చితమైన టాస్క్‌ల సంఖ్యను పేర్కొనవచ్చు.

సేవకు అనేక స్కేలింగ్ నియమాలు ఉండవచ్చు, ఇది ఉపయోగకరంగా ఉంటుంది, ప్రధాన విషయం ఏమిటంటే అవి ఒకదానితో ఒకటి విభేదించకుండా చూసుకోవడం.

తీర్మానం

మీరు సూచనలను అనుసరించి, అదే డాకర్ చిత్రాన్ని ఉపయోగించినట్లయితే, మీ సేవ ఇలాంటి పేజీని అందించాలి.

AWS స్పాట్ ఉదంతాలపై స్కేలబుల్ APIని రూపొందించడం

  1. మేము ఒక టెంప్లేట్‌ను సృష్టించాము, దాని ప్రకారం సేవలోని అన్ని యంత్రాలు ప్రారంభించబడతాయి. టెంప్లేట్ మారినప్పుడు యంత్రాలను ఎలా అప్‌డేట్ చేయాలో కూడా మేము నేర్చుకున్నాము.
  2. మేము స్పాట్ ఇన్‌స్టాన్స్ స్టాప్ సిగ్నల్ యొక్క ప్రాసెసింగ్‌ను కాన్ఫిగర్ చేసాము, కాబట్టి దాన్ని స్వీకరించిన ఒక నిమిషంలోపు, అన్ని రన్నింగ్ టాస్క్‌లు మెషీన్ నుండి తీసివేయబడతాయి, కాబట్టి ఏమీ కోల్పోరు లేదా అంతరాయం కలగదు.
  3. యంత్రాల అంతటా లోడ్ సమానంగా పంపిణీ చేయడానికి మేము బ్యాలెన్సర్‌ను పెంచాము.
  4. మేము స్పాట్ ఇన్‌స్టాన్స్‌లలో పనిచేసే సేవను సృష్టించాము, ఇది మెషిన్ ఖర్చులను దాదాపు 3 రెట్లు తగ్గిస్తుంది.
  5. డౌన్‌టైమ్ ఖర్చులు లేకుండా పెరిగిన పనిభారాన్ని నిర్వహించడానికి మేము రెండు దిశలలో ఆటోస్కేలింగ్‌ను కాన్ఫిగర్ చేసాము.
  6. మేము కెపాసిటీ ప్రొవైడర్‌ని ఉపయోగిస్తాము, తద్వారా అప్లికేషన్ అవస్థాపన (యంత్రాలు)ని నిర్వహిస్తుంది మరియు మరొక విధంగా కాదు.
  7. మేం గొప్పవాళ్లం.

మీరు లోడ్‌లో ఊహాజనిత స్పైక్‌లను కలిగి ఉంటే, ఉదాహరణకు మీరు పెద్ద ఇమెయిల్ ప్రచారంలో ప్రకటనలు చేస్తుంటే, మీరు దీని ద్వారా స్కేలింగ్‌ని సెటప్ చేయవచ్చు కాలపట్టిక.

మీరు మీ సిస్టమ్‌లోని వివిధ భాగాల నుండి డేటా ఆధారంగా కూడా స్కేల్ చేయవచ్చు. ఉదాహరణకు, మేము కార్యాచరణను కలిగి ఉన్నాము వ్యక్తిగత ప్రమోషనల్ ఆఫర్‌లను పంపడం మొబైల్ అప్లికేషన్ యొక్క వినియోగదారులు. కొన్నిసార్లు ప్రచారం 1M+ వ్యక్తులకు పంపబడుతుంది. అటువంటి పంపిణీ తర్వాత, APIకి అభ్యర్థనలలో ఎల్లప్పుడూ పెద్ద పెరుగుదల ఉంటుంది, ఎందుకంటే చాలా మంది వినియోగదారులు అదే సమయంలో అప్లికేషన్‌లోకి లాగిన్ అవుతారు. కాబట్టి ప్రమోషనల్ పుష్ నోటిఫికేషన్‌లను పంపడానికి క్యూలో చాలా ఎక్కువ ప్రామాణిక సూచికలు ఉన్నాయని మేము చూసినట్లయితే, మేము వెంటనే లోడ్ కోసం సిద్ధంగా ఉండటానికి అనేక అదనపు యంత్రాలు మరియు టాస్క్‌లను ప్రారంభించవచ్చు.

స్పాట్ ఇన్‌స్టాన్స్‌లు మరియు ECS లేదా స్కేలింగ్ గురించి ఏదైనా ఉపయోగించిన ఆసక్తికరమైన సందర్భాలను మీరు వ్యాఖ్యలలో నాకు చెబితే నేను సంతోషిస్తాను.

మేము ప్రధానంగా సర్వర్‌లెస్ స్టాక్‌లో (డబ్బుతో) సెకనుకు వేలకొద్దీ విశ్లేషణాత్మక ఈవెంట్‌లను ఎలా ప్రాసెస్ చేస్తాము మరియు GitLab CI మరియు Terraform క్లౌడ్‌ని ఉపయోగించి సేవల విస్తరణ ఎలా పని చేస్తుందనే దాని గురించి త్వరలో కథనాలు వస్తాయి.

మాకు సభ్యత్వాన్ని పొందండి, ఇది ఆసక్తికరంగా ఉంటుంది!

నమోదు చేసుకున్న వినియోగదారులు మాత్రమే సర్వేలో పాల్గొనగలరు. సైన్ ఇన్ చేయండిదయచేసి.

మీరు ఉత్పత్తిలో స్పాట్ ఉదాహరణలను ఉపయోగిస్తున్నారా?

  • 22,2%అవును 6

  • 66,7%No18

  • 11,1%నేను ఒక వ్యాసం నుండి వాటి గురించి తెలుసుకున్నాను మరియు వాటిని ఉపయోగించాలని ప్లాన్ చేసాను3

27 మంది వినియోగదారులు ఓటు వేశారు. 5 మంది వినియోగదారులు దూరంగా ఉన్నారు.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి