హే హబ్ర్! వ్యాసం యొక్క అనువాదాన్ని నేను మీ దృష్టికి అందిస్తున్నాను
ఈసారి, నేను సర్వీస్ మెష్ కాంపోనెంట్లు, డేటా ప్లేన్ మరియు కంట్రోల్ ప్లేన్ రెండింటి యొక్క వివరణను "కోరుకున్నాను మరియు అనువదించాను". ఈ వివరణ నాకు చాలా అర్థమయ్యేలా మరియు ఆసక్తికరంగా అనిపించింది మరియు ముఖ్యంగా "ఇది అవసరమా?" అనే అవగాహనకు దారితీసింది.
గత రెండు సంవత్సరాలుగా "సర్వీస్ మెష్" ఆలోచన బాగా ప్రాచుర్యం పొందింది (అసలు కథనం అక్టోబర్ 10, 2017) మరియు స్పేస్లో పాల్గొనే వారి సంఖ్య పెరిగినందున, నేను మొత్తంలో గందరగోళంలో గణనీయమైన పెరుగుదలను చూశాను. విభిన్న పరిష్కారాలను ఎలా సరిపోల్చాలి మరియు కాంట్రాస్ట్ చేయాలి అనే దాని గురించి సాంకేతిక సంఘం.
నేను జూలైలో వ్రాసిన ఈ క్రింది వరుస ట్వీట్ల ద్వారా పరిస్థితి ఉత్తమంగా సంగ్రహించబడింది:
సర్వీస్ మెష్ గందరగోళం #1: Linkerd ~ = Nginx ~ = Haproxy ~ = రాయబారి. ఏ ఒక్కటీ ఇస్టియోతో సమానం కాదు. ఇస్టియో పూర్తిగా భిన్నమైనది. 1 /
మొదటివి కేవలం డేటా ప్లేన్లు. స్వతహాగా వారు ఏమీ చేయరు. వాళ్ళు ఇంకేదో మూడ్ లో ఉండాలి. 2/
భాగాలను ఒకదానితో ఒకటి కట్టివేసే నియంత్రణ విమానం యొక్క ఉదాహరణ ఇస్టియో. ఇది మరొక పొర. / ముగింపు
మునుపటి ట్వీట్లు అనేక విభిన్న ప్రాజెక్ట్లను (లింకర్డ్, NGINX, HAProxy, ఎన్వోయ్ మరియు ఇస్టియో) ప్రస్తావిస్తాయి, అయితే మరింత ముఖ్యంగా డేటా ప్లేన్, సర్వీస్ మెష్ మరియు కంట్రోల్ ప్లేన్ యొక్క సాధారణ భావనలను పరిచయం చేస్తాయి. ఈ పోస్ట్లో, నేను ఒక అడుగు వెనక్కి వేసి, "డేటా ప్లేన్" మరియు "కంట్రోల్ ప్లేన్" అనే పదాల ద్వారా నా ఉద్దేశ్యం గురించి చాలా ఉన్నత స్థాయిలో మాట్లాడతాను, ఆపై ట్వీట్లలో పేర్కొన్న ప్రాజెక్ట్లకు నిబంధనలు ఎలా వర్తిస్తాయి అనే దాని గురించి మాట్లాడతాను.
నిజంగా సర్వీస్ మెష్ అంటే ఏమిటి?
మూర్తి 1: సర్వీస్ మెష్ అవలోకనం
మూర్తి 1 సేవ మెష్ యొక్క అత్యంత ప్రాథమిక స్థాయిలో భావనను వివరిస్తుంది. నాలుగు సర్వీస్ క్లస్టర్లు (AD) ఉన్నాయి. ప్రతి సేవా సందర్భం స్థానిక ప్రాక్సీ సర్వర్తో అనుబంధించబడి ఉంటుంది. ఒకే అప్లికేషన్ ఉదాహరణ నుండి అన్ని నెట్వర్క్ ట్రాఫిక్ (HTTP, REST, gRPC, Redis, మొదలైనవి) తగిన బాహ్య సేవా క్లస్టర్లకు స్థానిక ప్రాక్సీ ద్వారా పంపబడుతుంది. ఈ విధంగా, అప్లికేషన్ ఉదాహరణకి నెట్వర్క్ మొత్తం గురించి తెలియదు మరియు దాని స్థానిక ప్రాక్సీ గురించి మాత్రమే తెలుసు. ఫలితంగా, పంపిణీ చేయబడిన సిస్టమ్ నెట్వర్క్ సేవ నుండి తీసివేయబడింది.
డేటా విమానం
సేవా మెష్లో, అప్లికేషన్ కోసం స్థానికంగా ఉన్న ప్రాక్సీ సర్వర్ క్రింది విధులను నిర్వహిస్తుంది:
- సేవ ఆవిష్కరణ. మీ అప్లికేషన్ కోసం ఏ సేవలు/అప్లికేషన్లు అందుబాటులో ఉన్నాయి?
- ఆరోగ్య తనిఖీ. సర్వీస్ డిస్కవరీ ద్వారా అందించబడిన సేవా సందర్భాలు ఆరోగ్యంగా ఉన్నాయా మరియు నెట్వర్క్ ట్రాఫిక్ని అంగీకరించడానికి సిద్ధంగా ఉన్నాయా? ఇందులో యాక్టివ్ (ఉదా. ప్రతిస్పందన/ఆరోగ్య తనిఖీ) మరియు నిష్క్రియ (ఉదా. 3 వరుస 5xx ఎర్రర్లను అనారోగ్య సేవా స్థితికి సూచనగా ఉపయోగించడం) ఆరోగ్య తనిఖీలు రెండింటినీ కలిగి ఉండవచ్చు.
- రూటింగ్. REST సేవ నుండి "/foo"కి అభ్యర్థనను స్వీకరించినప్పుడు, అభ్యర్థనను ఏ సేవా క్లస్టర్కు పంపాలి?
- లోడ్ బ్యాలెన్సింగ్. రూటింగ్ సమయంలో సర్వీస్ క్లస్టర్ని ఎంచుకున్న తర్వాత, అభ్యర్థనను ఏ సేవా సందర్భానికి పంపాలి? ఏ గడువుతో? ఏ సర్క్యూట్ బ్రేకింగ్ సెట్టింగ్లతో? అభ్యర్థన విఫలమైతే, దాన్ని మళ్లీ ప్రయత్నించాలా?
- ప్రమాణీకరణ మరియు అధికారం. ఇన్కమింగ్ అభ్యర్థనల కోసం, mTLS లేదా మరేదైనా యంత్రాంగాన్ని ఉపయోగించి కాలింగ్ సేవను క్రిప్టోగ్రాఫికల్గా గుర్తించవచ్చా/అధీకృతం చేయవచ్చా? ఇది గుర్తించబడి/అధీకృతమైతే, సేవలో అభ్యర్థించిన ఆపరేషన్కు (ఎండ్పాయింట్) కాల్ చేయడానికి అనుమతి ఉందా లేదా ప్రమాణీకరించని ప్రతిస్పందనను అందించాలా?
- గమనించదగినది. ప్రతి అభ్యర్థన కోసం వివరణాత్మక గణాంకాలు, లాగ్లు/లాగ్లు మరియు పంపిణీ చేయబడిన ట్రేస్ డేటా రూపొందించబడాలి, తద్వారా పంపిణీ చేయబడిన ట్రాఫిక్ ఫ్లో మరియు డీబగ్గింగ్ సమస్యలను ఆపరేటర్లు అర్థం చేసుకోగలరు.
సర్వీస్ మెష్లోని అన్ని మునుపటి పాయింట్లకు డేటా ప్లేన్ బాధ్యత వహిస్తుంది. వాస్తవానికి, ప్రాక్సీ లోకల్ టు ది సర్వీస్ (సైడ్కార్) అనేది డేటా ప్లేన్. మరో మాటలో చెప్పాలంటే, సేవకు లేదా సేవ నుండి పంపబడిన ప్రతి నెట్వర్క్ ప్యాకెట్ను షరతులతో ప్రసారం చేయడం, ఫార్వార్డ్ చేయడం మరియు పర్యవేక్షించడం కోసం డేటా ప్లేన్ బాధ్యత వహిస్తుంది.
నియంత్రణ విమానం
డేటా ప్లేన్లో స్థానిక ప్రాక్సీ అందించే నెట్వర్క్ సంగ్రహణ మాయాజాలం(?). అయితే, B సేవకు "/foo" మార్గం గురించి ప్రాక్సీకి ఎలా తెలుసు? ప్రాక్సీ అభ్యర్థనల ద్వారా అందించబడిన సేవా ఆవిష్కరణ డేటాను ఎలా ఉపయోగించవచ్చు? లోడ్ బ్యాలెన్సింగ్, సమయం ముగిసింది, సర్క్యూట్ బ్రేకింగ్ మొదలైన వాటి కోసం పారామితులు ఎలా కాన్ఫిగర్ చేయబడ్డాయి? మీరు బ్లూ/గ్రీన్ పద్ధతి లేదా ఆకర్షణీయమైన ట్రాఫిక్ పరివర్తన పద్ధతిని ఉపయోగించి అప్లికేషన్ను ఎలా అమలు చేస్తారు? సిస్టమ్-వైడ్ ప్రమాణీకరణ మరియు అధికార సెట్టింగ్లను ఎవరు కాన్ఫిగర్ చేస్తారు?
పైన పేర్కొన్న అంశాలన్నీ సేవా మెష్ యొక్క నియంత్రణ విమానం నియంత్రణలో ఉన్నాయి. నియంత్రణ విమానం వివిక్త స్థితిలేని ప్రాక్సీల సమితిని తీసుకుంటుంది మరియు వాటిని పంపిణీ వ్యవస్థగా మారుస్తుంది.
చాలా మంది సాంకేతిక నిపుణులు డేటా ప్లేన్ మరియు కంట్రోల్ ప్లేన్ యొక్క ప్రత్యేక కాన్సెప్ట్లను గందరగోళంగా గుర్తించడానికి కారణం చాలా మందికి డేటా ప్లేన్ సుపరిచితం అయితే కంట్రోల్ ప్లేన్ విదేశీ/అపారమయినది. మేము చాలా కాలంగా భౌతిక నెట్వర్క్ రౌటర్లు మరియు స్విచ్లతో పని చేస్తున్నాము. ప్యాకెట్లు/అభ్యర్థనలు పాయింట్ A నుండి పాయింట్ Bకి వెళ్లాలని మరియు దీన్ని చేయడానికి మేము హార్డ్వేర్ మరియు సాఫ్ట్వేర్లను ఉపయోగించవచ్చని మేము అర్థం చేసుకున్నాము. కొత్త తరం సాఫ్ట్వేర్ ప్రాక్సీలు మనం చాలా కాలంగా ఉపయోగిస్తున్న టూల్స్కు ఫ్యాన్సీ వెర్షన్లు.
చిత్రం 2: మానవ నియంత్రణ విమానం
అయినప్పటికీ, మేము చాలా కాలంగా కంట్రోల్ ప్లేన్లను ఉపయోగిస్తున్నాము, అయినప్పటికీ చాలా మంది నెట్వర్క్ ఆపరేటర్లు సిస్టమ్లోని ఈ భాగాన్ని ఏదైనా సాంకేతిక భాగంతో అనుబంధించకపోవచ్చు. కారణం సులభం:
నేడు వాడుకలో ఉన్న చాలా నియంత్రణ విమానాలు... మనం.
ఆఫ్ చిత్రం 2 నేను "మానవ నియంత్రణ విమానం" అని పిలిచేదాన్ని చూపుతుంది. ఈ రకమైన విస్తరణలో, ఇది ఇప్పటికీ చాలా సాధారణం, బహుశా క్రోధస్వభావం గల హ్యూమన్ ఆపరేటర్ స్టాటిక్ కాన్ఫిగరేషన్లను సృష్టిస్తాడు - సంభావ్యంగా స్క్రిప్ట్ల ద్వారా - మరియు వాటిని కొన్ని ప్రత్యేక ప్రక్రియల ద్వారా అన్ని ప్రాక్సీలకు అమలు చేస్తాడు. ప్రాక్సీలు ఈ కాన్ఫిగరేషన్ను ఉపయోగించడం ప్రారంభిస్తాయి మరియు నవీకరించబడిన సెట్టింగ్లను ఉపయోగించి డేటా ప్లేన్ను ప్రాసెస్ చేయడం ప్రారంభిస్తాయి.
మూర్తి 3: అధునాతన సర్వీస్ మెష్ కంట్రోల్ ప్లేన్
ఆఫ్ చిత్రం 3 సేవా మెష్ యొక్క "పొడిగించిన" నియంత్రణ విమానం చూపిస్తుంది. ఇది క్రింది భాగాలను కలిగి ఉంటుంది:
- మానవ: మొత్తం వ్యవస్థకు సంబంధించి ఉన్నత స్థాయి నిర్ణయాలు తీసుకునే వ్యక్తి (ఆశాజనక తక్కువ కోపం) ఇప్పటికీ ఉన్నాడు.
- కంట్రోల్ ప్లేన్ UI: సిస్టమ్ను నియంత్రించడానికి ఒక వ్యక్తి కొన్ని రకాల వినియోగదారు ఇంటర్ఫేస్తో పరస్పర చర్య చేస్తాడు. ఇది వెబ్ పోర్టల్, కమాండ్ లైన్ అప్లికేషన్ (CLI) లేదా ఇతర ఇంటర్ఫేస్ కావచ్చు. వినియోగదారు ఇంటర్ఫేస్ని ఉపయోగించి, ఆపరేటర్కు గ్లోబల్ సిస్టమ్ కాన్ఫిగరేషన్ పారామితులకు యాక్సెస్ ఉంటుంది:
- విస్తరణ నియంత్రణ, నీలం/ఆకుపచ్చ మరియు/లేదా క్రమంగా ట్రాఫిక్ పరివర్తన
- ప్రమాణీకరణ మరియు అధికార ఎంపికలు
- రూటింగ్ టేబుల్ స్పెసిఫికేషన్లు, ఉదాహరణకు అప్లికేషన్ A "/foo" గురించి సమాచారాన్ని అభ్యర్థించినప్పుడు ఏమి జరుగుతుంది
- టైమ్అవుట్లు, మళ్లీ ప్రయత్నించడం, సర్క్యూట్ బ్రేకింగ్ సెట్టింగ్లు మొదలైనవి వంటి బ్యాలెన్సర్ సెట్టింగ్లను లోడ్ చేయండి.
- వర్క్లోడ్ షెడ్యూలర్: కుబెర్నెటెస్ లేదా నోమాడ్ వంటి కొన్ని రకాల షెడ్యూలింగ్/ఆర్కెస్ట్రేషన్ సిస్టమ్ ద్వారా ఇన్ఫ్రాస్ట్రక్చర్పై సేవలు నడుస్తాయి. షెడ్యూలర్ దాని స్థానిక ప్రాక్సీతో పాటు సేవను లోడ్ చేయడానికి బాధ్యత వహిస్తాడు.
- సేవ ఆవిష్కరణ. షెడ్యూలర్ సర్వీస్ ఇన్స్టాన్స్లను ప్రారంభించి, ఆపివేసినప్పుడు, ఇది సర్వీస్ డిస్కవరీ సిస్టమ్కు ఆరోగ్య స్థితిని నివేదిస్తుంది.
- సైడ్కార్ ప్రాక్సీ కాన్ఫిగరేషన్ APIలు : స్థానిక ప్రాక్సీలు ఆపరేటర్ జోక్యం లేకుండా చివరికి స్థిరమైన మోడల్ని ఉపయోగించి వివిధ సిస్టమ్ భాగాల నుండి స్థితిని డైనమిక్గా సంగ్రహిస్తాయి. మొత్తం సిస్టమ్, ప్రస్తుతం నడుస్తున్న అన్ని సేవా ఉదంతాలు మరియు స్థానిక ప్రాక్సీ సర్వర్లను కలిగి ఉంటుంది, చివరికి ఒక పర్యావరణ వ్యవస్థగా కలుస్తుంది. ఎన్వోయ్ యొక్క యూనివర్సల్ డేటా ప్లేన్ API ఇది ఆచరణలో ఎలా పనిచేస్తుందనేదానికి ఒక ఉదాహరణ.
ముఖ్యంగా, కంట్రోల్ ప్లేన్ యొక్క ఉద్దేశ్యం డేటా ప్లేన్ ద్వారా అంతిమంగా ఆమోదించబడే విధానాన్ని సెట్ చేయడం. మరింత అధునాతన నియంత్రణ విమానాలు ఆపరేటర్ నుండి కొన్ని సిస్టమ్లలోని మరిన్ని భాగాలను తీసివేస్తాయి మరియు అవి సరిగ్గా పని చేస్తే తక్కువ మాన్యువల్ ఆపరేషన్ అవసరం!...
డేటా ప్లేన్ మరియు కంట్రోల్ ప్లేన్. డేటా ప్లేన్ వర్సెస్ కంట్రోల్ ప్లేన్ సారాంశం
- సర్వీస్ మెష్ డేటా ప్లేన్: సిస్టమ్లోని ప్రతి ప్యాకెట్/అభ్యర్థనను ప్రభావితం చేస్తుంది. అప్లికేషన్/సర్వీస్ డిస్కవరీ, హెల్త్ చెకింగ్, రూటింగ్, లోడ్ బ్యాలెన్సింగ్, అథెంటికేషన్/ఆథరైజేషన్ మరియు అబ్జర్వేబిలిటీకి బాధ్యత వహిస్తారు.
- సర్వీస్ మెష్ నియంత్రణ విమానం: సర్వీస్ నెట్వర్క్లో నడుస్తున్న అన్ని డేటా ప్లేన్ల కోసం విధానం మరియు కాన్ఫిగరేషన్ను అందిస్తుంది. సిస్టమ్లోని ఏ ప్యాకేజీలు/అభ్యర్థనలను తాకదు. కంట్రోల్ ప్లేన్ అన్ని డేటా ప్లేన్లను డిస్ట్రిబ్యూటెడ్ సిస్టమ్గా మారుస్తుంది.
ప్రస్తుత ప్రాజెక్ట్ ల్యాండ్స్కేప్
పై వివరణను అర్థం చేసుకున్న తర్వాత, సర్వీస్ మెష్ ప్రాజెక్ట్ యొక్క ప్రస్తుత స్థితిని చూద్దాం.
- డేటా విమానాలు: లింకర్డ్, NGINX, HAProxy, Envoy, Traefik
- నియంత్రణ విమానాలు: ఇస్టియో, నెల్సన్, స్మార్ట్స్టాక్
పైన పేర్కొన్న ప్రతి పరిష్కారాల యొక్క లోతైన విశ్లేషణకు వెళ్లే బదులు, ప్రస్తుతం పర్యావరణ వ్యవస్థలో చాలా గందరగోళానికి కారణమవుతున్నాయని నేను విశ్వసిస్తున్న కొన్ని అంశాలను నేను క్లుప్తంగా ప్రస్తావిస్తాను.
2016 ప్రారంభంలో సర్వీస్ మెష్ కోసం లింకర్డ్ మొదటి డేటా ప్లేన్ ప్రాక్సీ సర్వర్లలో ఒకటి మరియు సర్వీస్ మెష్ డిజైన్ మోడల్పై అవగాహన మరియు శ్రద్ధను పెంచడంలో అద్భుతమైన పనిని చేసింది. దాదాపు 6 నెలల తర్వాత, ఎన్వోయ్ లింకర్డ్లో చేరారు (అయితే అతను 2015 చివరి నుండి లిఫ్ట్లో ఉన్నాడు). సర్వీస్ మెష్లను చర్చించేటప్పుడు లింకర్డ్ మరియు ఎన్వాయ్ అనే రెండు ప్రాజెక్ట్లు ఎక్కువగా ప్రస్తావించబడతాయి.
ఇస్టియో మే 2017లో ప్రకటించబడింది. ఇస్టియో ప్రాజెక్ట్ యొక్క లక్ష్యాలు చూపిన పొడిగించిన నియంత్రణ విమానంతో సమానంగా ఉంటాయి చిత్రం 3. Istio కోసం రాయబారి డిఫాల్ట్ ప్రాక్సీ. ఈ విధంగా, ఇస్టియో నియంత్రణ విమానం, మరియు ఎన్వోయ్ డేటా ప్లేన్. తక్కువ సమయంలో, ఇస్టియో చాలా ఉత్సాహాన్ని సృష్టించింది మరియు ఇతర డేటా ప్లేన్లు ఎన్వోయ్కి ప్రత్యామ్నాయంగా ఏకీకరణ చేయడం ప్రారంభించాయి (లింకర్డ్ మరియు NGINX రెండూ ఇస్టియోతో ఏకీకరణను ప్రదర్శించాయి). ఒకే కంట్రోల్ ప్లేన్లో వేర్వేరు డేటా ప్లేన్లను ఉపయోగించవచ్చు అంటే కంట్రోల్ ప్లేన్ మరియు డేటా ప్లేన్ తప్పనిసరిగా గట్టిగా జతచేయబడవు. ఎన్వోయ్ యొక్క సాధారణ డేటా ప్లేన్ API వంటి API సిస్టమ్ యొక్క రెండు భాగాల మధ్య వంతెనను ఏర్పరుస్తుంది.
నెల్సన్ మరియు స్మార్ట్స్టాక్ కంట్రోల్ ప్లేన్ మరియు డేటా ప్లేన్ల విభజనను మరింత వివరించడంలో సహాయపడతాయి. నెల్సన్ ఎన్వాయ్ని దాని ప్రాక్సీగా ఉపయోగిస్తుంది మరియు హషికార్ప్ స్టాక్ ఆధారంగా సర్వీస్ మెష్ కోసం నమ్మకమైన కంట్రోల్ ప్లేన్ను నిర్మిస్తుంది, అనగా. సంచార, మొదలైనవి. స్మార్ట్స్టాక్ బహుశా కొత్త సేవ మెష్లలో మొదటిది. SmartStack HAProxy లేదా NGINX చుట్టూ కంట్రోల్ ప్లేన్ను నిర్మిస్తుంది, డేటా ప్లేన్ నుండి సర్వీస్ మెష్ నుండి కంట్రోల్ ప్లేన్ను విడదీసే సామర్థ్యాన్ని ప్రదర్శిస్తుంది.
సేవా మెష్తో కూడిన మైక్రోసర్వీస్ ఆర్కిటెక్చర్ మరింత ఎక్కువ దృష్టిని ఆకర్షిస్తోంది (సరిగ్గా!), మరియు మరిన్ని ప్రాజెక్ట్లు మరియు విక్రేతలు ఈ దిశలో పని చేయడం ప్రారంభించారు. రాబోయే కొన్ని సంవత్సరాల్లో మేము డేటా ప్లేన్ మరియు కంట్రోల్ ప్లేన్ రెండింటిలోనూ చాలా ఆవిష్కరణలను చూస్తాము, అలాగే వివిధ భాగాలను మరింత కలపడం. అంతిమంగా, మైక్రోసర్వీస్ ఆర్కిటెక్చర్ ఆపరేటర్కు మరింత పారదర్శకంగా మరియు అద్భుతంగా (?) ఉండాలి.
ఆశాజనక తక్కువ మరియు తక్కువ చిరాకు.
కీ టేకావేలు
- సర్వీస్ మెష్ రెండు వేర్వేరు భాగాలను కలిగి ఉంటుంది: డేటా ప్లేన్ మరియు కంట్రోల్ ప్లేన్. రెండు భాగాలు అవసరం, మరియు అవి లేకుండా సిస్టమ్ పనిచేయదు.
- ప్రతి ఒక్కరికి కంట్రోల్ ప్లేన్ గురించి తెలుసు, మరియు ఈ సమయంలో, కంట్రోల్ ప్లేన్ మీరే కావచ్చు!
- అన్ని డేటా ప్లేన్లు ఫీచర్లు, పనితీరు, కాన్ఫిగరబిలిటీ మరియు ఎక్స్టెన్సిబిలిటీపై ఒకదానితో ఒకటి పోటీపడతాయి.
- అన్ని నియంత్రణ విమానాలు ఫీచర్లు, కాన్ఫిగరబిలిటీ, ఎక్స్టెన్సిబిలిటీ మరియు వాడుకలో సౌలభ్యంలో ఒకదానితో ఒకటి పోటీపడతాయి.
- ఒక నియంత్రణ విమానం సరైన సంగ్రహణలు మరియు APIలను కలిగి ఉంటుంది, తద్వారా బహుళ డేటా ప్లేన్లను ఉపయోగించవచ్చు.
మూలం: www.habr.com