HAProxy 2.0 ኤችቲቲፒ/ቲሲፒ ሚዛናዊ ልቀት

የታተመ የጭነት ሚዛን መለቀቅ HA ተኪ 2.0ብዙ ነገሮችን ግምት ውስጥ በማስገባት የኤችቲቲፒ ትራፊክን እና የዘፈቀደ TCP ጥያቄዎችን በቡድን አገልጋዮች መካከል እንዲያሰራጩ ያስችልዎታል (ለምሳሌ የአገልጋዮችን መኖር ያረጋግጣል፣የጭነቱን ደረጃ ይገመግማል፣DDoS countermeasures አለው) እና ዋና የመረጃ ማጣሪያን ያከናውናል (ለምሳሌ የኤችቲቲፒ ራስጌዎችን መተንተን፣ የተሳሳቱ የጥያቄ ግቤቶችን ማስተላለፍ፣ የSQL እና XSS ምትክን ማገድ፣ የይዘት ማቀነባበሪያ ወኪሎችን ማገናኘት ትችላለህ)። HAProxy እንዲሁ ይችላል። ማመልከት በማይክሮ ሰርቪስ አርክቴክቸር ላይ ተመስርተው በስርዓቶች ውስጥ ያሉትን ክፍሎች መስተጋብር ለማስተባበር. የፕሮጀክት ኮድ በ C ቋንቋ እና የቀረበ በ GPLv2 ፈቃድ ያለው። ፕሮጀክቱ Airbnb፣ Alibaba፣ GitHub፣ Imgur፣ Instagram፣ Reddit፣ StackOverflow፣ Tumblr፣ Twitter እና Vimeoን ጨምሮ በብዙ ዋና ዋና ገፆች ጥቅም ላይ ይውላል።

የልቀቱ ቁልፍ ባህሪዎች፡-

  • አዲስ ኤፒአይ አስተዋወቀ የውሂብ ዕቅድበREST Web API በበረራ ላይ የHAProxy ቅንብሮችን እንዲያስተዳድሩ የሚያስችልዎ። ከሌሎች ነገሮች በተጨማሪ, ጀርባዎችን እና አገልጋዮችን በተለዋዋጭ መንገድ ማከል እና ማስወገድ, ኤሲኤሎችን መፍጠር, የጥያቄ ማዘዋወርን መቀየር, የተቆጣጣሪ ማሰሪያዎችን ወደ IP መለወጥ;
  • በባለብዙ-ኮር ሲፒዩዎች ላይ አፈጻጸምን ለማመቻቸት በHAProxy ውስጥ ጥቅም ላይ የሚውሉትን የክሮች ብዛት ለማስተካከል nbthread መመሪያ ታክሏል። በነባሪ የሰራተኛ ክሮች ብዛት የሚመረጠው አሁን ባለው አካባቢ በሚገኙ የሲፒዩ ኮርሶች ሲሆን በደመና አካባቢዎች ደግሞ አንድ ክር በነባሪነት ይዘጋጃል። ጠንካራ ገደቦችን ለማዘጋጀት፣ የስብሰባ አማራጮች MAX_THREADS እና MAX_PROCS ተጨምረዋል፣ ይህም በክሮች እና ሂደቶች ብዛት ላይ ያለውን ከፍተኛ ገደብ ይገድባል።
  • ተቆጣጣሪዎችን ከአውታረ መረብ አድራሻዎች ጋር ለማገናኘት የማስያዣ መመሪያውን ቀላል አጠቃቀም። በማዋቀር ጊዜ የሂደት መለኪያዎችን መግለጽ አስፈላጊ አይደለም - በነባሪነት ግንኙነቶች እንደ ንቁ ግንኙነቶች ብዛት በጅረቶች መካከል ይሰራጫሉ.
  • በገለልተኛ ኮንቴይነሮች ውስጥ በሚሰሩበት ጊዜ ቀለል ያለ ማዋቀር - ምዝግብ ማስታወሻው አሁን ወደ stdout እና stderr እንዲሁም ወደ ማንኛውም ነባር የፋይል ገላጭ (ለምሳሌ "log fd@1 local0") ሊመራ ይችላል;
  • እንደ ከጫፍ እስከ ጫፍ HTTP/2፣ Layer 7 Retries እና gRPC ያሉ የላቁ ባህሪያትን ሲጠቀሙ ሚዛን ለማቅረብ የኤችቲኤክስ (ቤተኛ HTTP ውክልና) ድጋፍ በነባሪነት ነቅቷል። ኤችቲኤክስ ራስጌዎችን በቦታው አይተካም ነገር ግን የለውጡን አሠራር ወደ ዝርዝሩ መጨረሻ አዲስ አርዕስት እስከማስወገድ እና ለመጨመር ይቀንሳል ይህም የራስጌዎቹን ኦርጅናል ትርጉሞች እየጠበቁ እና ማንኛውንም የተራዘመ የኤችቲቲፒ ፕሮቶኮል ስሪቶችን እንዲቆጣጠሩ ያስችልዎታል HTTP / 2 ወደ HTTP / 1.1 ሲተረጉሙ ከፍተኛ አፈፃፀም ለማግኘት እና በተቃራኒው;
  • ለመጨረሻ-እስከ-መጨረሻ HTTP/2 ሁነታ ይፋዊ ድጋፍ ታክሏል (ሁሉንም ደረጃዎች በኤችቲቲፒ/2 ውስጥ ማስተናገድ፣ ወደ ኋላ የሚደረጉ ጥሪዎችን ጨምሮ፣ እና የተኪው ከደንበኛው ጋር ያለውን ግንኙነት ብቻ ሳይሆን)።
  • ለgRPC ባለሁለት አቅጣጫ ፕሮክሲንግ ሙሉ ድጋፍ የgRPC ዥረቶችን የመተንተን ችሎታ፣ የተናጠል መልዕክቶችን ማውጣት፣ የጂአርፒሲ ትራፊክን በማንፀባረቅ እና ኤሲኤሎችን በመጠቀም መልእክቶችን በማጣራት ተተግብሯል። gRPC የማይክሮ ሰርቪስ ስራዎችን በተለያዩ የፕሮግራም አወጣጥ ቋንቋዎች እንዲያደራጁ ይፈቅድልዎታል ይህም ሁለንተናዊ ኤፒአይን በመጠቀም እርስ በእርስ ይገናኛሉ። በጂአርፒሲ ውስጥ ያለው የአውታረ መረብ ግንኙነት በኤችቲቲፒ/2 ፕሮቶኮል አናት ላይ የተተገበረ ሲሆን በፕሮቶኮል ማቋቋሚያ የውሂብ ተከታታይነት አጠቃቀም ላይ የተመሰረተ ነው።
  • ለ "Layer 7 Retries" ሁነታ ተጨማሪ ድጋፍ, ይህም የሶፍትዌር ብልሽቶች ሲያጋጥምዎ የኔትወርክ ግንኙነትን ከመፍጠር ችግር ጋር ያልተያያዙ ተደጋጋሚ የኤችቲቲፒ ጥያቄዎችን ለመላክ ያስችልዎታል (ለምሳሌ ለPOST ምንም ምላሽ ከሌለ ወይም ባዶ ምላሽ ከሌለ) ጥያቄ)። ሁነታውን ለማሰናከል የ"disable-l7-retry" ባንዲራ ወደ "http-request" አማራጭ ተጨምሯል እና "ዳግም ሞክር" አማራጭ በነባሪዎች ፣ ማዳመጥ እና የኋላ ክፍሎች ውስጥ በጥሩ ሁኔታ ማስተካከል ታይቷል። የሚከተሉት የድጋሚ ሙከራ ባንዲራዎች ይገኛሉ፡- ሁሉም-እንደገና ሊሞከሩ የሚችሉ ስህተቶች፣ የለም፣ ኮን-ውድቀት፣ ባዶ ምላሽ፣ ቆሻሻ-ምላሽ፣ ምላሽ-ጊዜ ማብቂያ፣ 0rtt ውድቅ የተደረገ፣ እና ለተመለሱ የሁኔታ ኮዶች (404፣ ወዘተ.) አስገዳጅ;
  • የውጪ ተፈጻሚ ፋይሎችን ጥሪ ለHAProxy ከተቆጣጣሪዎች ጋር እንዲያዋቅሩ የሚያስችል አዲስ የሂደት አስተዳዳሪ ተተግብሯል።
    ለምሳሌ, በእንደዚህ አይነት የውጭ ተቆጣጣሪ መልክ, የውሂብ እቅድ ኤፒአይ (/ usr/sbin / dataplaneapi) እንዲሁም የተለያዩ የኦፕሎድ ዥረት ማቀነባበሪያ ሞተሮች;

  • SPOE (Stream Processing Offload Engine) እና SPOP (Stream Processing Offload Protocol) ቅጥያዎችን ለማዳበር ለ NET Core፣ Go፣ Lua እና Python ማሰሪያዎች ተጨምረዋል። ቀደም ሲል የ C ማራዘሚያ ልማት ብቻ ይደገፋል;
  • ለተለየ አገልጋይ ጥያቄዎችን ለማንፀባረቅ ውጫዊ ስፖ-መስታወት ተቆጣጣሪ (/ usr/sbin/spoa-mirror) ተጨምሯል።
  • የቀረበው በ HAProxy Kubernetes ማስገቢያ መቆጣጠሪያ ከኩበርኔትስ መድረክ ጋር ውህደትን ለማቅረብ;
  • ስታቲስቲክስን ወደ የክትትል ስርዓቱ ለመላክ አብሮ የተሰራ ድጋፍ ታክሏል። ፕሮሚትየስ;
  • ከሌሎች አንጓዎች ጋር መረጃን ከHAProxy ጋር ለመለዋወጥ የሚያገለግለው የአቻ ፕሮቶኮል የተራዘመ። ለልብ ምት እና ለተመሰጠረ የውሂብ ማስተላለፍ ተጨማሪ ድጋፍን ጨምሮ;
  • የ "ናሙና" መለኪያው በ "ሎግ" መመሪያ ላይ ተጨምሯል, ይህም የጥያቄዎቹ አንድ ክፍል ብቻ ወደ ምዝግብ ማስታወሻው ውስጥ እንዲጣል, ለምሳሌ, 1 ከ 10, የትንታኔ ናሙና ለመቅረጽ;
  • ታክሏል አውቶማቲክ የመገለጫ ሁነታ (የፕሮፋይል.ተግባር መመሪያ, እሴቶቹን በራስ-ሰር, ማብራት እና ማጥፋት ይችላል). አማካይ የመዘግየቱ ዋጋ ከ1000 ሚሴ በላይ ከሆነ ራስ-ሰር መገለጫ ነቅቷል። የመገለጫ መረጃን ለማየት "የመገለጫ ማሳያ" ትዕዛዝ ወደ Runtime API ታክሏል ወይም ስታቲስቲክስን ወደ ምዝግብ ማስታወሻው እንደገና ማስጀመር ይቻላል;
  • የ SOCKS4 ፕሮቶኮልን በመጠቀም የኋለኛ ክፍል አገልጋዮችን ለማግኘት ተጨማሪ ድጋፍ;
  • የተጨመረው ተርሚናል (ከጫፍ እስከ ጫፍ፣ በጥያቄው ሂደት ዱካ ላይ፣ የጀርባውን ሽፋን የሚሸፍን) ለTCP ፈጣን ክፍት (TFO - TCP Fast Open፣ RFC 7413) ድጋፍ፣ ይህም የግንኙነት ማቀናበሪያ ደረጃዎችን በማጣመር ለመቀነስ ያስችላል። መጀመሪያ ወደ አንድ ጥያቄ እና የጥንታዊው ባለ 3-ደረጃ ግንኙነት ድርድር ሂደት ሁለተኛ ደረጃዎች እና በግንኙነት ማዋቀር የመጀመሪያ ደረጃ ላይ ውሂብ እንዲላክ ያስችላል።
  • አዲስ ድርጊቶች ታክለዋል፡
    • መደበኛ አገላለጽ በመጠቀም ዩአርኤሉን ለመተካት "http-request replace-uri";
    • "tcp-request content do-resolve" እና "http-request do-resolve" ለአስተናጋጅ ስም ጥራት;
    • "tcp-request content set-dst" እና "tcp-request content set-dst-port" ኢላማውን የአይፒ አድራሻ እና ወደብ ለመተካት።
  • አዲስ የመቀየሪያ ሞጁሎች ታክለዋል፡
    • aes_gcm_dev AES128-GCM፣ AES192-GCM እና AES256-GCM ስልተ ቀመሮችን በመጠቀም ዥረቶችን ለመፍታት;
    • መስኮችን ከፕሮቶኮል ማቋረጫዎች መልዕክቶች ለማውጣት ፕሮቶቡፍ;
    • ungrpc መስኮችን ከጂአርፒሲ መልዕክቶች ለማውጣት።

    ምንጭ: opennet.ru

አስተያየት ያክሉ