Tislijiet, Habr!
F'ħin wieħed, konna l-ewwel li nintroduċu s-suġġett fis-suq Russu
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
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
- 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
Ċ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
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
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
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!
Sors:
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
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ż.
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
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