የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል

በዓላቱ አልቋል እና በኢስቲዮ ሰርቪስ ሜሽ ተከታታይ ሁለተኛ ልኡክ ጽሁፍ ላይ ተመልሰናል።

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል

የዛሬው ርዕስ ሰርክዩት ሰባሪ ነው ወደ ሩሲያ ኤሌክትሪካል ኢንጂነሪንግ የተተረጎመው "የወረዳ ሰባሪ" ማለት ነው፣ በጋራ ቋንቋ - "የወረዳ ሰባሪ" ማለት ነው። በኢስቲዮ ውስጥ ብቻ ይህ ማሽን አጭር ወይም ከመጠን በላይ የተጫነውን ዑደት አያቋርጥም ፣ ግን የተበላሹ መያዣዎች።

ይህ በትክክል እንዴት መሥራት እንዳለበት

ማይክሮ ሰርቪስ በኩበርኔትስ ሲተዳደር ለምሳሌ በ OpenShift መድረክ ውስጥ እንደ ጭነቱ በራስ ሰር ወደ ላይ እና ወደ ታች ይጨምራሉ። ማይክሮ ሰርቪስ የሚሠሩት በፖድ ውስጥ ስለሆነ፣ በአንድ የፍጻሜ ነጥብ ላይ በኮንቴይነር የተያዘ የማይክሮ አገልግሎት ብዙ አጋጣሚዎች ሊኖሩ ይችላሉ፣ እና ኩበርኔትስ ጥያቄዎችን ይመራል እና በመካከላቸው ያለውን ሚዛን ይጭናል። እና - በሐሳብ ደረጃ - ይህ ሁሉ በትክክል መሥራት አለበት።

ጥቃቅን አገልግሎቶች ትንሽ እና ጊዜ ያለፈባቸው መሆናቸውን እናስታውሳለን. ኤፌሜራሊቲ, እዚህ ላይ የመታየት እና የመጥፋት ቀላልነት ማለት ነው, ብዙውን ጊዜ ዝቅተኛ ግምት ነው. በፖድ ውስጥ የሌላ ማይክሮ አገልግሎት ምሳሌ መወለድ እና መሞት በጣም የሚጠበቁ ነገሮች ናቸው ፣ OpenShift እና Kubernetes ይህንን በጥሩ ሁኔታ ይይዛሉ ፣ እና ሁሉም ነገር በጥሩ ሁኔታ ይሰራል - ግን በንድፈ ሀሳብ እንደገና።

በትክክል እንዴት እንደሚሰራ

አሁን አንድ የተወሰነ የማይክሮ አገልግሎት፣ ማለትም መያዣ፣ ጥቅም ላይ ሊውል የማይችል መሆኑን አስቡት፡ ወይ ምላሽ አይሰጥም (ስህተት 503)፣ ወይም ደግሞ፣ በጣም ደስ የማይል፣ ምላሽ ይሰጣል፣ ግን በጣም በዝግታ። በሌላ አገላለጽ፣ ብልጭልጭ ይሆናል ወይም ለጥያቄዎች ምላሽ አይሰጥም፣ ነገር ግን ከገንዳው ውስጥ ወዲያውኑ አይወገድም። በዚህ ጉዳይ ላይ ምን መደረግ አለበት? እንደገና ለመሞከር? ከማዞሪያው እቅድ ማውጣት አለብኝ? እና "በጣም ቀርፋፋ" ማለት ምን ማለት ነው - በቁጥር ውስጥ ስንት ነው, እና ማን ይወስናል? ምናልባት እረፍት ስጡት እና ቆይተው እንደገና ይሞክሩ? ከሆነ ምን ያህል በኋላ?

በኢስቲዮ ውስጥ ገንዳ ማስወጣት ምንድነው?

እና እዚህ ኢስቲዮ የፑል ማስወጣት ሂደትን በመተግበር የተበላሹ ኮንቴይነሮችን ከማዘዋወር እና ሎድ ሚዛኑን የጠበቀ የሃብት ገንዳውን ለጊዜው በሚያስወግደው የሰርክተር Breaker መከላከያ ማሽኖቹ ለማዳን ይመጣል።

ኢስቲዮ የውጭ ማወቂያ ስትራቴጂን በመጠቀም ከመስመር ውጭ የሆኑትን የፖድ ኩርባዎችን በማፈላለግ ከመስመር ውጭ የሆኑ ኩርባዎችን ከመርጃ ገንዳው ለተወሰነ ጊዜ ያጠፋቸዋል፣ ይህም የእንቅልፍ መስኮት ይባላል።

ይህ በOpenShift መድረክ ላይ በኩበርኔትስ ውስጥ እንዴት እንደሚሰራ ለማሳየት በማጠራቀሚያው ውስጥ ካለው ምሳሌ በመደበኛነት የሚሰሩ የማይክሮ ሰርቪስ አገልግሎቶችን በቅጽበታዊ ገጽ እይታ እንጀምር። የቀይ ኮፍያ ገንቢ ማሳያዎች. እዚህ ሁለት ፖዶች አሉን v1 እና v2 እያንዳንዳቸው አንድ ኮንቴይነር እየሮጡ ነው። የኢስቲዮ ማዘዋወር ህጎች ጥቅም ላይ በማይውሉበት ጊዜ ኩበርኔትስ ወደ ሚዛናዊ ክብ-ሮቢን ማዘዋወር ነባሪ ያደርጋል፡

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል

ለአደጋ በመዘጋጀት ላይ

Pool Ejectionን ከማድረግዎ በፊት፣ የIstio ማዞሪያ ህግን መፍጠር ያስፈልግዎታል። ጥያቄዎችን በ50/50 ጥምርታ በፖድ መካከል ማሰራጨት እንፈልጋለን እንበል። በተጨማሪም የv2 ኮንቴይነሮችን ብዛት ከአንድ ወደ ሁለት እንጨምራለን፡

oc scale deployment recommendation-v2 --replicas=2 -n tutorial

አሁን ትራፊክ በ 50/50 ሬሾ ውስጥ በፖዳዎች መካከል እንዲሰራጭ የማዞሪያ ህግን አዘጋጅተናል.

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል
የዚህ ደንብ ውጤት ምን እንደሚመስል እነሆ:

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል
ይህ ማያ ገጽ 50/50 ሳይሆን 14: 9 ባለመሆኑ ስህተት ሊያገኙ ይችላሉ, ነገር ግን ከጊዜ በኋላ ሁኔታው ​​ይሻሻላል.

ችግር መፍጠር

አሁን አንድ ጤናማ v2 ኮንቴይነር፣ አንድ ጤናማ v1 ኮንቴይነር እና አንድ የተሳሳተ v2 ኮንቴይነር እንዲኖረን ከሁለቱ የv2 ኮንቴይነሮች አንዱን እናቦዝነው፡

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል

ጉድለቱን በማስተካከል ላይ

ስለዚህ፣ የተሳሳተ መያዣ አለን፣ እና ፑል ማስወጣት ጊዜው አሁን ነው። በጣም ቀላል የሆነ ውቅረት በመጠቀም፣ ወደ ጤናማ ሁኔታ ይመለሳል ብለን ተስፋ በማድረግ (እንደገና ይጀምር ወይም አፈፃፀሙን ወደነበረበት ለመመለስ) ይህንን ያልተሳካ መያዣ ከማንኛውም የማዞሪያ መርሃ ግብሮች ለ15 ሰከንድ እናስወግደዋለን። ይህ ውቅረት ምን እንደሚመስል እና የሥራው ውጤት ይህ ነው-

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል
የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል
እንደሚመለከቱት፣ ያልተሳካው v2 ኮንቴይነር ከገንዳው ውስጥ ስለተወገደ ለጥያቄዎች ማዘዋወር ጥቅም ላይ አይውልም። ነገር ግን ከ 15 ሰከንድ በኋላ ወዲያውኑ ወደ ገንዳው ይመለሳል. በእውነቱ፣ ፑል ማስወጣት እንዴት እንደሚሰራ አሳይተናል።

አርክቴክቸር መገንባት እንጀምር

የመዋኛ ገንዳ ማስወጣት ከኢስቲዮ የክትትል ችሎታዎች ጋር ተዳምሮ የተበላሹ ኮንቴይነሮችን በራስ ሰር የመቀየር ጊዜን እና ውድቀቶችን ለማስወገድ ካልሆነ ለማስወገድ ማዕቀፍ መገንባት እንዲጀምሩ ያስችልዎታል።

ናሳ አንድ ከፍተኛ መሪ ቃል አለው - ውድቀት አማራጭ አይደለም፣ የዚህም ደራሲ የበረራ ዳይሬክተር እንደሆነ ይቆጠራል። ጂን Kranz. ወደ ሩሲያኛ "ውድቀት አማራጭ አይደለም" ተብሎ ሊተረጎም ይችላል, እና እዚህ ያለው ትርጉሙ በቂ ፈቃድ ካሎት ሁሉም ነገር እንዲሰራ ማድረግ ነው. ሆኖም ግን, በእውነተኛ ህይወት, ውድቀቶች ብቻ አይደሉም, በሁሉም ቦታ እና በሁሉም ነገር የማይቀር ናቸው. እና በማይክሮ ሰርቪስ ጉዳይ ላይ እንዴት እነሱን መቋቋም እንደሚቻል? በእኛ አስተያየት በፈቃደኝነት ላይ ሳይሆን በመያዣዎች ችሎታዎች ላይ መታመን የተሻለ ነው. ኩባንያቶች, Red Hat OpenShiftIstio.

ኢስቲዮ, ከላይ እንደጻፍነው, በአካላዊው ዓለም ውስጥ እራሱን በደንብ ያረጋገጠውን የሴኪውሪክ መግቻዎችን ጽንሰ-ሀሳብ ተግባራዊ ያደርጋል. እና ልክ የኤሌትሪክ ሰርኩዌር መግቻ የወረዳውን ችግር ክፍል እንደሚያጠፋው የኢስቲዮ ሶፍትዌር ሰርክ Breaker በጥያቄ ዥረት እና በችግር መያዣ መካከል ያለውን ግንኙነት የሚከፍተው በመጨረሻው ነጥብ ላይ የሆነ ችግር ሲፈጠር ለምሳሌ አገልጋዩ ሲበላሽ ወይም ሲጀምር ነው። ፍጥነት ቀንሽ.

በተጨማሪም በሁለተኛው ጉዳይ ላይ የአንድ ኮንቴይነር ብሬክስ በአገልግሎቶቹ ላይ መዘግየቶችን ብቻ ሳይሆን በአጠቃላይ የስርዓቱን አፈፃፀም ስለሚቀንስ ተደጋጋሚ ችግሮች ስለሚፈጠሩ ተጨማሪ ችግሮች አሉ. ቀድሞውንም ቀርፋፋ አገልግሎት እንዲሰጥ ይጠይቃል፣ ይህም ሁኔታውን ከማባባስ ውጪ .

የወረዳ ተላላፊ በንድፈ

ወረዳ Breaker የጥያቄዎችን ፍሰት ወደ መጨረሻ ነጥብ የሚቆጣጠር ፕሮክሲ ነው። ይህ ነጥብ መስራት ሲያቆም ወይም በተገለጹት መቼቶች ላይ በመመስረት ፍጥነቱን መቀነስ ሲጀምር ተኪው ከእቃ መያዣው ጋር ያለውን ግንኙነት ይቋረጣል። በጭነት ሚዛን ምክንያት ትራፊክ ወደ ሌሎች ኮንቴይነሮች ይዛወራሉ። ግንኙነቱ ለተወሰነ የእንቅልፍ መስኮት ክፍት ሆኖ ይቆያል ፣ ለሁለት ደቂቃዎች ይበሉ እና ከዚያ በግማሽ ክፍት እንደሆነ ይቆጠራል። የሚቀጥለውን ጥያቄ ለመላክ የሚደረግ ሙከራ የግንኙነቱን ተጨማሪ ሁኔታ ይወስናል። በአገልግሎቱ ሁሉም ነገር ደህና ከሆነ ግንኙነቱ ወደ የስራ ሁኔታ ይመለሳል እና እንደገና ይዘጋል. በአገልግሎቱ ውስጥ አሁንም የሆነ ችግር ካለ ግንኙነቱ ተቋርጧል እና የእንቅልፍ መስኮቱ እንደገና እንዲነቃ ይደረጋል. ቀለል ያለ የወረዳ ሰባሪ ግዛት ዲያግራም ምን እንደሚመስል እነሆ፡-

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል
እዚህ ላይ ይህ ሁሉ የሚሆነው በስርዓት አርክቴክቸር ደረጃ ላይ መሆኑን ልብ ማለት ያስፈልጋል። ስለዚህ፣ አንዳንድ ጊዜ ማመልከቻዎችዎን ከሴክተር ሰባሪ ጋር እንዲሰሩ ማስተማር ይኖርብዎታል፣ ለምሳሌ በምላሹ ነባሪ እሴት በማቅረብ ወይም ከተቻለ የአገልግሎቱን መኖር ችላ በማለት። የጅምላ ራስ ንድፍ ለዚህ ጥቅም ላይ ይውላል, ነገር ግን ከዚህ ጽሑፍ ወሰን በላይ ነው.

የወረዳ ሰባሪ በተግባር

ለምሳሌ፣ የእኛን ምክር የማይክሮ አገልግሎት ሁለት ስሪቶች በOpenShift ላይ እናስኬዳለን። ስሪት 1 በጥሩ ሁኔታ ይሰራል፣ ነገር ግን በ v2 በአገልጋዩ ላይ መቀዛቀዝዎችን ለማስመሰል በመዘግየት እንገነባለን። ውጤቱን ለማየት, መሳሪያውን ይጠቀሙ ከበባ:

siege -r 2 -c 20 -v customer-tutorial.$(minishift ip).nip.io

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል
ሁሉም ነገር የሚሰራ ይመስላል, ግን በምን ወጪ? በቅድመ-እይታ, 100% ተገኝነት አለን, ነገር ግን ጠለቅ ብለው ይመልከቱ - ከፍተኛው የግብይት ጊዜ እስከ 12 ሰከንድ ድረስ ነው. ይህ በግልጽ ማነቆ ነው እና መስፋፋት አለበት።

ይህንን ለማድረግ, ወደ ኮንቴይነሮች ዘገምተኛ ጥሪዎችን ለማስወገድ Istio እንጠቀማለን. ሰርክ ሰሪውን በመጠቀም ተጓዳኝ ውቅር ይህን ይመስላል፡-

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል
የመጨረሻው መስመር ከ httpMaxRequestsPerConnection መለኪያ ምልክቶች ጋር ግንኙነቱ ሌላ - ሰከንድ - ግንኙነት ለመፍጠር ሲሞከር ግንኙነቱ መቋረጥ አለበት. የእኛ መያዣ ቀርፋፋ አገልግሎት ስለሚመስል እንደዚህ ያሉ ሁኔታዎች በየጊዜው ይነሳሉ እና ከዚያ ኢስቲዮ 503 ስህተት ይመልሳል ፣ ግን ከበባ የሚያሳየው ይህ ነው-

የኢስቲዮ ወረዳ ሰባሪ፡ የተሳሳቱ መያዣዎችን ማሰናከል

እሺ፣ ሰርክ ሰባሪ አለን፣ ቀጥሎ ምን አለ?

ስለዚህ፣ የአገልግሎቶቹን የምንጭ ኮድ ሳይነኩ አውቶማቲክ መዝጋትን ተግባራዊ አድርገናል። የወረዳ Breaker እና ከላይ የተገለፀውን የፑል ማስወጣት ሂደትን በመጠቀም ወደ መደበኛው እስኪመለሱ ድረስ የፍሬን ኮንቴይነሮችን ከመርጃ ገንዳው ውስጥ እናስወግዳለን እና ሁኔታቸውን በተወሰነ ድግግሞሽ ማረጋገጥ እንችላለን - በእኛ ምሳሌ ይህ ሁለት ደቂቃ ነው (የእንቅልፍ መስኮት መለኪያ)።

አፕሊኬሽኑ ለ 503 ስህተት ምላሽ የመስጠት ችሎታ አሁንም በምንጭ ኮድ ደረጃ ላይ እንደተቀመጠ ልብ ይበሉ። እንደ ሁኔታው ​​የወረዳ Breaker ለመጠቀም ብዙ ስልቶች አሉ።

በሚቀጥለው ፖስት፡- አስቀድሞ አብሮገነብ ወይም በቀላሉ ወደ ኢስቲዮ ስለተጨመረው ፍለጋ እና ክትትል እና እንዲሁም ሆን ተብሎ ስህተቶችን ወደ ስርዓቱ እንዴት ማስገባት እንደሚቻል እንነጋገራለን።

ምንጭ: hab.com

አስተያየት ያክሉ