የሊኑክስ ኮንትራክተር ጓደኛዎ ካልሆነ

የሊኑክስ ኮንትራክተር ጓደኛዎ ካልሆነ

የግንኙነት መከታተያ ("conntrack") የሊኑክስ ከርነል አውታረመረብ ቁልል ዋና ባህሪ ነው። ከርነል ሁሉንም ምክንያታዊ የኔትወርክ ግንኙነቶችን ወይም ፍሰቶችን እንዲከታተል እና እያንዳንዱን ፍሰት የሚፈጥሩትን ሁሉንም እሽጎች በመለየት በቅደም ተከተል አንድ ላይ እንዲሰሩ ያስችላቸዋል።

ኮንትራክክ በአንዳንድ መሰረታዊ ጉዳዮች ላይ ጥቅም ላይ የሚውል አስፈላጊ የከርነል ባህሪ ነው፡

  • NAT ሁሉንም ከተመሳሳይ ዥረት የሚመጡ እሽጎች በእኩል ማስተናገድ እንዲችል ከኮንትራክክ በተገኘ መረጃ ላይ የተመሰረተ ነው። ለምሳሌ፣ አንድ ፖድ የኩበርኔትስ አገልግሎትን ሲደርስ፣ የ kube-proxy load balancer ትራፊክን በክላስተር ውስጥ ወዳለ የተወሰነ ፖድ ለመምራት NAT ይጠቀማል። Conntrack ለግንኙነት የአይፒ አገልግሎት ሁሉም ፓኬጆች ወደ ተመሳሳይ ፖድ መላክ እንዳለባቸው እና በኋለኛው ፖድ የተመለሱት እሽጎች ጥያቄው ወደ መጣበት ፖድ መመለስ እንዳለበት ይመዘግባል።
  • እንደ ካሊኮ ያሉ የግዛት ፋየርዎሎች ከመገናኛ ትራክ ወደ የተፈቀደላቸው የ"ምላሽ" ትራፊክ መረጃ ላይ ይመሰረታሉ። ይህ በግልጽ የምላሽ ትራፊክን ለመፍቀድ ፖሊሲ ሳይጽፉ "የእኔ ፖድ ከማንኛውም የርቀት አይፒ አድራሻ ጋር እንዲገናኝ ፍቀድ" የሚለውን የአውታረ መረብ ፖሊሲ ​​ለመፃፍ ያስችልዎታል። (ያለዚህ፣ ደህንነቱ ያነሰውን "ፓኬጆችን ከማንኛውም አይፒ ወደ ፖድዬ ፍቀድ" የሚለውን ህግ ማከል አለቦት።)

በተጨማሪም፣ በዥረት ውስጥ የመጀመሪያው ፓኬት ብቻ ስለሆነ ኮንትራክክ በተለምዶ የስርዓት አፈጻጸምን ያሻሽላል (የሲፒዩ ፍጆታን እና የፓኬት መዘግየትን በመቀነስ)
በእሱ ላይ ምን ማድረግ እንዳለበት ለመወሰን በጠቅላላው የኔትወርክ ቁልል ውስጥ ማለፍ አለበት. ልጥፉን ይመልከቱ"የ kube-proxy ሁነታዎችን ማወዳደር" እንዴት እንደሚሰራ ምሳሌ ለማየት.

ይሁን እንጂ ኮንትራቱ የራሱ ገደቦች አሉት ...

ታዲያ ይህ ሁሉ ስህተት የት ደረሰ?

የኮንትራክተሩ ጠረጴዛ ሊዋቀር የሚችል ከፍተኛ መጠን አለው፣ እና ከሞላ፣ ግንኙነቶች ብዙውን ጊዜ ውድቅ ወይም መጣል ይጀምራሉ። በሠንጠረዡ ውስጥ የአብዛኞቹን አፕሊኬሽኖች ትራፊክ ለመቆጣጠር የሚያስችል በቂ ነፃ ቦታ አለ፣ እና ይሄ በጭራሽ ችግር አይሆንም። ሆኖም፣ የኮንትራክት ሰንጠረዡን ለመጠቀም ሊያስቡባቸው የሚችሉባቸው ጥቂት ሁኔታዎች አሉ።

  • በጣም ግልፅ የሆነው ጉዳይ አገልጋይዎ እጅግ በጣም ብዙ የሆኑ በተመሳሳይ ጊዜ ንቁ ግንኙነቶችን የሚይዝ ከሆነ ነው። ለምሳሌ የኮንትራክክ ሠንጠረዥህ ለ128ሺህ ግቤቶች ከተዋቀረ ነገር ግን>128k የተገናኙ ግንኙነቶች ካሉህ በእርግጠኝነት ችግር ውስጥ ይገባሃል!
  • ትንሽ ግልጽ ያልሆነ ጉዳይ፡ ሰርቨርዎ በሰከንድ በጣም ብዙ ቁጥር ያላቸውን ግንኙነቶች የሚያስኬድ ከሆነ። ግንኙነቶቹ ለአጭር ጊዜ የሚቆዩ ቢሆኑም፣ ለተወሰነ ጊዜ በሊኑክስ ክትትል መደረጉን ይቀጥላሉ (በነባሪ 120 ዎች)። ለምሳሌ የኮንትራክት ሠንጠረዥህ ለ 128k ግቤቶች ከተዋቀረ እና በሰከንድ 1100 ግንኙነቶችን ለማስተናገድ እየሞከርክ ከሆነ ግንኙነቶቹ በጣም አጭር ቢሆኑም (128k/120s = 1092 connections/) ከኮንትራክክ ጠረጴዛው መጠን ይበልጣል። ሰ)

በእነዚህ ምድቦች ውስጥ የሚወድቁ በርካታ ጥሩ የመተግበሪያ ዓይነቶች አሉ። በተጨማሪም፣ ብዙ መጥፎ ተዋናዮች ካሉህ፣ የአገልጋይህን የኮንትራክክ ጠረጴዛ በበርካታ የግማሽ ክፍት ግንኙነቶች መሙላት እንደ የአገልግሎት ክህደት (DOS) ጥቃት አካል ሊሆን ይችላል። በሁለቱም ሁኔታዎች ኮንትራክት በስርዓትዎ ውስጥ ገደብ ማነቆ ሊሆን ይችላል። በአንዳንድ ሁኔታዎች የኮንትራክት ሰንጠረዥ መለኪያዎችን ማስተካከል ፍላጎቶችዎን ለማሟላት በቂ ሊሆን ይችላል - መጠኑን በመጨመር ወይም የኮንትራክተሩን ጊዜ በመቀነስ (ስህተት ካደረጉ, ብዙ ችግር ውስጥ ይገባሉ). ለሌሎች ጉዳዮች የጥቃት ትራፊክን ኮንትራት ማለፍ አስፈላጊ ነው።

እውነተኛ ምሳሌ

አንድ የተለየ ምሳሌ እንስጥ፡ አብረን የሰራነው አንድ ትልቅ የሳአኤስ አቅራቢ በአስተናጋጆች ላይ በርካታ የተሸጎጡ አገልጋዮች (ቨርቹዋል ማሽኖች አይደሉም) እያንዳንዳቸው በሴኮንድ 50K+ የአጭር ጊዜ ግንኙነቶችን ያካሂዳሉ።

በኮንትራክተሩ አወቃቀሩ ላይ ሙከራ አድርገዋል፣ የሰንጠረዡን መጠን በመጨመር እና የመከታተያ ጊዜን በመቀነስ አወቃቀሩ አስተማማኝ አልነበረም፣ የ RAM ፍጆታ በከፍተኛ ሁኔታ ጨምሯል፣ ይህም ችግር ነበር (በጂቢትስ ​​ቅደም ተከተል!) እና ግንኙነቶቹ በጣም አጭር ከመሆናቸው የተነሳ ኮንትራክተሩ አላደረገም። የተለመደው የአፈጻጸም ጥቅሙን ይፍጠሩ (የፍጆታ ቅነሳ ሲፒዩ ወይም የፓኬት መዘግየት)።

እንደ አማራጭ ወደ ካሊኮ ዞሩ. የካሊኮ ኔትወርክ ፖሊሲዎች ለተወሰኑ የትራፊክ ዓይነቶች (የዶኖትትራክ ፖሊሲ አማራጭን በመጠቀም) ኮንትራክቶችን እንዳይጠቀሙ ያስችሉዎታል። ይህ የሚያስፈልጋቸውን የአፈጻጸም ደረጃ ሰጥቷቸዋል, በተጨማሪም በካሊኮ የቀረበው ተጨማሪ የደህንነት ደረጃ.

ኮንትራቱን ለማለፍ ምን ያህል ርዝማኔዎች መሄድ አለብዎት?

  • አትከታተል የአውታረ መረብ ፖሊሲዎች በአጠቃላይ ሚዛናዊ መሆን አለባቸው። የSaaS አቅራቢን በተመለከተ፡ አፕሊኬሽኖቻቸው በተከለለ ዞን ውስጥ ገብተዋል እና ስለዚህ የአውታረ መረብ ፖሊሲን በመጠቀም ወደ ሜምካሼድ እንዲደርሱ የተፈቀደላቸው ሌሎች የተወሰኑ መተግበሪያዎችን ትራፊክ መመዝገብ ይችላሉ።
  • አትከታተል ፖሊሲ የግንኙነቱን አቅጣጫ ግምት ውስጥ አያስገባም። ስለዚህ፣ የሜምኬድ ሰርቨር ከተጠለፈ፣ ትክክለኛውን የምንጭ ወደብ እስከተጠቀመ ድረስ በንድፈ ሀሳብ ከማንኛቸውም መሸጎጫ ደንበኞች ጋር ለመገናኘት መሞከር ይችላሉ። ነገር ግን፣ ለተመሸጉ ደንበኞችዎ የአውታረ መረብ ፖሊሲን በትክክል ከገለፁት፣ እነዚህ የግንኙነት ሙከራዎች አሁንም በደንበኛው በኩል ውድቅ ይሆናሉ።
  • አትከታተል ፖሊሲ በእያንዳንዱ ፓኬት ላይ ይተገበራል፣ ከመደበኛ ፖሊሲዎች በተቃራኒ፣ በፍሰት ውስጥ ለመጀመሪያው ፓኬት ብቻ ይተገበራል። ይህ በእያንዳንዱ ፓኬት የሲፒዩ ፍጆታን ሊጨምር ይችላል ምክንያቱም መመሪያው ለእያንዳንዱ ፓኬት መተግበር አለበት። ነገር ግን ለአጭር ጊዜ ግንኙነቶች, ይህ ወጪ ለኮንትራክሽን ማቀነባበሪያዎች የግብዓት ፍጆታ በመቀነስ ሚዛናዊ ነው. ለምሳሌ፣ የSaaS አቅራቢን በተመለከተ፣ ለእያንዳንዱ ግንኙነት የጥቅሎች ብዛት በጣም ትንሽ ነበር፣ ስለዚህ በእያንዳንዱ ፓኬት ላይ ፖሊሲዎችን ሲተገበር ተጨማሪው የሲፒዩ ፍጆታ ትክክለኛ ነበር።

መሞከር እንጀምር

በጣም ብዙ ግንኙነቶችን በሰከንድ ለማስኬድ እንድንችል በሜምካችድ አገልጋይ እና በርቀት ኖዶች ላይ በሚሰሩ በርካታ የተሸጎጡ የደንበኛ ፖድዎች በአንድ ፖድ ላይ ሙከራ አድርገናል። የተመሰከረ የአገልጋይ ፖድ ያለው አገልጋይ በኮንትራክተር ሠንጠረዥ ውስጥ 8 ኮር እና 512k ግቤቶች አሉት (ለአስተናጋጁ መደበኛው የተዋቀረው የሰንጠረዥ መጠን)።
በሚከተሉት መካከል ያለውን የአፈጻጸም ልዩነት ለካን: የኔትወርክ ፖሊሲ የለም; በመደበኛ የካሊኮ ፖሊሲ; እና Calico አትከታተል ፖሊሲ.

ለመጀመሪያው ሙከራ የግንኙነቶችን ቁጥር ወደ 4.000 በሰከንድ እናዘጋጃለን, ስለዚህ በሲፒዩ ፍጆታ ልዩነት ላይ ማተኮር እንችላለን. በፖሊሲ እና በመደበኛ ፖሊሲ መካከል ምንም ጉልህ ልዩነቶች አልነበሩም፣ ነገር ግን የጨመረው የሲፒዩ ፍጆታ በ20% አካባቢ አትከታተሉ፡

የሊኑክስ ኮንትራክተር ጓደኛዎ ካልሆነ

በሁለተኛው ፈተና ደንበኞቻችን ማመንጨት የሚችሉትን ያህል ግንኙነቶችን ከፍተናል እና በሜምካችድ አገልጋያችን የሚይዘውን ከፍተኛውን የግንኙነቶች ብዛት በሰከንድ ለካን። እንደተጠበቀው፣ “ፖሊሲ የለም” እና “መደበኛ ፖሊሲ” ጉዳዮች ሁለቱም በሰከንድ ከ4,000 በላይ ግንኙነቶች (512k/120s = 4,369 connections/s) የኮንትራት ገደብ ላይ ደርሰዋል። አትከታተል በሚለው መመሪያ ደንበኞቻችን ያለምንም ችግር 60,000 ግንኙነቶችን በሰከንድ ልከዋል። ብዙ ደንበኞችን በማከል ይህንን ቁጥር እንደምናጨምር እርግጠኞች ነን፣ ነገር ግን እነዚህ ቁጥሮች የዚህን ጽሁፍ ነጥብ ለማሳየት በቂ እንደሆኑ ይሰማናል!

የሊኑክስ ኮንትራክተር ጓደኛዎ ካልሆነ

መደምደሚያ

ኮንትራክክ አስፈላጊ የከርነል ባህሪ ነው. ስራውን በትክክል ይሰራል። ብዙውን ጊዜ በቁልፍ የስርዓት ክፍሎች ጥቅም ላይ ይውላል. ሆኖም፣ በአንዳንድ ልዩ ሁኔታዎች፣ በኮንትራክክ ምክንያት ያለው መጨናነቅ ከሚሰጠው መደበኛ ጥቅም ይበልጣል። በዚህ ሁኔታ የአውታረ መረብ ደህንነትን በሚያሳድጉበት ጊዜ የ Calico አውታረ መረብ ፖሊሲዎችን የኮንትራክቶችን አጠቃቀም ለማሰናከል ጥቅም ላይ ሊውል ይችላል። ለሁሉም ሌሎች ትራፊክ፣ ኮንትራክቱ ጓደኛዎ እንደሆነ ይቀጥላል!

በብሎጋችን ላይ ሌሎች ጽሑፎችን ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ