በኩበርኔትስ ላይ ካፍካ ጥሩ ነው?

ሰላም ሀብር!

በአንድ ወቅት ርዕሱን ወደ ሩሲያ ገበያ ለማስተዋወቅ የመጀመሪያው ነበርን ካፋካ እና ቀጥል ትራክ ለእድገቱ. በተለይም በካፍካ እና መካከል ያለውን መስተጋብር ርዕስ አግኝተናል ኩባንያቶች. የሚታይ (እና በጥንቃቄ) ጽሑፍ ይህ ርዕስ ባለፈው ዓመት በጥቅምት ወር በግዌን ሻፒራ ደራሲነት በ Confluent ብሎግ ላይ ታትሟል። ዛሬ በአፕሪል የወጣውን በጆሃን ጂገር በቅርቡ ወደ ቀረበው መጣጥፍ ትኩረት ልንሰጥዎ እንፈልጋለን ፣ ምንም እንኳን በርዕሱ ላይ ምንም እንኳን የጥያቄ ምልክት ባይኖረውም ፣ ርዕሱን የበለጠ ጉልህ በሆነ መንገድ እየመረመረ ፣ ጽሑፉን በሚስብ አገናኞች በማያያዝ። እባካችሁ ከቻልክ የነጻነት ትርጉም "የስርቆት ዝንጀሮ" ይቅር በለን!

በኩበርኔትስ ላይ ካፍካ ጥሩ ነው?

መግቢያ

ኩበርኔትስ አገር አልባ የሥራ ጫናዎችን ለመቆጣጠር የተነደፈ ነው። በተለምዶ እንዲህ ያሉ የሥራ ጫናዎች በማይክሮ ሰርቪስ አርክቴክቸር መልክ ቀርበዋል, እነሱ ቀላል ናቸው, በአግድም በጥሩ ሁኔታ ይመሳሰላሉ, የ 12-ደረጃ አፕሊኬሽኖች መርሆዎችን ይከተላሉ, እና ከወረዳ ተላላፊዎች እና ትርምስ ጦጣዎች ጋር ሊሰሩ ይችላሉ.

በሌላ በኩል ካፍካ በመሠረቱ እንደ የተከፋፈለ የውሂብ ጎታ ይሠራል. ስለዚህ, በሚሰሩበት ጊዜ, ከስቴት ጋር መገናኘት አለብዎት, እና ከማይክሮ አገልግሎት የበለጠ ከባድ ነው. ኩበርኔትስ ሸክሞችን ይደግፋል፣ ነገር ግን ኬልሲ ሃይቶወር በሁለት ትዊቶች ላይ እንዳመለከተው በጥንቃቄ መያዝ አለባቸው፡-

አንዳንድ ሰዎች ኩበርኔትስን ወደ መደበኛ የሥራ ጫና ካሸከሉ፣ ከ RDS ጋር የሚወዳደር ሙሉ በሙሉ የሚተዳደር የውሂብ ጎታ እንደሚሆን ይሰማቸዋል። ይህ ስህተት ነው። ምናልባት፣ በትጋት ከሰሩ፣ ተጨማሪ ክፍሎችን ካከሉ ​​እና የ SRE መሐንዲሶችን ቡድን ከሳቡ፣ RDS በ Kubernetes ላይ መገንባት ይችላሉ።

በ Kubernetes ላይ ተጨባጭ የሥራ ጫናዎችን ሲያካሂዱ ሁሉም ሰው ከፍተኛ ጥንቃቄ እንዲያደርግ ሁል ጊዜ እመክራለሁ። "በኩበርኔትስ ላይ ተጨባጭ የስራ ጫናዎችን ማካሄድ እችላለሁ" ብለው የሚጠይቁ አብዛኛዎቹ ሰዎች Kubernetes እና ብዙ ጊዜ በሚጠይቁት የስራ ጫና በቂ ልምድ የላቸውም።

እንግዲያው ካፍካን በኩበርኔትስ ላይ መሮጥ አለብህ? አጸፋዊ ጥያቄ፡ ካፍካ ያለ ኩበርኔትስ በተሻለ ሁኔታ ይሰራል? ለዚህ ነው በዚህ ጽሑፍ ውስጥ ካፍካ እና ኩበርኔትስ እንዴት እንደሚደጋገፉ እና እነሱን በማጣመር ምን አይነት ወጥመዶች ሊኖሩ እንደሚችሉ ማጉላት የፈለኩት።

የማጠናቀቂያ ጊዜ

ስለ መሰረታዊ ነገር እንነጋገር - የሩጫ ጊዜ አካባቢ ራሱ

ሂደት

የካፍካ ደላሎች ሲፒዩ ተስማሚ ናቸው። TLS የተወሰነ ትርፍ ሊያስተዋውቅ ይችላል። ነገር ግን የካፍ ደንበኞች ምስጠራን ከተጠቀሙ የበለጠ ሲፒዩ የተጠናከረ ሊሆን ይችላል፣ነገር ግን ይህ ደላሎችን አይነካም።

አእምሮ

የካፍካ ደላሎች ትዝታ ይበላሉ። የJVM ክምር መጠን ብዙውን ጊዜ ከ4-5 ጂቢ የተገደበ ነው፣ነገር ግን ካፍካ የገጽ መሸጎጫውን በጣም ስለሚጠቀም ብዙ የስርዓት ማህደረ ትውስታ ያስፈልግዎታል። በ Kubernetes ውስጥ የመያዣ ሀብትን ያዘጋጁ እና በዚህ መሠረት የጥያቄ ገደቦችን ያዘጋጁ።

የውሂብ ማከማቻ

በመያዣዎች ውስጥ ያለው የውሂብ ማከማቻ ጊዜ ያለፈበት ነው - እንደገና ሲጀመር ውሂብ ይጠፋል። ለካፍካ መረጃ የድምጽ መጠን መጠቀም ይችላሉ emptyDir, እና ውጤቱ ተመሳሳይ ይሆናል: የእርስዎ ደላላ ውሂብ ከተጠናቀቀ በኋላ ይጠፋል. መልእክቶችዎ አሁንም እንደ ቅጂዎች በሌሎች ደላላዎች ላይ ሊቀመጡ ይችላሉ። ስለዚህ, እንደገና ከተጀመረ በኋላ, ያልተሳካው ደላላ በመጀመሪያ ሁሉንም መረጃዎች ማባዛት አለበት, እና ይህ ሂደት ብዙ ጊዜ ሊወስድ ይችላል.

ለዚህም ነው የረጅም ጊዜ የውሂብ ማከማቻን መጠቀም ያለብዎት። ከኤክስኤፍኤስ ፋይል ስርዓት ጋር አካባቢያዊ ያልሆነ የረጅም ጊዜ ማከማቻ ይሁን ወይም፣ ይበልጥ በትክክል፣ ext4። NFS አይጠቀሙ. አስጠንቅቄሃለሁ። NFS ስሪቶች v3 ወይም v4 አይሰሩም። በአጭሩ የካፍካ ደላላ በ NFS ውስጥ ባለው "የደደብ ስም መቀየር" ችግር ምክንያት የውሂብ ማውጫውን መሰረዝ ካልቻለ ይሰናከላል። እስካሁን ካላሳመንኩህ በጣም በጥንቃቄ ይህን ጽሑፍ አንብብ. Kubernetes እንደገና ከተጀመረ ወይም ከተዛወረ በኋላ አዲስ መስቀለኛ መንገድን በተሻለ ሁኔታ መምረጥ እንዲችል የውሂብ ማከማቻው አካባቢያዊ ያልሆነ መሆን አለበት።

አውታረ መረብ

እንደአብዛኞቹ የተከፋፈሉ ስርዓቶች፣ የካፍ አፈጻጸም በጣም የተመካው የአውታረ መረብ መዘግየትን በትንሹ እና የመተላለፊያ ይዘትን እስከ ከፍተኛ በመጠበቅ ላይ ነው። ሁሉንም ደላላዎች በተመሳሳይ መስቀለኛ መንገድ ለማስተናገድ አይሞክሩ ፣ ይህ ተገኝነትን ስለሚቀንስ። የኩበርኔትስ መስቀለኛ መንገድ ካልተሳካ፣ መላው የካፍካ ስብስብ ይወድቃል። እንዲሁም የካፍካ ክላስተር በሁሉም የመረጃ ማዕከሎች ላይ አይበተኑት። ለ Kubernetes ክላስተር ተመሳሳይ ነው. በዚህ ጉዳይ ላይ ጥሩ ስምምነት የተለያዩ የመገኛ ቀጠናዎችን መምረጥ ነው.

ውቅር

መደበኛ ማኒፌስቶዎች

የኩበርኔትስ ድር ጣቢያ አለው። በጣም ጥሩ መመሪያ መግለጫዎችን በመጠቀም ZooKeeperን እንዴት ማዋቀር እንደሚቻል። ZooKeeper የካፍካ አካል ስለሆነ፣ የትኛዎቹ የኩበርኔትስ ፅንሰ ሀሳቦች እዚህ እንደሚተገበሩ ለማወቅ ይህ ጥሩ ቦታ ነው። ይህንን ከተረዱ በኋላ, ተመሳሳይ ጽንሰ-ሐሳቦችን በካፍካ ክላስተር መጠቀም ይችላሉ.

  • በፖድ በኩበርኔትስ ውስጥ በጣም ትንሹ ሊሰራጭ የሚችል ክፍል ነው። ፖድ የስራ ጫናዎን ይይዛል፣ እና ፖድ ልሹ በክላስተርዎ ውስጥ ካለው ሂደት ጋር ይዛመዳል። ፖድ አንድ ወይም ከዚያ በላይ መያዣዎችን ይዟል. በስብስቡ ውስጥ ያለው እያንዳንዱ የZooKeeper አገልጋይ እና በካፍካ ክላስተር ውስጥ ያለው እያንዳንዱ ደላላ በተለየ ፖድ ውስጥ ይሰራል።
  • StatefulSetስቴትፉል ሴት የኩበርኔትስ ነገር ሲሆን ብዙ ሁኔታዊ የስራ ጫናዎችን ያስተናግዳል፣ እና እንደዚህ አይነት የስራ ጫናዎች ቅንጅትን ይጠይቃሉ። StatefulSets የፖድ ቅደም ተከተል እና ልዩነታቸውን በተመለከተ ዋስትናዎችን ይሰጣሉ።
  • ጭንቅላት የሌላቸው አገልግሎቶችአገልግሎቶቹ አመክንዮአዊ ስም ተጠቅመው ፖድን ከደንበኞች እንዲነጠሉ ያስችሉዎታል። በዚህ ጉዳይ ላይ Kubernetes ለጭነት ሚዛን ተጠያቂ ነው. ነገር ግን፣ እንደ ZooKeeper እና Kafka ያሉ ትክክለኛ የስራ ጫናዎችን በሚሰሩበት ጊዜ ደንበኞቻቸው ከተወሰነ ምሳሌ ጋር መገናኘት አለባቸው። ልሾ-አልባ አገልግሎቶች እዚህ ይመጣሉ: በዚህ ሁኔታ, ደንበኛው አሁንም አመክንዮአዊ ስም ይኖረዋል, ነገር ግን ፖድውን በቀጥታ ማነጋገር አያስፈልግዎትም.
  • የረጅም ጊዜ የማከማቻ መጠንእነዚህ ጥራዞች ከላይ የተጠቀሰውን አካባቢያዊ ያልሆነ ብሎክ ቋሚ ማከማቻን ለማዋቀር ያስፈልጋሉ።

በ ዮሊያን በካፍካ በኩበርኔትስ ለመጀመር የሚያግዝዎትን አጠቃላይ የማኒፌክት ስብስብ ያቀርባል።

Helm ገበታዎች

Helm እንደ yum፣ apt፣ Homebrew ወይም Chocolatey ካሉ የስርዓተ ክወና የጥቅል አስተዳዳሪዎች ጋር ሊወዳደር የሚችል የኩበርኔትስ የጥቅል አስተዳዳሪ ነው። በ Helm ገበታዎች ውስጥ የተገለጹ ቀድሞ የተገለጹ የሶፍትዌር ፓኬጆችን መጫን ቀላል ያደርገዋል። በደንብ የተመረጠ የሄልም ቻርት ሁሉንም መለኪያዎች እንዴት በትክክል ማዋቀር እንደሚቻል ቀላል ያደርገዋል Kafka በ Kubernetes ላይ ለመጠቀም። በርካታ የካፍካ ሥዕላዊ መግለጫዎች አሉ-ኦፊሴላዊው ይገኛል በማቀፊያ ሁኔታ ውስጥ፣ አንድ ከ አለ ግላዊ, አንድ ተጨማሪ - ከ Bitnami.

ከዋኞች

ሄልም የተወሰኑ ድክመቶች ስላሉት ሌላ መሳሪያ ከፍተኛ ተወዳጅነት እያገኘ ነው፡ የኩበርኔትስ ኦፕሬተሮች። ኦፕሬተሩ ለኩበርኔትስ ሶፍትዌሮችን ማሸግ ብቻ ሳይሆን እንደዚህ አይነት ሶፍትዌሮችን ለማሰማራት እና ለማስተዳደርም ይፈቅድልዎታል።

በዝርዝሩ ውስጥ አስደናቂ ኦፕሬተሮች ለካፍካ ሁለት ኦፕሬተሮች ይጠቀሳሉ. ከእነርሱ መካከል አንዱ - ስትሪምዚ. በስትሪምዚ፣ የእርስዎን የካፍካ ስብስብ በደቂቃዎች ውስጥ ማስኬድ ቀላል ነው። በመሠረቱ ምንም ማዋቀር አያስፈልግም፣ በተጨማሪም ኦፕሬተሩ ራሱ አንዳንድ ጥሩ ባህሪያትን ይሰጣል፣ ለምሳሌ፣ ከነጥብ-ወደ-ነጥብ TLS ምስጠራ በክላስተር ውስጥ። Confluent ደግሞ ያቀርባል የራሱ ኦፕሬተር.

ምርታማነት

የካፍካ ምሳሌን በማመሳሰል አፈጻጸምን መፈተሽ አስፈላጊ ነው። እንደዚህ ያሉ ሙከራዎች ችግሮች ከመከሰታቸው በፊት ሊከሰቱ የሚችሉ ማነቆዎችን ለማግኘት ይረዳሉ. እንደ እድል ሆኖ፣ ካፍካ አስቀድሞ ሁለት የአፈጻጸም መሞከሪያ መሳሪያዎችን ያቀርባል፡- kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. በንቃት ተጠቀምባቸው። ለማጣቀሻ፣ በ ውስጥ የተገለጹትን ውጤቶች መመልከት ትችላለህ ይህ ልጥፍ ጄይ ክሬፕስ፣ ወይም ትኩረት ይስጡ ይህ ግምገማ Amazon MSK በ ስቴፋን ማሬክ።

ክዋኔዎች

ክትትል

በስርዓቱ ውስጥ ግልጽነት በጣም አስፈላጊ ነው - አለበለዚያ በእሱ ውስጥ ምን እየተፈጠረ እንዳለ አይረዱም. ዛሬ በደመና ቤተኛ ዘይቤ ውስጥ በሜትሪክ ላይ የተመሰረተ ክትትልን የሚሰጥ ጠንካራ የመሳሪያ ስብስብ አለ። ለዚህ ዓላማ ሁለት ታዋቂ መሳሪያዎች ፕሮሜቲየስ እና ግራፋና ናቸው. ፕሮሜቴየስ የ JMX ላኪን በመጠቀም ከሁሉም የጃቫ ሂደቶች (ካፍካ ፣ ዙ ጠባቂ ፣ ካፍካ አገናኝ) መለኪያዎችን መሰብሰብ ይችላል - በቀላል መንገድ። የ cAdvisor መለኪያዎችን ካከሉ፣ በ Kubernetes ውስጥ ሃብቶች እንዴት ጥቅም ላይ እንደሚውሉ የበለጠ መረዳት ይችላሉ።

Strimzi ለካፍካ የግራፋና ዳሽቦርድ በጣም ምቹ ምሳሌ አለው። ቁልፍ መለኪያዎችን በዓይነ ሕሊናህ ያሳያል፣ ለምሳሌ፣ በደንብ ባልተደጋገሙ ዘርፎች ወይም ከመስመር ውጭ የሆኑትን። እዚያ ሁሉም ነገር በጣም ግልጽ ነው. እነዚህ መለኪያዎች በሃብት አጠቃቀም እና በአፈጻጸም መረጃ እንዲሁም በተረጋጋ ሁኔታ ጠቋሚዎች የተሟሉ ናቸው። ስለዚህ መሰረታዊ የካፍካ ክላስተር ክትትልን በከንቱ ያገኛሉ!

በኩበርኔትስ ላይ ካፍካ ጥሩ ነው?

ምንጭ: streamzi.io/docs/master/#kafka_dashboard

ይህንን ሁሉ በደንበኛ ክትትል (በሸማቾች እና በአምራቾች ላይ ያሉ መለኪያዎች) እንዲሁም የቆይታ ክትትል (ለዚህም አለ) ቢጨምር ጥሩ ነው። በጉድጓዴ) እና ከጫፍ እስከ ጫፍ ክትትል - ለዚህ ጥቅም የካፍካ ሞኒተር.

መግባት

መዝገቡ ሌላው ወሳኝ ተግባር ነው። በእርስዎ የካፍካ መጫኛ ውስጥ ያሉት ሁሉም መያዣዎች መመዝገባቸውን ያረጋግጡ stdout и stderrእና እንዲሁም የእርስዎ የኩበርኔትስ ክላስተር ሁሉንም ምዝግብ ማስታወሻዎች ወደ ማዕከላዊ የምዝግብ ማስታወሻ መሠረተ ልማት ማሰባሰብን ያረጋግጡ፣ ለምሳሌ Elasticsearch.

የጤና ማረጋገጫ

ኩበርኔትስ የእርስዎ ፖዶች በመደበኛነት እየሰሩ መሆናቸውን ለመፈተሽ ሕያውነት እና ዝግጁነት ምርመራዎችን ይጠቀማል። የአኗኗር ፍተሻው ካልተሳካ ኩበርኔትስ መያዣውን ያቆመው እና የዳግም ማስጀመር መመሪያው በዚሁ መሰረት ከተዘጋጀ በራስ-ሰር እንደገና ያስጀምረዋል። የዝግጁነት ማረጋገጫው ካልተሳካ ኩበርኔትስ ፖድውን ከአገልግሎት ጥያቄዎች ያገለል። ስለዚህ, በእንደዚህ አይነት ሁኔታዎች, በእጅ የሚደረግ ጣልቃ ገብነት ከአሁን በኋላ አያስፈልግም, ይህም ትልቅ ተጨማሪ ነው.

ዝማኔዎችን በመልቀቅ ላይ

StatefulSets አውቶማቲክ ማሻሻያዎችን ይደግፋሉ፡ የRollingUpdate ስልትን ከመረጡ በካፍካ ስር ያለው እያንዳንዱ በተራ ይዘምናል። በዚህ መንገድ የእረፍት ጊዜ ወደ ዜሮ ሊቀንስ ይችላል.

ማመጣጠን

የካፍካ ዘለላ ማቃለል ቀላል ስራ አይደለም። ሆኖም ኩበርኔትስ ፖዶችን ወደ ተወሰኑ ቅጂዎች ለመለካት በጣም ቀላል ያደርገዋል፣ ይህ ማለት የፈለጉትን ያህል የካፍካ ደላላዎችን በአዋጅ መግለፅ ይችላሉ። በዚህ ጉዳይ ላይ በጣም አስቸጋሪው ነገር ከፍ ካለ በኋላ ወይም ከመቀነሱ በፊት ዘርፎችን እንደገና መመደብ ነው. በድጋሚ, Kubernetes በዚህ ተግባር ይረዱዎታል.

አስተዳደር

የእርስዎን የካፍካ ክላስተር ከማስተዳደር ጋር የተያያዙ ተግባራት፣ እንደ ርዕሰ ጉዳዮችን መፍጠር እና ዘርፎችን እንደገና መመደብ፣ ያሉትን የሼል ስክሪፕቶች በመጠቀም የትእዛዝ መስመር በይነገጽን በፖድዎ ውስጥ በመክፈት ሊከናወኑ ይችላሉ። ይሁን እንጂ ይህ መፍትሔ በጣም ቆንጆ አይደለም. Strimzi የተለየ ኦፕሬተር በመጠቀም ርዕሶችን ማስተዳደርን ይደግፋል። እዚህ ለመሻሻል የተወሰነ ቦታ አለ.

ምትኬ ያስቀምጡ እና ወደነበረበት ይመልሱ

አሁን የካፍካ መገኘት በኩበርኔትስ መገኘት ላይም ይወሰናል. የእርስዎ የኩበርኔትስ ክላስተር ካልተሳካ፣ ከዚያም በከፋ ሁኔታ ውስጥ፣ የእርስዎ የካፍካ ስብስብም አይሳካም። እንደ መርፊ ህግ፣ ይህ በእርግጠኝነት ይከሰታል፣ እና እርስዎ ውሂብ ያጣሉ። ይህንን አይነት አደጋ ለመቀነስ ጥሩ የመጠባበቂያ ጽንሰ-ሀሳብ ይኑርዎት. MirrorMaker ን መጠቀም ትችላለህ፣ በዚህ ውስጥ እንደተገለፀው ሌላው አማራጭ S3 ን መጠቀም ነው። ልጥፍ ከዛላንዶ.

መደምደሚያ

ከትንሽ እና መካከለኛ መጠን ካፍካ ክላስተር ጋር ሲሰሩ ተጨማሪ የመተጣጠፍ ችሎታን ስለሚሰጥ እና የኦፕሬተርን ልምድ ስለሚያቃልል ኩበርኔትስ መጠቀም ተገቢ ነው። በጣም ጉልህ የማይሰራ የቆይታ እና/ወይም የውጤት መስፈርቶች ካሎት፣ ሌላ የማሰማራት አማራጭን ማጤን የተሻለ ሊሆን ይችላል።

ምንጭ: hab.com

አስተያየት ያክሉ