SveicinÄti, Habr!
Savulaik bijÄm pirmie, kas Å”o tÄmu iepazÄ«stinÄja Krievijas tirgÅ«
Ievads
Kubernetes ir paredzÄts bezvalsts darba slodzes apstrÄdei. Parasti Å”Ädas darba slodzes tiek parÄdÄ«tas mikropakalpojumu arhitektÅ«ras veidÄ, tÄs ir vieglas, labi mÄrogotas horizontÄli, atbilst 12 faktoru lietojumprogrammu principiem un var strÄdÄt ar automÄtiskiem slÄdžiem un haosa pÄrtiÄ·iem.
No otras puses, Kafka bÅ«tÄ«bÄ darbojas kÄ izplatÄ«ta datu bÄze. LÄ«dz ar to strÄdÄjot nÄkas saskarties ar stÄvokli, un tas ir daudz smagÄks par mikropakalpojumu. Kubernetes atbalsta statusa slodzes, taÄu, kÄ Kelsija Haitaure norÄda divos tvÄ«tos, ar tÄm jÄrÄ«kojas uzmanÄ«gi:
Dažiem cilvÄkiem Ŕķiet, ka, ja Kubernetes pievienosit statusa darba slodzei, tÄ kļūst par pilnÄ«bÄ pÄrvaldÄ«tu datu bÄzi, kas konkurÄ ar RDS. Tas ir nepareizi. VarbÅ«t, ja pietiekami smagi strÄdÄsi, pievienosi papildu komponentus un piesaistÄ«si SRE inženieru komandu, varÄsi uzbÅ«vÄt RDS virsÅ« Kubernetes.
Es vienmÄr iesaku ikvienam ievÄrot Ä«paÅ”u piesardzÄ«bu, veicot Kubernetes statusa slodzes. LielÄkajai daļai cilvÄku, kas jautÄ āvai varu palaist statusful workloads uz Kubernetesā, nav pietiekamas pieredzes darbÄ ar Kubernetes, un bieži vien arÄ« ar darba slodzi, par kuru viÅi jautÄ.
TÄtad, vai jums vajadzÄtu vadÄ«t Kafku vietnÄ Kubernetes? PretjautÄjums: vai Kafka labÄk strÄdÄs bez Kubernetes? TÄpÄc Å”ajÄ rakstÄ vÄlos izcelt, kÄ Kafka un Kubernetes viens otru papildina un kÄdas nepilnÄ«bas var rasties, tos apvienojot.
PabeigŔanas laiks
ParunÄsim par pamata lietu ā paÅ”u izpildlaika vidi
process
Kafka brokeri ir draudzÄ«gi centrÄlajam procesoram. TLS var radÄ«t papildu izmaksas. TomÄr Kafka klienti var izmantot vairÄk CPU, ja viÅi izmanto Å”ifrÄÅ”anu, taÄu tas neietekmÄ brokerus.
AtmiÅa
Kafkas brokeri apÄd atmiÅu. JVM kaudzes lielums parasti ir ierobežots lÄ«dz 4ā5 GB, taÄu jums bÅ«s nepiecieÅ”ams arÄ« daudz sistÄmas atmiÅas, jo Kafka ļoti intensÄ«vi izmanto lapas keÅ”atmiÅu. ProgrammÄ Kubernetes iestatiet attiecÄ«gi konteinera resursu un pieprasÄ«jumu ierobežojumus.
Datu krÄtuve
Datu glabÄÅ”ana konteineros ir Ä«slaicÄ«ga ā dati tiek zaudÄti, restartÄjot. Kafka datiem varat izmantot sÄjumu emptyDir
, un efekts bÅ«s lÄ«dzÄ«gs: pÄc pabeigÅ”anas jÅ«su brokera dati tiks zaudÄti. JÅ«su ziÅojumus joprojÄm var saglabÄt citos brokeros kÄ kopijas. TÄpÄc pÄc restartÄÅ”anas neveiksmÄ«gajam brokerim vispirms ir jÄreplicÄ visi dati, un Å”is process var aizÅemt daudz laika.
TÄpÄc jums vajadzÄtu izmantot ilgtermiÅa datu glabÄÅ”anu. Lai tÄ bÅ«tu nelokÄla ilgtermiÅa glabÄÅ”ana ar XFS failu sistÄmu vai, precÄ«zÄk, ext4. Neizmantojiet NFS. ES tevi brÄ«dinÄju. NFS versijas v3 vai v4 nedarbosies. ÄŖsÄk sakot, Kafka brokeris avarÄs, ja nevarÄs izdzÄst datu direktoriju NFS "stulbÄs pÄrdÄvÄÅ”anas" problÄmas dÄļ. Ja es tevi vÄl neesmu pÄrliecinÄjis, tad ļoti uzmanÄ«gi
TÄ«kls
TÄpat kÄ lielÄkajÄ daÄ¼Ä izplatÄ«to sistÄmu, Kafka veiktspÄja ir ļoti atkarÄ«ga no tÄ«kla latentuma samazinÄÅ”anas lÄ«dz minimumam un joslas platumam lÄ«dz maksimÄlajam. NemÄÄ£iniet mitinÄt visus brokerus vienÄ mezglÄ, jo tas samazinÄs pieejamÄ«bu. Ja Kubernetes mezgls neizdodas, viss Kafka klasteris neizdosies. TÄpat neizkliedÄjiet Kafka kopu visos datu centros. Tas pats attiecas uz Kubernetes klasteru. Labs kompromiss Å”ajÄ gadÄ«jumÄ ir izvÄlÄties dažÄdas pieejamÄ«bas zonas.
KonfigurÄcija
RegulÄri manifesti
VietnÄ Kubernetes ir
- SaskaÅÄ ar: Pods ir mazÄkÄ izvietojamÄ vienÄ«ba Kubernetes. AplikumÄ ir ietverta jÅ«su darba slodze, un pats pods atbilst procesam jÅ«su klasterÄ«. PÄksts satur vienu vai vairÄkus konteinerus. Katrs ZooKeeper serveris ansamblÄ« un katrs brokeris Kafka klasterÄ« darbosies atseviÅ”Ä·Ä podÄ.
- StatefulSet: StatefulSet ir Kubernetes objekts, kas apstrÄdÄ vairÄkas statusa darba slodzes, un Å”Ädas darba slodzes ir jÄsaskaÅo. StatefulSets sniedz garantijas par pÄkstu pasÅ«tÄ«Å”anu un to unikalitÄti.
- Pakalpojumi bez galvas: pakalpojumi ļauj atdalÄ«t aplikumus no klientiem, izmantojot loÄ£isku nosaukumu. Kubernetes Å”ajÄ gadÄ«jumÄ ir atbildÄ«gs par slodzes lÄ«dzsvaroÅ”anu. TomÄr, strÄdÄjot ar statusa darba slodzi, piemÄram, ZooKeeper un Kafka, klientiem ir jÄsazinÄs ar konkrÄtu gadÄ«jumu. Å eit noder bezgalvu pakalpojumi: Å”ajÄ gadÄ«jumÄ klientam joprojÄm bÅ«s loÄ£isks vÄrds, taÄu jums nebÅ«s tieÅ”i jÄsazinÄs ar podziÅu.
- IlgtermiÅa uzglabÄÅ”anas apjoms: Å”ie sÄjumi ir nepiecieÅ”ami, lai konfigurÄtu iepriekÅ” minÄto nelokÄlo bloku pastÄvÄ«go krÄtuvi.
uz
Stūres diagrammas
Helm ir Kubernetes pakotÅu pÄrvaldnieks, ko var salÄ«dzinÄt ar OS pakotÅu pÄrvaldniekiem, piemÄram, yum, apt, Homebrew vai Chocolatey. Tas atvieglo iepriekÅ” definÄtu programmatÅ«ras pakotÅu instalÄÅ”anu, kas aprakstÄ«tas Helm diagrammÄs. Pareizi izvÄlÄta Helm diagramma atvieglo sarežģīto uzdevumu, kÄ pareizi konfigurÄt visus parametrus, lai izmantotu Kafka vietnÄ Kubernetes. Ir vairÄkas Kafkas diagrammas: atrodas oficiÄlÄ
Operatori
TÄ kÄ Helm ir zinÄmi trÅ«kumi, ievÄrojamu popularitÄti iegÅ«st vÄl viens rÄ«ks: Kubernetes operatori. Operators ne tikai iepako programmatÅ«ru Kubernetes, bet arÄ« ļauj izvietot Å”Ädu programmatÅ«ru un pÄrvaldÄ«t to.
SarakstÄ
ŠŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŃŠµŠ»ŃŠ½Š¾ŃŃŃ
Ir svarÄ«gi pÄrbaudÄ«t veiktspÄju, veicot Kafka eksemplÄra salÄ«dzinoÅ”o novÄrtÄÅ”anu. Å Ädi testi palÄ«dzÄs jums atrast iespÄjamÄs vÄjÄs vietas, pirms rodas problÄmas. Par laimi Kafka jau piedÄvÄ divus veiktspÄjas testÄÅ”anas rÄ«kus: kafka-producer-perf-test.sh
Šø kafka-consumer-perf-test.sh
. AktÄ«vi izmantojiet tos. UzziÅai varat atsaukties uz rezultÄtiem, kas aprakstÄ«ti sadaļÄ
OperÄcijas
Uzraudzība
PÄrredzamÄ«ba sistÄmÄ ir ļoti svarÄ«ga ā pretÄjÄ gadÄ«jumÄ jÅ«s nesapratÄ«siet, kas tajÄ notiek. MÅ«sdienÄs ir pieejams stabils rÄ«ku komplekts, kas nodroÅ”ina uz metriku balstÄ«tu uzraudzÄ«bu mÄkoÅdatoÅ”anas stilÄ. Divi populÄri rÄ«ki Å”im nolÅ«kam ir Prometheus un Grafana. Prometheus var apkopot metriku no visiem Java procesiem (Kafka, Zookeeper, Kafka Connect), izmantojot JMX eksportÄtÄju ā vienkÄrÅ”ÄkajÄ veidÄ. Ja pievienojat cAdvisor metriku, varat pilnÄ«gÄk izprast, kÄ resursi tiek izmantoti Kubernetes.
Strimzi ir ļoti Ärts Grafana informÄcijas paneļa piemÄrs priekÅ” Kafka. Tas vizualizÄ galvenos rÄdÄ«tÄjus, piemÄram, par nepietiekami replicÄtiem vai bezsaistÄ esoÅ”ajiem sektoriem. Tur viss ir ļoti skaidrs. Å os rÄdÄ«tÄjus papildina informÄcija par resursu izmantoÅ”anu un veiktspÄju, kÄ arÄ« stabilitÄtes rÄdÄ«tÄji. TÄtad jÅ«s saÅemat pamata Kafka klasteru uzraudzÄ«bu par velti!
Avots:
BÅ«tu jauki to visu papildinÄt ar klientu uzraudzÄ«bu (metrika par patÄrÄtÄjiem un ražotÄjiem), kÄ arÄ« latentuma uzraudzÄ«bu (tam ir
MežizstrÄde
MežizstrÄde ir vÄl viens svarÄ«gs uzdevums. PÄrliecinieties, vai visi konteineri jÅ«su Kafka instalÄcijÄ ir reÄ£istrÄti stdout
Šø stderr
, kÄ arÄ« nodroÅ”iniet, lai jÅ«su Kubernetes klasteris visus žurnÄlus apkopotu centrÄlajÄ reÄ£istrÄÅ”anas infrastruktÅ«rÄ, piemÄram,
FunkcionÄlÄ pÄrbaude
Kubernetes izmanto dzÄ«vÄ«guma un gatavÄ«bas zondes, lai pÄrbaudÄ«tu, vai jÅ«su podi darbojas normÄli. Ja dzÄ«vÄ«guma pÄrbaude neizdodas, Kubernetes apturÄs Å”o konteineru un pÄc tam automÄtiski restartÄs to, ja restartÄÅ”anas politika ir iestatÄ«ta atbilstoÅ”i. Ja gatavÄ«bas pÄrbaude neizdodas, Kubernetes izolÄ apkopi no apkalpoÅ”anas pieprasÄ«jumiem. TÄdÄjÄdi Å”Ädos gadÄ«jumos manuÄla iejaukÅ”anÄs vairs nemaz nav nepiecieÅ”ama, kas ir liels pluss.
Notiek atjauninÄjumu izlaiÅ”ana
StatefulSets atbalsta automÄtiskos atjauninÄjumus: ja atlasÄt RollingUpdate stratÄÄ£iju, katrs sadaÄ¼Ä Kafka tiks atjauninÄts pÄc kÄrtas. TÄdÄ veidÄ dÄ«kstÄves laiku var samazinÄt lÄ«dz nullei.
MÄrogoÅ”ana
Kafka klastera mÄrogoÅ”ana nav viegls uzdevums. TomÄr Kubernetes ļauj ļoti vienkÄrÅ”i mÄrogot aplikÄcijas lÄ«dz noteiktam kopiju skaitam, kas nozÄ«mÄ, ka varat deklaratÄ«vi definÄt tik daudz Kafka brokeru, cik vÄlaties. SarežģītÄkÄ lieta Å”ajÄ gadÄ«jumÄ ir sektoru maiÅa pÄc mÄrogoÅ”anas vai pirms samazinÄÅ”anas. Atkal Kubernetes jums palÄ«dzÄs ar Å”o uzdevumu.
AdministrÄcija
Uzdevumus, kas saistÄ«ti ar jÅ«su Kafka klastera administrÄÅ”anu, piemÄram, tÄmu izveidi un sektoru atkÄrtotu pieŔķirÅ”anu, var veikt, izmantojot esoÅ”os Äaulas skriptus, atverot komandrindas interfeisu savos podiÅos. TomÄr Å”is risinÄjums nav Ä«paÅ”i skaists. Strimzi atbalsta tÄmu pÄrvaldÄ«bu, izmantojot citu operatoru. Å eit ir daži uzlabojumi.
DublÄÅ”ana un atjaunoÅ”ana
Tagad Kafkas pieejamÄ«ba bÅ«s atkarÄ«ga arÄ« no Kubernetes pieejamÄ«bas. Ja jÅ«su Kubernetes klasteris neizdosies, sliktÄkajÄ gadÄ«jumÄ neizdosies arÄ« jÅ«su Kafka klasteris. SaskaÅÄ ar MÄrfija likumu tas noteikti notiks, un jÅ«s zaudÄsiet datus. Lai samazinÄtu Å”Äda veida risku, izveidojiet labu rezerves koncepciju. Varat izmantot MirrorMaker, cita iespÄja ir izmantot S3, kÄ aprakstÄ«ts Å”ajÄ
SecinÄjums
StrÄdÄjot ar maziem un vidÄjiem Kafka klasteriem, noteikti ir vÄrts izmantot Kubernetes, jo tas nodroÅ”ina papildu elastÄ«bu un vienkÄrÅ”o operatora pieredzi. Ja jums ir ļoti nozÄ«mÄ«gas nefunkcionÄlas latentuma un/vai caurlaidspÄjas prasÄ«bas, iespÄjams, labÄk ir apsvÄrt kÄdu citu izvietoÅ”anas iespÄju.
Avots: www.habr.com