Kubernetes හි කෆ්කා හොඳද?

සුභ පැතුම්, හබ්ර්!

එක් අවස්ථාවක, මාතෘකාව රුසියානු වෙළඳපොළට හඳුන්වා දුන් පළමු පුද්ගලයා අපි විය කාෆ්කා සහ දිගටම ධාවන පථය එහි සංවර්ධනය සඳහා. විශේෂයෙන්ම, අපි Kafka සහ අතර අන්තර්ක්‍රියා මාතෘකාව සොයා ගත්තෙමු කුබර්නෙට්ස්. නිරීක්ෂණය කළ හැකි (සහ තරමක් සැලකිලිමත්) ලිපියක් මෙම මාතෘකාව Gwen Shapira ගේ කර්තෘත්වය යටතේ පසුගිය වසරේ ඔක්තෝම්බර් මාසයේදී Confluent බ්ලොග් අඩවියේ ප්‍රකාශයට පත් කරන ලදී. මාතෘකාවේ ප්‍රශ්නාර්ථ ලකුණක් නොතිබුණද, මාතෘකාව වඩාත් හරවත් ආකාරයෙන්, රසවත් සබැඳි සමඟ පෙළ සමඟ පරීක්ෂා කරන ජොහාන් ගයිගර්ගේ අප්‍රේල් මාසයේ සිට වඩාත් මෑතකාලීන ලිපියක් වෙත අද අපි ඔබේ අවධානය යොමු කිරීමට කැමැත්තෙමු. ඔබට හැකි නම් "chaos monkey" හි නිදහස් පරිවර්තනයට කරුණාකර අපට සමාව දෙන්න!

Kubernetes හි කෆ්කා හොඳද?

හැඳින්වීම

Kubernetes නිර්මාණය කර ඇත්තේ රාජ්‍ය රහිත වැඩ බර හැසිරවීමටය. සාමාන්‍යයෙන්, එවැනි වැඩ බරක් ක්ෂුද්‍ර සේවා ගෘහ නිර්මාණ ශිල්පයක ස්වරූපයෙන් ඉදිරිපත් කෙරේ, ඒවා සැහැල්ලු ය, හොඳින් තිරස් අතට පරිමාණය, 12-සාධක යෙදුම්වල මූලධර්ම අනුගමනය කරන අතර පරිපථ කඩනයන් සහ අවුල් වඳුරන් සමඟ වැඩ කළ හැකිය.

අනෙක් අතට Kafka අත්‍යවශ්‍යයෙන්ම බෙදා හරින ලද දත්ත ගබඩාවක් ලෙස ක්‍රියා කරයි. මේ අනුව, වැඩ කරන විට, ඔබ රාජ්යය සමඟ කටයුතු කළ යුතු අතර, එය ක්ෂුද්ර සේවයට වඩා බරයි. Kubernetes ප්‍රකාශිත පැටවීම් සඳහා සහය දක්වයි, නමුත් Kelsey Hightower ට්වීට් දෙකකින් පෙන්වා දෙන පරිදි, ඒවා ප්‍රවේශමෙන් හැසිරවිය යුතුය:

ඔබ Kubernetes රාජ්‍ය කාර්ය භාරයකට පෙරළන්නේ නම්, එය RDS සමඟ ප්‍රතිවාදී පූර්ණ කළමනාකරණය කළ දත්ත සමුදායක් බවට පත්වන බව සමහර අයට හැඟේ. මේක වැරදියි. සමහර විට, ඔබ ප්‍රමාණවත් තරම් වෙහෙස මහන්සි වී, අමතර සංරචක එකතු කර SRE ඉංජිනේරුවන් කණ්ඩායමක් ආකර්ෂණය කර ගන්නේ නම්, ඔබට Kubernetes මත RDS ගොඩනගා ගත හැකිය.

Kubernetes හි ප්‍රබල වැඩ බරක් ධාවනය කිරීමේදී සෑම කෙනෙකුම අතිශයින්ම ප්‍රවේශම් විය යුතු බව මම සැමවිටම නිර්දේශ කරමි. "මට Kubernetes මත ප්‍රකාශිත වැඩ බරක් ධාවනය කළ හැකිද" යනුවෙන් අසන බොහෝ පුද්ගලයින්ට Kubernetes සම්බන්ධයෙන් ප්‍රමාණවත් අත්දැකීමක් නොමැති අතර බොහෝ විට ඔවුන් අසන වැඩ ප්‍රමාණය සම්බන්ධයෙන්.

ඉතින්, ඔබ Kubernetes මත Kafka ධාවනය කළ යුතුද? ප්‍රති ප්‍රශ්නය: Kubernetes නොමැතිව කෆ්කා හොඳින් ක්‍රියා කරයිද? කෆ්කා සහ කුබර්නෙටස් එකිනෙකාට අනුපූරක වන ආකාරය සහ ඒවා ඒකාබද්ධ කිරීමේදී ඇතිවිය හැකි අන්තරායන් මොනවාද යන්න මෙම ලිපියෙන් ඉස්මතු කිරීමට මට අවශ්‍ය වන්නේ එබැවිනි.

නිම කිරීමේ කාලය

අපි මූලික දේ ගැන කතා කරමු - ධාවන කාල පරිසරයම

ක්රියාවලිය

කෆ්කා තැරැව්කරුවන් CPU හිතකාමී ය. TLS විසින් පොදු කාර්ය කිහිපයක් හඳුන්වා දිය හැක. කෙසේ වෙතත්, ඔවුන් සංකේතනය භාවිතා කරන්නේ නම් Kafka සේවාලාභීන් වඩාත් CPU තීව්‍ර විය හැක, නමුත් මෙය තැරැව්කරුවන්ට බලපාන්නේ නැත.

මතක

කෆ්කා තැරැව්කරුවන් මතකය කනවා. JVM ගොඩවල් ප්‍රමාණය සාමාන්‍යයෙන් 4-5 GB දක්වා සීමා වේ, නමුත් Kafka විසින් පිටු හැඹිලිය ඉතා දැඩි ලෙස භාවිතා කරන බැවින් ඔබට පද්ධති මතකය විශාල ප්‍රමාණයක් අවශ්‍ය වේ. Kubernetes හි, බහාලුම් සම්පත් සකසන්න සහ ඒ අනුව සීමාවන් ඉල්ලන්න.

දත්ත ගබඩාව

බහාලුම්වල දත්ත ගබඩා කිරීම තාවකාලිකයි - නැවත ආරම්භ කරන විට දත්ත නැති වී යයි. Kafka දත්ත සඳහා ඔබට පරිමාවක් භාවිතා කළ හැකිය emptyDir, සහ බලපෑම සමාන වනු ඇත: සම්පූර්ණ කිරීමෙන් පසු ඔබේ තැරැව්කරු දත්ත නැති වනු ඇත. ඔබගේ පණිවිඩ තවමත් අනුරූ ලෙස වෙනත් තැරැව්කරුවන් මත ගබඩා කළ හැක. එබැවින්, නැවත ආරම්භ කිරීමෙන් පසුව, අසාර්ථක තැරැව්කරු මුලින්ම සියලු දත්ත අනුකරණය කළ යුතු අතර, මෙම ක්රියාවලිය බොහෝ කාලයක් ගත විය හැකිය.

ඔබ දිගු කාලීන දත්ත ගබඩාවක් භාවිතා කළ යුත්තේ එබැවිනි. එය XFS ගොනු පද්ධතිය සමඟ හෝ, වඩාත් නිවැරදිව, ext4 සමඟ දේශීය නොවන දිගු කාලීන ගබඩා කිරීමට ඉඩ දෙන්න. NFS භාවිතා නොකරන්න. මම ඔබට අවවාද කළා. NFS අනුවාද v3 හෝ v4 ක්‍රියා නොකරනු ඇත. කෙටියෙන් කිවහොත්, NFS හි ඇති "මෝඩ නැවත නම් කිරීමේ" ගැටළුව හේතුවෙන් දත්ත නාමාවලිය මකා දැමිය නොහැකි නම් Kafka තැරැව්කරු බිඳ වැටෙනු ඇත. මම තවමත් ඔබට ඒත්තු ගැන්වූයේ නැත්නම්, ඉතා ප්රවේශමෙන් මෙම ලිපිය කියවන්න. දත්ත ගබඩාව දේශීය නොවන විය යුතුය, එවිට Kubernetes හට නැවත ආරම්භ කිරීමකින් හෝ නැවත ස්ථානගත කිරීමකින් පසුව නව නෝඩයක් වඩාත් නම්‍යශීලීව තෝරාගත හැක.

ජාලය

බොහෝ බෙදා හරින ලද පද්ධති මෙන්ම, කෆ්කාගේ කාර්ය සාධනය ජාල ප්‍රමාදය අවම මට්ටමකට සහ කලාප පළල උපරිමයට තබා ගැනීම මත බෙහෙවින් රඳා පවතී. සියලුම තැරැව්කරුවන් එකම node එකක් මත තබා ගැනීමට උත්සාහ නොකරන්න, මෙය ලබා ගැනීමේ හැකියාව අඩු කරයි. Kubernetes node එකක් අසාර්ථක වුවහොත්, සම්පූර්ණ Kafka පොකුරම අසාර්ථක වනු ඇත. එසේම, Kafka පොකුර සම්පූර්ණ දත්ත මධ්‍යස්ථාන හරහා විසුරුවා හරින්න එපා. Kubernetes පොකුර සඳහා ද එය එසේම වේ. මෙම නඩුවේ හොඳ සම්මුතියක් වන්නේ විවිධ ලබා ගත හැකි කලාප තෝරා ගැනීමයි.

වින්‍යාසය

නිත්‍ය ප්‍රකාශන

Kubernetes වෙබ් අඩවිය සතුව ඇත ඉතා හොඳ මග පෙන්වීමක් මැනිෆෙස්ට් භාවිතයෙන් ZooKeeper වින්‍යාස කරන්නේ කෙසේද යන්න ගැන. ZooKeeper Kafka හි කොටසක් බැවින්, Kubernetes සංකල්ප මෙහි අදාළ වන හුරුපුරුදු වීමට මෙය හොඳ ස්ථානයකි. ඔබ මෙය තේරුම් ගත් පසු, ඔබට කෆ්කා පොකුරක් සමඟ එකම සංකල්ප භාවිතා කළ හැකිය.

  • යටතේ: Pod යනු Kubernetes හි යෙදවිය හැකි කුඩාම ඒකකයයි. පොඩ් එකක ඔබේ වැඩ ප්‍රමාණය අඩංගු වන අතර, පොඩ් එක ඔබේ පොකුරේ ක්‍රියාවලියකට අනුරූප වේ. පොඩ් එකක බහාලුම් එකක් හෝ කිහිපයක් අඩංගු වේ. සමූහයේ සෑම ZooKeeper සේවාදායකයක් සහ Kafka පොකුරේ සෑම තැරැව්කරුවෙක්ම වෙනම පොඩ් එකක ක්‍රියාත්මක වේ.
  • StatefulSet: StatefulSet යනු බහු රාජ්‍ය කාර්ය භාරයන් හසුරුවන Kubernetes වස්තුවක් වන අතර එවැනි වැඩ බර සඳහා සම්බන්ධීකරණය අවශ්‍ය වේ. StatefulSets කරල් ඇණවුම් කිරීම සහ ඒවායේ සුවිශේෂත්වය පිළිබඳව සහතික සපයයි.
  • හිස නැති සේවා: තාර්කික නාමයක් භාවිතා කරමින් සේවාලාභීන්ගෙන් කරල් වෙන් කිරීමට සේවා ඔබට ඉඩ සලසයි. මෙම නඩුවේ Kubernetes බර තුලනය සඳහා වගකිව යුතුය. කෙසේ වෙතත්, ZooKeeper සහ Kafka වැනි රාජ්‍ය කාර්ය භාරයන් ක්‍රියාත්මක කරන විට, සේවාදායකයින්ට නිශ්චිත අවස්ථාවක් සමඟ සන්නිවේදනය කිරීමට අවශ්‍ය වේ. හිස් රහිත සේවාවන් ප්‍රයෝජනවත් වන්නේ මෙහිදීය: මෙම අවස්ථාවේදී, සේවාදායකයාට තවමත් තාර්කික නමක් ඇත, නමුත් ඔබට කෙලින්ම පොඩ් හා සම්බන්ධ වීමට අවශ්‍ය නොවේ.
  • දිගු කාලීන ගබඩා පරිමාව: ඉහත සඳහන් කළ දේශීය නොවන වාරණ ස්ථීර ගබඩාව වින්‍යාස කිරීමට මෙම වෙළුම් අවශ්‍ය වේ.

මත යෝලීන් Kubernetes හි Kafka සමඟින් ආරම්භ කිරීමට ඔබට උපකාර කිරීම සඳහා විස්තීරණ මැනිෆෙස්ට කට්ටලයක් සපයයි.

හෙල්ම් ප්‍රස්ථාර

Helm යනු yum, apt, Homebrew හෝ Chocolatey වැනි OS පැකේජ කළමනාකරුවන් සමඟ සැසඳිය හැකි Kubernetes සඳහා පැකේජ කළමනාකරුවෙකි. එය හෙල්ම් ප්‍රස්ථාරවල විස්තර කර ඇති පූර්ව නිශ්චිත මෘදුකාංග පැකේජ ස්ථාපනය කිරීම පහසු කරයි. හොඳින් තෝරන ලද Helm ප්‍රස්ථාරයක් Kubernetes හි Kafka භාවිතා කිරීම සඳහා සියලු පරාමිති නිවැරදිව වින්‍යාස කරන්නේ කෙසේද යන්න දුෂ්කර කාර්යයක් කරයි. කෆ්කා රූප සටහන් කිහිපයක් තිබේ: නිල එක පිහිටා ඇත ඉන්කියුබේටර් තත්වයේ ඇත, එකෙන් එකක් තියෙනවා සංග්‍රහය, තව එකක් - සිට බිතානි.

මෙහෙයුම්කරුවන්

Helm හි යම් යම් අඩුපාඩු ඇති නිසා, තවත් මෙවලමක් සැලකිය යුතු ජනප්රියත්වයක් ලබා ගනී: Kubernetes ක්රියාකරුවන්. ක්රියාකරු Kubernetes සඳහා මෘදුකාංග පැකේජ පමණක් නොව, එවැනි මෘදුකාංග යෙදවීමට සහ එය කළමනාකරණය කිරීමට ඔබට ඉඩ සලසයි.

ලැයිස්තුවේ පුදුම ක්රියාකරුවන් කෆ්කා සඳහා ක්‍රියාකරුවන් දෙදෙනෙකු සඳහන් කර ඇත. ඔවුන්ගෙන් එක් කෙනෙක් - ස්ට්රිම්සි. Strimzi සමඟින්, ඔබේ කෆ්කා පොකුර මිනිත්තු කිහිපයකින් ක්‍රියාත්මක කිරීම පහසුය. ප්‍රායෝගිකව කිසිදු වින්‍යාස කිරීමක් අවශ්‍ය නොවේ, ඊට අමතරව, ක්‍රියාකරු විසින්ම හොඳ විශේෂාංග කිහිපයක් සපයයි, උදාහරණයක් ලෙස, පොකුර තුළ ලක්ෂ්‍යයෙන් ලක්ෂ්‍ය TLS සංකේතනය. සංඝටකය ද සපයයි තමන්ගේම ක්රියාකරු.

ඵලදායිතාව

ඔබේ කෆ්කා නිදසුන මිණුම් සලකුණු කිරීමෙන් කාර්ය සාධනය පරීක්ෂා කිරීම වැදගත් වේ. ගැටළු ඇතිවීමට පෙර විභව බාධක සොයා ගැනීමට එවැනි පරීක්ෂණ ඔබට උපකාර කරයි. වාසනාවකට මෙන්, කෆ්කා දැනටමත් කාර්ය සාධන පරීක්ෂණ මෙවලම් දෙකක් සපයයි: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. ඒවා ක්රියාශීලීව භාවිතා කරන්න. යොමුව සඳහා, ඔබට විස්තර කර ඇති ප්රතිඵල වෙත යොමු විය හැක මෙම තනතුර Jay Kreps, හෝ අවධානය යොමු කරන්න මෙම සමාලෝචනය ඇමසන් එම්එස්කේ ස්ටෙෆන් මාරෙක් විසිනි.

මෙහෙයුම්

අධීක්ෂණය

පද්ධතියේ විනිවිදභාවය ඉතා වැදගත් වේ - එසේ නොමැතිනම් එහි සිදුවන්නේ කුමක්ද යන්න ඔබට වැටහෙන්නේ නැත. අද ක්ලවුඩ් ස්වදේශීය ශෛලිය තුළ ප්‍රමිතික මත පදනම් වූ නිරීක්ෂණ සපයන ඝන මෙවලම් කට්ටලයක් ඇත. මෙම කාර්යය සඳහා ජනප්රිය මෙවලම් දෙකක් වන්නේ Prometheus සහ Grafana ය. Prometheus හට JMX අපනයනකරුවෙකු භාවිතා කරමින් සියලුම ජාවා ක්‍රියාවලි වලින් (Kafka, Zookeeper, Kafka Connect) ප්‍රමිතික එකතු කළ හැක - සරලම ආකාරයෙන්. ඔබ cAdvisor මෙට්‍රික්ස් එකතු කරන්නේ නම්, Kubernetes හි සම්පත් භාවිතා කරන ආකාරය ඔබට වඩාත් හොඳින් අවබෝධ කර ගත හැක.

Strimzi සතුව Kafka සඳහා Grafana උපකරණ පුවරුව සඳහා ඉතා පහසු උදාහරණයක් ඇත. එය ප්‍රධාන ප්‍රමිතික දෘෂ්‍යමාන කරයි, උදාහරණයක් ලෙස, අඩු ප්‍රතිනිර්මාණ අංශ හෝ නොබැඳි ඒවා ගැන. එහි සෑම දෙයක්ම ඉතා පැහැදිලිය. මෙම ප්‍රමිතික සම්පත් භාවිතය සහ කාර්ය සාධන තොරතුරු මෙන්ම ස්ථායීතා දර්ශක මගින් අනුපූරක වේ. එබැවින් ඔබට මූලික Kafka පොකුරු අධීක්‍ෂණය කිසිවක් නොමැතිව ලැබේ!

Kubernetes හි කෆ්කා හොඳද?

මූලාශ්රය: streamzi.io/docs/master/#kafka_dashboard

මේ සියල්ල සේවාදායක අධීක්‍ෂණය (පාරිභෝගිකයින් සහ නිෂ්පාදකයින් පිළිබඳ ප්‍රමිතික) මෙන්ම ප්‍රමාද නිරීක්‍ෂණය (මේ සඳහා තිබේ බරෝ) සහ අන්තයේ සිට අවසානය දක්වා අධීක්ෂණය - මෙම භාවිතය සඳහා කෆ්කා මොනිටරය.

ලොග් කිරීම

ලොග් කිරීම තවත් තීරණාත්මක කාර්යයකි. ඔබගේ Kafka ස්ථාපනයේ ඇති සියලුම බහාලුම් ලොග් වී ඇති බවට වග බලා ගන්න stdout и stderr, සහ ඔබේ Kubernetes පොකුර මධ්‍යම ලොග් කිරීමේ යටිතල ව්‍යූහයකට සියලුම ලඝු එකතු කරන බවට සහතික වන්න, උදා. Elasticsearch.

සෞඛ්‍ය පරීක්ෂාව

Kubernetes ඔබේ කරල් සාමාන්‍ය පරිදි ක්‍රියාත්මක වේද යන්න පරීක්ෂා කිරීමට සජීවී බව සහ සූදානම පරීක්‍ෂණ භාවිත කරයි. සජීවී පරීක්ෂාව අසාර්ථක වුවහොත්, Kubernetes එම කන්ටේනරය නවත්වා නැවත ආරම්භ කිරීමේ ප්‍රතිපත්තිය ඒ අනුව සකසා ඇත්නම් එය ස්වයංක්‍රීයව නැවත ආරම්භ කරයි. සූදානම පරීක්ෂාව අසාර්ථක වුවහොත්, Kubernetes විසින් පෝඩ් එක සේවා ඉල්ලීම් වලින් හුදකලා කරයි. මේ අනුව, එවැනි අවස්ථාවන්හිදී, අතින් මැදිහත් වීම තවදුරටත් අවශ්ය නොවේ, එය විශාල ප්ලස් වේ.

යාවත්කාලීන කිරීම

StatefulSets ස්වයංක්‍රීය යාවත්කාලීන කිරීම් සඳහා සහය දක්වයි: ඔබ RollingUpdate උපායමාර්ගය තෝරා ගන්නේ නම්, Kafka යටතේ ඇති සෑම එකක්ම පිළිවෙලින් යාවත්කාලීන වේ. මේ ආකාරයෙන්, අක්රිය කාලය බිංදුව දක්වා අඩු කළ හැකිය.

පරිමාණ කිරීම

කෆ්කා පොකුරක් පරිමාණය කිරීම පහසු කාර්යයක් නොවේ. කෙසේ වෙතත්, Kubernetes නිශ්චිත අනුරූ ගණනකට කරල් පරිමාණය කිරීම ඉතා පහසු කරයි, එයින් අදහස් කරන්නේ ඔබට ඔබ කැමති තරම් Kafka තැරැව්කරුවන් ප්‍රකාශනාත්මකව අර්ථ දැක්විය හැකි බවයි. මෙම නඩුවේ වඩාත්ම දුෂ්කර දෙය වන්නේ පරිමාණය කිරීමෙන් පසුව හෝ පරිමාණය කිරීමට පෙර අංශ නැවත පැවරීමයි. නැවතත්, මෙම කාර්යය සඳහා Kubernetes ඔබට උපකාර කරනු ඇත.

පරිපාලනය

මාතෘකා නිර්මාණය කිරීම සහ අංශ නැවත පැවරීම වැනි ඔබේ Kafka පොකුර පරිපාලනය කිරීමට අදාළ කාර්යයන්, ඔබේ Pods හි විධාන රේඛා අතුරුමුහුණත විවෘත කිරීමෙන් පවතින shell scripts භාවිතයෙන් සිදු කළ හැක. කෙසේ වෙතත්, මෙම විසඳුම ඉතා අලංකාර නොවේ. Strimzi වෙනත් ක්‍රියාකරුවෙකු භාවිතා කරමින් මාතෘකා කළමනාකරණය කිරීමට සහය දක්වයි. මෙහි වැඩිදියුණු කිරීමට යම් ඉඩක් තිබේ.

උපස්ථ සහ නැවත ස්ථාපිත

දැන් Kafka ලබා ගැනීමේ හැකියාව Kubernetes ලබා ගැනීමේ හැකියාව මත ද රඳා පවතී. ඔබගේ Kubernetes පොකුර අසාර්ථක වුවහොත්, නරකම අවස්ථාවෙහිදී, ඔබේ Kafka පොකුරද අසාර්ථක වනු ඇත. මර්ෆිගේ නීතියට අනුව, මෙය අනිවාර්යයෙන්ම සිදුවනු ඇත, ඔබට දත්ත අහිමි වනු ඇත. මෙම ආකාරයේ අවදානම අවම කිරීම සඳහා, හොඳ උපස්ථ සංකල්පයක් ඇත. ඔබට MirrorMaker භාවිතා කළ හැකිය, තවත් විකල්පයක් වන්නේ මේ සඳහා S3 භාවිතා කිරීමයි, මෙය විස්තර කර ඇත තැපැල් Zalando සිට.

නිගමනය

කුඩා හා මධ්‍යම ප්‍රමාණයේ කෆ්කා පොකුරු සමඟ වැඩ කරන විට, එය අමතර නම්‍යශීලී බවක් ලබා දෙන අතර ක්‍රියාකරු අත්දැකීම සරල කරන බැවින් එය අනිවාර්යයෙන්ම Kubernetes භාවිතා කිරීම වටී. ඔබට ඉතා සැලකිය යුතු ක්‍රියාකාරී නොවන ප්‍රමාදයක් සහ/හෝ ප්‍රතිදාන අවශ්‍යතා තිබේ නම්, වෙනත් යෙදවීමේ විකල්පයක් සලකා බැලීම වඩා හොඳ විය හැක.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න