Kafka li ser Kubernetes baş e?

Silav, Habr!

Di demekê de, em yekem bûn ku mijarê bi bazara Rûsyayê re danasîn Kafka û berdewam bike şop ji bo pêşveçûna wê. Bi taybetî, me mijara têkiliya Kafka û Kubernetes. Çavdêr (û pir baldar) gotara ev mijar di cotmeha sala borî de di bin nivîskariya Gwen Shapira de li ser bloga Confluent hate weşandin. Îro em dixwazin bala we bikşînin ser gotareke nûtir a meha Nîsanê ya Johann Gyger, ku her çendî di sernavê de bê lekeyek pirsyar nebe jî, mijarê bi rengekî maqûltir vekolîne, nivîsê bi lînkên balkêş ve girêdide. Ji kerema xwe heke hûn dikarin wergera belaş a "meymûna kaosê" li me biborin!

Kafka li ser Kubernetes baş e?

Pîrozbahiyê

Kubernetes ji bo birêvebirina bargiraniyên bêdewlet hatî çêkirin. Bi gelemperî, bargiraniyên weha di forma mîmariya mîkro-xizmetê de têne pêşkêş kirin, ew sivik in, bi rengek horîzontal baş têne pîvandin, prensîbên serîlêdanên 12-faktorî dişopînin, û dikarin bi vekêşker û meymûnên kaosê re bixebitin.

Li aliyê din Kafka di esasê xwe de wekî databasek belavbûyî tevdigere. Ji ber vê yekê, dema ku hûn dixebitin, divê hûn bi dewletê re mijûl bibin, û ew ji mîkroxizmetek pir girantir e. Kubernetes piştgirî dide barkirinên dewletî, lê wekî ku Kelsey Hightower di du tweet-an de destnîşan dike, divê ew bi baldarî bêne girtin:

Hin kes hîs dikin ku ger hûn Kubernetes bixin nav xebatek dewletî, ew dibe databasek bi tevahî rêvekirî ku dijberî RDS-ê dike. Ev xelet e. Dibe ku, heke hûn têra xwe dijwar bixebitin, hêmanên din lê zêde bikin û tîmek endezyarên SRE bikişîne, hûn ê karibin RDS li ser Kubernetes ava bikin.

Ez her gav pêşniyar dikim ku her kes dema ku li ser Kubernetes bargiraniyên karûbarê dewletî dimeşîne hişyariyek pir zêde bike. Pir kesên ku dipirsin "ez dikarim li ser Kubernetes bargiraniyên dewletî bimeşînim" bi Kubernetes re xwedan ezmûnek têr nînin, û bi gelemperî bi barê xebata ku ew jê dipirsin.

Ji ber vê yekê, divê hûn Kafka li ser Kubernetes bimeşînin? Bersiva pirsê: Kafka bêyî Kubernetes dê çêtir bixebite? Ji ber vê yekê ez dixwazim di vê gotarê de ronî bikim ka Kafka û Kubernetes çawa hevûdu temam dikin, û bi berhevkirina wan re çi xeletî dikarin werin.

Dema qedandinê

Ka em li ser tiştê bingehîn biaxivin - jîngeha dema xebitandinê bixwe

pêvajoya

Brokerên Kafka dostê CPU-yê ne. TLS dibe ku hin serekî destnîşan bike. Lêbelê, xerîdarên Kafka heke şîfrekirinê bikar bînin dibe ku CPU-ê pirtir bin, lê ev bandorê li brokeran nake.

bîra

Brokerên Kafka bîrê dixwin. Mezinahiya pelê JVM bi gelemperî bi 4-5 GB ve sînorkirî ye, lê hûn ê hewceyê pir bîranîna pergalê jî bikin ji ber ku Kafka cache rûpelê pir giran bikar tîne. Di Kubernetes de, çavkaniya konteynerê saz bikin û li gorî vê yekê sînorên daxwaz bikin.

store Data

Pargîdaniya daneyê di konteyneran de domdar e - dema ku ji nû ve dest pê dike dane winda dibin. Ji bo daneyên Kafka hûn dikarin cildekê bikar bînin emptyDir, û bandor dê wekhev be: daneyên brokera we dê piştî qedandinê winda bibin. Peyamên we hîn jî dikarin li ser brokerên din wekî replica werin hilanîn. Ji ber vê yekê, piştî ji nû ve destpêkirinê, divê brokerê têkçûyî pêşî hemî daneyan dubare bike, û ev pêvajo dikare gelek dem bigire.

Ji ber vê yekê divê hûn hilanîna daneya demdirêj bikar bînin. Bila ew bi pergala pelê XFS-ê an jî, bi rastî, ext4-ê hilanîna demdirêj-ne-herêmî be. NFS bikar neynin. Min hûn hişyar kirin. Guhertoyên NFS v3 an v4 dê nexebitin. Bi kurtasî, ger ku ew nekare pelrêça daneyê jê bibe, ji ber pirsgirêka "navkirina navê ehmeqî" ya di NFS de, brokera Kafka dê têk bibe. Ger min heta niha we qane nekiribe, pir bi baldarî vê gotarê bixwînin. Pêdivî ye ku dikana daneyê ne-herêmî be da ku Kubernetes bikaribe bi nermîtir girêkek nû hilbijêre piştî ji nû ve destpêkirinê an veguheztinê.

Network

Mîna piraniya pergalên belavbûyî, performansa Kafka pir bi girtina derengiya torê ya herî kêm û bandpêdeyê ya herî zêde ve girêdayî ye. Hewl nekin ku hemî brokeran li ser heman girêkê mêvandar bikin, ji ber ku ev ê hebûna kêm bike. Ger girêkek Kubernetes têk biçe, dê tevahiya koma Kafka têk biçe. Di heman demê de, koma Kafka li seranserê navendên daneyê belav nekin. Heman tişt ji bo koma Kubernetes jî derbas dibe. Di vê rewşê de lihevhatinek baş ev e ku hûn deverên cûda yên hebûna hilbijêrin.

Guhertin

Manîfestoyên bi rêkûpêk

Malpera Kubernetes heye rêberê pir baş li ser meriv çawa ZooKeeper bi karanîna manifestan vesaz dike. Ji ber ku ZooKeeper beşek Kafka ye, ev cîhek baş e ku meriv dest bi nasîna ku têgehên Kubernetes li vir bicîh tîne nas bike. Dema ku hûn vê yekê fêm bikin, hûn dikarin heman têgînan bi komek Kafka re bikar bînin.

  • Di bin: Pod di Kubernetes de yekîneya herî piçûk e ku dikare were bicîh kirin. Pod barê xebata we dihewîne, û pod bixwe pêvajoyek di koma we de têkildar e. Kulîlk yek an çend konteynir dihewîne. Her serverek ZooKeeper di komê de û her brokerek di koma Kafka de dê di podek cûda de bixebite.
  • StatefulSet: StatefulSet objeyek Kubernetes e ku gelek barkêşên kargêrî yên dewletî digire dest, û barkêşên weha hewceyê koordînasyonê ye. StatefulSets di derbarê rêzkirina pods û bêhempabûna wan de garantî peyda dikin.
  • Xizmetên bê serî: Karûbar dihêlin ku hûn bi karanîna navek mentiqî ve pod ji xerîdaran veqetînin. Kubernetes di vê rewşê de berpirsiyariya hevsengiya barkirinê ye. Lêbelê, dema ku barkêşên karûbarê dewletdar, wekî ZooKeeper û Kafka dixebitin, pêdivî ye ku xerîdar bi mînakek taybetî re têkilî daynin. Li vir karûbarên bêserûber bi kêr tê: Di vê rewşê de, xerîdar dê hîn navek mentiqî hebe, lê hûn ê ne hewce ne ku rasterast bi pod re têkilî daynin.
  • Hêjmara hilanîna demdirêj: Ev cild ji bo mîhengkirina hilanîna domdar a ne-herêmî ya ku li jor hatî behs kirin hewce ne.

li ser Yolean Ji bo ku hûn bi Kafka re li ser Kubernetes dest pê bikin, komek berfireh a manîfestoyan peyda dike.

Helm charts

Helm ji bo Kubernetes rêveberek pakêtê ye ku dikare bi rêveberên pakêta OS-ê yên wekî yum, apt, Homebrew an Chocolatey re were berhev kirin. Ew sazkirina pakêtên nermalava pêşwext ên ku di nexşeyên Helm de têne diyar kirin hêsan dike. Nexşeya Helmê ya baş-bijartî karê dijwar dike ka meriv çawa hemî pîvanan bi rêkûpêk mîheng dike da ku Kafka li Kubernetes bikar bîne. Gelek diagramên Kafka hene: ya fermî heye di rewşa înkubatorê de, yek ji heye Tevlihev, yek din - ji Bitnami.

Operator

Ji ber ku Helm hin kêmasiyên xwe hene, amûrek din jî populerbûnek girîng digire: operatorên Kubernetes. Operator ne tenê nermalavê ji bo Kubernetes pak dike, lê di heman demê de dihêle hûn nermalava weha bicîh bikin û wê îdare bikin.

Di navnîşê de operatorên ecêb Ji bo Kafka du operator têne gotin. Yek ji wan - Strimzi. Bi Strimzi re, hêsan e ku hûn komika Kafka ya xwe di nav çend hûrdeman de saz bikin û bixebitin. Bi rastî konfigurasyonek ne hewce ye, ji bilî vê, operator bixwe hin taybetmendiyên xweş peyda dike, mînakî, şîfrekirina TLS-a-xala di nav komê de. Confluent jî pêşkêş dike operatorê xwe.

Berhemdariyê

Girîng e ku hûn performansê bi pîvandina mînaka Kafka-ya xwe ceribandin. Testên weha dê ji we re bibin alîkar ku hûn kêşeyên potansiyel berî ku pirsgirêk çêbibin bibînin. Xwezî, Kafka jixwe du amûrên ceribandina performansê peyda dike: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. Wan çalak bikar bînin. Ji bo referansê, hûn dikarin li encamên ku di nav de têne diyar kirin de binihêrin ev post Jay Kreps, an balê dikişîne ser ev nirxandin Amazon MSK ji hêla Stéphane Maarek ve.

Operasyon

Ingopandin

Zelalbûna di pergalê de pir girîng e - wekî din hûn ê fêm nekin ka tê de çi diqewime. Îro amûrek zexm heye ku di şêwaza xweya ewr de çavdêrîkirina-based metrîkan peyda dike. Du amûrên populer ên ji bo vê armancê Prometheus û Grafana ne. Prometheus dikare metrîkan ji hemî pêvajoyên Java-yê (Kafka, Zookeeper, Kafka Connect) bi karanîna derhênerek JMX - bi awayê herî hêsan berhev bike. Ger hûn metrîkên cAdvisor lê zêde bikin, hûn dikarin bi tevahî fêm bikin ka çavkanî li Kubernetes çawa têne bikar anîn.

Strimzi ji bo Kafka mînakek pir hêsan a dashboardek Grafana heye. Ew metrîkên sereke xuya dike, ji bo nimûne, di derbarê sektorên kêm-bervekirî an yên ku negirêdayî ne. Li wir her tişt pir zelal e. Van metrîkan ji hêla karanîna çavkaniyê û agahdariya performansê, û her weha nîşaneyên aramiyê ve têne temam kirin. Ji ber vê yekê hûn bêyî tiştek çavdêriya koma Kafka ya bingehîn digirin!

Kafka li ser Kubernetes baş e?

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

Dê xweş be ku hûn van hemî bi çavdêriya xerîdar (metrîkên li ser xerîdar û hilberîneran), û her weha çavdêriya derengiyê (ji bo vê yekê heye burrow) û çavdêriya dawî-bi-dawî - ji bo vê karanîna Kafka Monitor.

Logging

Têketin karekî din ê krîtîk e. Piştrast bike ku hemî konteynerên di sazkirina weya Kafka de têne tomar kirin stdout и stderr, û her weha piştrast bikin ku koma Kubernetes-a we hemî têketin di binesaziyek têketina navendî de berhev dike, mînakî. Elasticsearch.

Testa fînansî

Kubernetes sondajên zindîbûn û amadebûnê bikar tîne da ku kontrol bike ka podên we bi normalî dimeşin. Ger kontrolkirina zindîtiyê têk neçe, Kubernetes dê wê konteynerê rawestîne û dûv re bixweber wê ji nû ve bide destpêkirin ger polîtîkaya ji nû ve destpêkirinê li gorî wê were danîn. Ger kontrolkirina amadebûnê têk nebe, Kubernetes pod ji daxwazên karûbarê veqetîne. Bi vî rengî, di rewşên weha de, êdî destwerdana bi destan nema hewce ye, ku ev yek plusek mezin e.

Nûvekirinan derxistin

StatefulSets nûvekirinên otomatîk piştgirî dikin: heke hûn stratejiya RollingUpdate hilbijêrin, her yek di binê Kafka de dê bi rêzê were nûve kirin. Bi vî rengî, dema domandinê dikare bibe sifir.

Scaling

Pîvankirina komek Kafka ne karekî hêsan e. Lêbelê, Kubernetes pir hêsan dike ku pîvazên li ser hejmarek kopiyan bihejmêre, ev tê vê wateyê ku hûn dikarin bi eşkereyî bi qasî ku hûn dixwazin brokerên Kafka diyar bikin. Tişta herî dijwar di vê rewşê de ji nû ve veqetandina sektoran piştî mezinbûnê an berî kêmbûnê ye. Dîsa, Kubernetes dê di vî karî de ji we re bibe alîkar.

Rêveberî

Karên ku bi rêvebirina koma Kafka ya we re têkildar in, mîna afirandina mijaran û veguheztina sektoran, dikarin bi karanîna skrîptên şêlê yên heyî ve bi vekirina navbeynkariya rêza fermanê di potanên xwe de bêne kirin. Lêbelê, ev çareserî ne pir xweşik e. Strimzi piştgirî dide birêvebirina mijaran bi karanîna operatorek cûda. Li vir hinek cîhê pêşveçûnê heye.

Kopirova Berxwedan û Berxwedan

Niha hebûna Kafka jî dê bi hebûna Kubernetes ve girêdayî be. Ger koma weya Kubernetes têk biçe, wê hingê di senaryoya herî xirab de, koma weya Kafka jî dê têk biçe. Li gorî qanûna Murphy, ev ê bê guman bibe, û hûn ê daneyan winda bikin. Ji bo kêmkirina vî rengî xetereyê, xwedan têgehek piştgiriyek baş be. Hûn dikarin MirrorMaker bikar bînin, vebijarkek din ev e ku hûn ji bo vê yekê S3 bikar bînin, wekî ku di vê yekê de hatî destnîşan kirin koz ji Zalando.

encamê

Dema ku bi komên Kafka yên piçûk û navîn re dixebitin, bê guman hêja ye ku Kubernetes bikar bînin ji ber ku ew nermbûnek zêde peyda dike û ezmûna operatorê hêsan dike. Ger we hewcedariyên derengiya ne-fonksîyonel ên pir girîng û / an rêwerzê hene, wê hingê dibe ku çêtir be ku hûn vebijarkek din a bicîhkirinê bifikirin.

Source: www.habr.com

Add a comment