Kafka fuq Kubernetes huwa tajjeb?

Tislijiet, Habr!

F'ħin wieħed, konna l-ewwel li nintroduċu s-suġġett fis-suq Russu Kafka u kompli binarju għall-iżvilupp tagħha. B'mod partikolari, sibna s-suġġett ta 'interazzjoni bejn Kafka u Kubernetes. Osservabbli (u pjuttost attent) artikolu dan is-suġġett ġie ppubblikat fuq il-blog Confluent lura f’Ottubru tas-sena l-oħra taħt l-awtur ta’ Gwen Shapira. Illum nixtiequ niġbdu l-attenzjoni tiegħek għal artiklu aktar reċenti minn April ta’ Johann Gyger, li, għalkemm mhux mingħajr marka ta’ mistoqsija fit-titlu, jeżamina s-suġġett b’mod aktar sostantiv, jakkumpanja t-test b’links interessanti. Jekk jogħġbok aħfrilna t-traduzzjoni b'xejn ta '"xadina tal-kaos" jekk tista'!

Kafka fuq Kubernetes huwa tajjeb?

Introduzzjoni

Kubernetes huwa ddisinjat biex jimmaniġġja tagħbija tax-xogħol mingħajr stat. Tipikament, xogħolijiet bħal dawn huma ppreżentati fil-forma ta 'arkitettura ta' mikroservizz, huma ħfief, skala sew orizzontalment, isegwu l-prinċipji ta 'applikazzjonijiet ta' 12-il fattur, u jistgħu jaħdmu ma 'circuit breakers u xadini tal-kaos.

Kafka, min-naħa l-oħra, essenzjalment taġixxi bħala database distribwita. Għalhekk, meta taħdem, trid tittratta mal-istat, u hija ħafna itqal minn mikroservizz. Kubernetes jappoġġja tagħbijiet stateful, iżda kif tindika Kelsey Hightower f'żewġ tweets, għandhom jiġu ttrattati b'attenzjoni:

Xi nies iħossu li jekk tirrollja Kubernetes f'ammont ta 'xogħol stateful, issir database ġestita bis-sħiħ li tirrivali RDS. Dan huwa ħażin. Forsi, jekk taħdem iebes biżżejjed, żid komponenti addizzjonali u tattira tim ta 'inġiniera SRE, tkun tista' tibni RDS fuq Kubernetes.

Dejjem nirrakkomanda li kulħadd jeżerċita kawtela estrema meta jmexxi workloads stateful fuq Kubernetes. Ħafna nies li jistaqsu “nista’ nmexxi workloads stateful fuq Kubernetes” m’għandhomx biżżejjed esperjenza ma’ Kubernetes, u ħafna drabi bl-ammont ta’ xogħol li qed jistaqsu dwaru.

Allura, għandek tmexxi Kafka fuq Kubernetes? Mistoqsija kontro: Kafka se jaħdem aħjar mingħajr Kubernetes? Huwa għalhekk li rrid nenfasizza f'dan l-artikolu kif Kafka u Kubernetes jikkumplimentaw lil xulxin, u x'iżvantaġġi jistgħu jiġu meta tgħaqqadhom.

Ħin tat-tlestija

Ejja nitkellmu dwar il-ħaġa bażika - l-ambjent runtime innifsu

proċess

Is-sensara Kafka huma favur is-CPU. TLS jista' jintroduċi xi overhead. Madankollu, il-klijenti Kafka jistgħu jkunu aktar intensivi fuq is-CPU jekk jużaw il-kriptaġġ, iżda dan ma jaffettwax lis-sensara.

Memorja

Is-sensara Kafka jieklu l-memorja. Id-daqs tal-borġ JVM huwa ġeneralment limitat għal 4-5 GB, iżda ser ikollok bżonn ukoll ħafna memorja tas-sistema peress li Kafka juża l-cache tal-paġna b'mod qawwi ħafna. F'Kubernetes, issettja l-limiti tar-riżorsi tal-kontejners u talba kif xieraq.

Ħażna tad-dejta

Il-ħażna tad-dejta f'kontenituri hija effimera - id-dejta tintilef meta terġa' tibda. Għad-dejta Kafka tista' tuża volum emptyDir, u l-effett se jkun simili: id-dejta tas-sensar tiegħek tintilef wara t-tlestija. Il-messaġġi tiegħek xorta jistgħu jinħażnu fuq sensara oħra bħala repliki. Għalhekk, wara bidu mill-ġdid, is-sensar li falla l-ewwel irid jirreplika d-dejta kollha, u dan il-proċess jista 'jieħu ħafna ħin.

Dan huwa għaliex għandek tuża ħażna tad-data fit-tul. Ħalliha tkun ħażna fit-tul mhux lokali bis-sistema tal-fajls XFS jew, b'mod aktar preċiż, ext4. Tużax NFS. Wissejtkom. Il-verżjonijiet tal-NFS v3 jew v4 mhux se jaħdmu. Fil-qosor, is-sensar Kafka se jikkraxxja jekk ma jistax iħassar id-direttorju tad-dejta minħabba l-problema ta '"stupid rename" fl-NFS. Jekk għadni ma kkonvinkejtx, b'attenzjoni kbira aqra dan l-artiklu. Il-maħżen tad-dejta għandu jkun mhux lokali sabiex Kubernetes ikun jista 'jagħżel node ġdid b'mod aktar flessibbli wara bidu mill-ġdid jew rilokazzjoni.

Network

Bħal fil-biċċa l-kbira tas-sistemi distribwiti, il-prestazzjoni ta' Kafka hija dipendenti ħafna fuq iż-żamma tal-latenza tan-netwerk għall-minimu u l-wisa' tal-frekwenza għall-massimu. Tippruvax tospita s-sensara kollha fuq l-istess node, peress li dan inaqqas id-disponibbiltà. Jekk node Kubernetes ifalli, il-cluster Kafka kollu jfalli. Ukoll, tferrex ir-raggruppament Kafka fuq ċentri tad-dejta kollha. L-istess jgħodd għall-cluster Kubernetes. Kompromess tajjeb f'dan il-każ huwa li tagħżel żoni ta 'disponibbiltà differenti.

Konfigurazzjoni

Manifesti regolari

Il-websajt Kubernetes għandha gwida tajba ħafna dwar kif tikkonfigura ZooKeeper billi tuża manifesti. Peress li ZooKeeper huwa parti minn Kafka, dan huwa post tajjeb biex tibda ssir familjari ma 'liema kunċetti Kubernetes japplikaw hawn. Ladarba tifhem dan, tista 'tuża l-istess kunċetti ma' cluster Kafka.

  • Taħt: Pod hija l-iżgħar unità skjerata f'Kubernetes. Pod fih il-piż tax-xogħol tiegħek, u l-pod innifsu jikkorrispondi għal proċess fil-cluster tiegħek. Pod fih kontenitur wieħed jew aktar. Kull server ZooKeeper fl-ensemble u kull sensar fil-cluster Kafka se jimxu f'pod separat.
  • StatefulSet: StatefulSet huwa oġġett Kubernetes li jieħu ħsieb bosta xogħolijiet stateful, u tali workloads jeħtieġu koordinazzjoni. StatefulSets jipprovdu garanziji dwar l-ordni tal-imżiewed u l-uniċità tagħhom.
  • Servizzi bla ras: Is-servizzi jippermettulek li tneħħi l-imżiewed mill-klijenti billi tuża isem loġiku. Kubernetes f'dan il-każ huwa responsabbli għall-ibbilanċjar tat-tagħbija. Madankollu, meta jħaddmu workloads stateful, bħal ZooKeeper u Kafka, il-klijenti jeħtieġ li jikkomunikaw ma 'istanza speċifika. Dan huwa fejn is-servizzi bla ras ikunu utli: f'dan il-każ, il-klijent xorta jkollu isem loġiku, iżda ma jkollokx għalfejn tikkuntattja lill-pod direttament.
  • Volum ta 'ħażna fit-tul: Dawn il-volumi huma meħtieġa biex jiġi kkonfigurat il-ħażna persistenti tal-blokk mhux lokali msemmija hawn fuq.

Fuq Yolean Jipprovdi sett komprensiv ta' manifesti biex jgħinek tibda b'Kafka fuq Kubernetes.

Ċarts tat-tmun

Helm huwa maniġer tal-pakketti għal Kubernetes li jista 'jitqabbel mal-maniġers tal-pakketti tal-OS bħal yum, apt, Homebrew jew Chocolatey. Jagħmilha faċli biex jiġu installati pakketti ta' softwer predefiniti deskritti fit-tabelli Helm. Tabella ta' Helm magħżula tajjeb tagħmel il-kompitu diffiċli ta' kif tikkonfigura sew il-parametri kollha biex tuża Kafka fuq Kubernetes faċli. Hemm diversi dijagrammi Kafka: dik uffiċjali tinsab f'kundizzjoni ta' inkubatur, hemm wieħed minn junction, wieħed aktar - minn Bitnami.

Operaturi

Minħabba li Helm għandu ċerti nuqqasijiet, għodda oħra qed tikseb popolarità konsiderevoli: l-operaturi Kubernetes. L-operatur mhux biss jippakkja softwer għal Kubernetes, iżda jippermettilek ukoll li tuża tali softwer u timmaniġġjah.

Fil-lista operaturi tal-għaġeb Jissemmew żewġ operaturi għal Kafka. Wieħed minnhom - Strimzi. Bi Strimzi, huwa faċli li l-grupp Kafka tiegħek jibda jaħdem fi ftit minuti. Prattikament l-ebda konfigurazzjoni mhi meħtieġa, barra minn hekk, l-operatur innifsu jipprovdi xi karatteristiċi sbieħ, pereżempju, encryption TLS minn punt għal punt fi ħdan il-cluster. Konfluwenti jipprovdi wkoll operatur proprju.

Produttività

Huwa importanti li tittestja l-prestazzjoni billi tagħmel benchmarking tal-istanza Kafka tiegħek. Testijiet bħal dawn jgħinuk issib ostakoli potenzjali qabel ma jseħħu l-problemi. Fortunatament, Kafka diġà jipprovdi żewġ għodod għall-ittestjar tal-prestazzjoni: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. Agħmel użu attiv minnhom. Għal referenza, tista’ tirreferi għar-riżultati deskritti fi din il-kariga Jay Kreps, jew tiffoka fuq din ir-reviżjoni Amazon MSK minn Stéphane Maarek.

Operazzjonijiet

Monitoraġġ

It-trasparenza fis-sistema hija importanti ħafna - inkella ma tifhemx x'qed jiġri fiha. Illum hemm sett ta 'għodda solidu li jipprovdi monitoraġġ ibbażat fuq metriċi fl-istil nattiv tas-sħab. Żewġ għodod popolari għal dan il-għan huma Prometheus u Grafana. Prometheus jista 'jiġbor metriċi mill-proċessi Java kollha (Kafka, Zookeeper, Kafka Connect) billi juża esportatur JMX - bl-aktar mod sempliċi. Jekk iżżid il-metriċi ta' cAdvisor, tista' tifhem aktar bis-sħiħ kif jintużaw ir-riżorsi f'Kubernetes.

Strimzi għandu eżempju konvenjenti ħafna ta' dashboard Grafana għal Kafka. Viżwalizza metriċi ewlenin, pereżempju, dwar is-setturi li mhumiex replikati biżżejjed jew dawk li huma offline. Kollox huwa ċar ħafna hemmhekk. Dawn il-metriċi huma kkumplimentati minn informazzjoni dwar l-użu tar-riżorsi u l-prestazzjoni, kif ukoll indikaturi tal-istabbiltà. Allura ikollok monitoraġġ bażiku tal-cluster Kafka għal xejn!

Kafka fuq Kubernetes huwa tajjeb?

Sors: streamzi.io/docs/master/#kafka_dashboard

Ikun sabiħ li tissupplimenta dan kollu bil-monitoraġġ tal-klijenti (metriċi fuq il-konsumaturi u l-produtturi), kif ukoll il-monitoraġġ tal-latency (għal dan hemm bejta) u monitoraġġ minn tarf sa tarf - għal dan l-użu Kafka Monitor.

Logging

Il-qtugħ huwa kompitu kritiku ieħor. Kun żgur li l-kontenituri kollha fl-installazzjoni Kafka tiegħek huma logged stdout и stderr, u tiżgura wkoll li l-cluster Kubernetes tiegħek jaggrega r-zkuk kollha f'infrastruttura ċentrali tal-illoggjar, eż. Elasticsearch.

Kontroll funzjonali

Kubernetes juża sondi ta 'ħajja u prontezza biex jiċċekkja jekk il-miżwed tiegħek humiex qed jaħdmu b'mod normali. Jekk il-kontroll tal-ħajja jonqos, Kubernetes iwaqqaf dak il-kontenitur u mbagħad jerġa’ jibda awtomatikament jekk il-politika tal-bidu mill-ġdid tiġi stabbilita kif xieraq. Jekk il-kontroll tal-prontezza jonqos, Kubernetes jiżola l-pod minn talbiet ta' servizz. Għalhekk, f'każijiet bħal dawn, l-intervent manwali m'għadux meħtieġ għal kollox, li huwa vantaġġ kbir.

Tmexxija ta' aġġornamenti

StatefulSets jappoġġjaw aġġornamenti awtomatiċi: jekk tagħżel l-istrateġija RollingUpdate, kull wieħed taħt Kafka jiġi aġġornat min-naħa tiegħu. B'dan il-mod, il-ħin ta 'waqfien jista' jitnaqqas għal żero.

Skalar

L-iskala ta' cluster Kafka mhix biċċa xogħol faċli. Madankollu, Kubernetes jagħmilha faċli ħafna li tiskala l-imżiewed għal ċertu numru ta 'repliki, li jfisser li tista' tiddefinixxi b'mod dikjarattiv kemm sensara Kafka kif tixtieq. L-iktar ħaġa diffiċli f'dan il-każ hija li s-setturi jiġu assenjati mill-ġdid wara li jiżdiedu jew qabel jitnaqqsu. Għal darb'oħra, Kubernetes jgħinek f'dan il-kompitu.

Amministrazzjoni

Il-kompiti relatati mal-amministrazzjoni tal-cluster Kafka tiegħek, bħall-ħolqien ta’ suġġetti u s-setturi mill-ġdid, jistgħu jsiru bl-użu ta’ skripts tal-qoxra eżistenti billi tiftaħ l-interface tal-linja tal-kmand fil-miżwed tiegħek. Madankollu, din is-soluzzjoni mhix sabiħa ħafna. Strimzi jappoġġja l-immaniġġjar ta' suġġetti bl-użu ta' operatur differenti. Hemm xi lok għal titjib hawn.

Backup u restawr

Issa d-disponibbiltà ta 'Kafka se tiddependi wkoll fuq id-disponibbiltà ta' Kubernetes. Jekk il-cluster Kubernetes tiegħek ifalli, allura fl-agħar xenarju, il-cluster Kafka tiegħek ifalli wkoll. Skont il-liġi ta 'Murphy, dan żgur se jiġri, u int titlef id-data. Biex tnaqqas dan it-tip ta 'riskju, għandek kunċett backup tajjeb. Tista 'tuża MirrorMaker, għażla oħra hija li tuża S3 għal dan, kif deskritt f'dan post minn Zalando.

Konklużjoni

Meta taħdem ma 'clusters Kafka ta' daqs żgħir jew medju, definittivament ta 'min juża Kubernetes peress li jipprovdi flessibilità addizzjonali u jissimplifika l-esperjenza tal-operatur. Jekk għandek rekwiżiti sinifikanti ħafna ta 'latency u/jew throughput mhux funzjonali, allura jista' jkun aħjar li tikkunsidra xi għażla oħra ta 'skjerament.

Sors: www.habr.com

Żid kumment