An bhfuil Kafka ar Kubernetes go maith?

Beannachtaí, Habr!

Ag am amháin, bhí muid ar an gcéad duine a chuir an t-ábhar isteach ar mhargadh na Rúise Kafka agus ar aghaidh rian dá fhorbairt. Go háirithe, fuaireamar ábhar na hidirghníomhaíochta idir Kafka agus Kubernetes. Infheicthe (agus cúramach go leor) airteagal Foilsíodh an t-ábhar seo ar bhlag Confluent siar i mí Dheireadh Fómhair na bliana seo caite faoi údar Gwen Shapira. Ba mhaith linn inniu d’aird a tharraingt ar alt níos déanaí ó mhí Aibreáin le Johann Gyger, a scrúdaíonn an topaic ar bhealach níos substaintiúla, cé nach bhfuil comhartha ceiste sa teideal aige, agus naisc shuimiúla ag gabháil leis an téacs. Le do thoil logh dúinn an t-aistriúchán saor in aisce ar “moncaí chaos” más féidir leat!

An bhfuil Kafka ar Kubernetes go maith?

Réamhrá

Tá Kubernetes deartha chun ualaí oibre gan stát a láimhseáil. De ghnáth, cuirtear ualaí oibre den sórt sin i láthair i bhfoirm ailtireacht microservice, tá siad éadrom, scála go maith go cothrománach, leanann siad prionsabail na n-iarratas 12-fhachtóir, agus is féidir leo oibriú le scoradáin chiorcaid agus mhoncaí chaos.

Ar an láimh eile, feidhmíonn Kafka go bunúsach mar bhunachar sonraí dáilte. Dá bhrí sin, nuair a bhíonn tú ag obair, caithfidh tú déileáil leis an stát, agus tá sé i bhfad níos troime ná microservice. Tacaíonn Kubernetes le hualaí stáit, ach mar a luann Kelsey Hightower in dhá thweet, ba chóir iad a láimhseáil go cúramach:

Mothaíonn roinnt daoine, má chuireann tú Kubernetes isteach i ualach oibre státmhar, go mbeidh sé ina bhunachar sonraí bainistithe go hiomlán a théann in iomaíocht le RDS. Tá sé seo mícheart. B'fhéidir, má oibríonn tú go crua go leor, cuir comhpháirteanna breise leis agus foireann innealtóirí SRE a mhealladh, beidh tú in ann RDS a thógáil ar bharr Kubernetes.

Molaim i gcónaí do gach duine a bheith fíor-aireach agus iad ag rith ualaí oibre maorga ar Kubernetes. Ní bhíonn go leor taithí ag formhór na ndaoine a fhiafraíonn “an féidir liom ualaí oibre maorga a rith ar Kubernetes” le Kubernetes, agus go minic leis an ualach oibre a bhfuil siad ag cur ceiste faoi.

Mar sin, ar cheart duit Kafka a rith ar Kubernetes? Ceist chuntair: an n-oibreoidh Kafka níos fearr gan Kubernetes? Sin an fáth gur mhaith liom a aibhsiú san Airteagal seo conas a chomhlánaíonn Kafka agus Kubernetes a chéile, agus cad iad na gaistí a d'fhéadfadh teacht le chéile.

Am críochnaithe

Labhraímis faoin rud bunúsach - timpeallacht an ama rite féin

Процесс

Tá bróicéirí Kafka cairdiúil don LAP. Féadfaidh TLS roinnt forchostais a thabhairt isteach. Mar sin féin, d'fhéadfadh go mbeadh cliaint Kafka níos déine ar LAP má úsáideann siad criptiú, ach ní chuireann sé seo isteach ar bhróicéirí.

Память

Itheann bróicéirí Kafka suas cuimhne. Is gnách go mbíonn méid an charn JVM teoranta do 4-5 GB, ach beidh go leor cuimhne córais ag teastáil uait freisin ós rud é go n-úsáideann Kafka an taisce leathanach go mór. I Kubernetes, socraigh acmhainní coimeádáin agus iarr teorainneacha dá réir sin.

Stóras sonraí

Tá stóráil sonraí i gcoimeádáin tharthréimhseach - cailltear sonraí nuair a atosaítear iad. Le haghaidh sonraí Kafka is féidir leat imleabhar a úsáid emptyDir, agus beidh an éifeacht cosúil: caillfear do shonraí bróicéir tar éis a chríochnú. Is féidir do theachtaireachtaí a stóráil fós ar bhróicéirí eile mar mhacasamhla. Dá bhrí sin, tar éis atosú, ní mór don bhróicéir teipthe na sonraí go léir a mhacasamhlú ar dtús, agus féadfaidh an próiseas seo go leor ama a ghlacadh.

Sin é an fáth gur chóir duit stóráil sonraí fadtéarmach a úsáid. Bíodh sé ina stóráil fadtéarmach neamháitiúil le córas comhaid XFS nó, níos cruinne, ext4. Ná húsáid NFS. Thug mé rabhadh duit. Ní oibreoidh leaganacha NFS v3 nó v4. I mbeagán focal, beidh an bróicéir Kafka tuairteála mura féidir leis an eolaire sonraí a scriosadh mar gheall ar an bhfadhb "athainmnithe dúr" i NFS. Más rud é nach bhfuil mé ina luí ort go fóill, go han-chúramach léigh an t-alt seo. Ba cheart go mbeadh an stór sonraí neamh-áitiúil ionas gur féidir le Kubernetes nód nua a roghnú ar bhealach níos solúbtha tar éis atosú nó athlonnú.

Líonra

Mar is amhlaidh i gcás an chuid is mó de na córais dáilte, tá feidhmíocht Kafka ag brath go mór ar fhola líonra a choinneáil chomh híseal agus is féidir agus bandaleithead chomh fada agus is féidir. Ná déan iarracht gach bróicéir a óstáil ar an nód céanna, toisc go laghdóidh sé seo infhaighteacht. Má theipeann ar nód Kubernetes, teipfidh an bhraisle Kafka ar fad. Chomh maith leis sin, ná scaip braisle Kafka thar lárionaid sonraí iomlána. Baineann an rud céanna le braisle Kubernetes. Comhréiteach maith sa chás seo is ea criosanna infhaighteachta éagsúla a roghnú.

Cumraíocht

manifestos rialta

Tá an láithreán gréasáin Kubernetes treoir an-mhaith faoi ​​conas ZooKeeper a chumrú ag baint úsáide as manifests. Ós rud é gur cuid de Kafka é ZooKeeper, is áit mhaith é seo le tosú le bheith eolach ar na coincheapa Kubernetes atá i bhfeidhm anseo. Nuair a thuigeann tú é seo, is féidir leat na coincheapa céanna a úsáid le braisle Kafka.

  • Faoi: Is é pod an t-aonad imscartha is lú i Kubernetes. Bíonn d’ualach oibre ar phod, agus comhfhreagraíonn an pod féin do phróiseas i do bhraisle. Tá coimeádán amháin nó níos mó i pod. Reáchtálfar gach freastalaí ZooKeeper sa ensemble agus gach bróicéir sa bhraisle Kafka i pod ar leith.
  • StatefulSet: Is éard is StatefulSet ann ná réad Kubernetes a láimhseálann ualaí oibre iomadúla státacha, agus éilíonn ualaí oibre den sórt sin comhordú. Soláthraíonn StatefulSets ráthaíochtaí maidir le hordú pods agus a n-uathúlacht.
  • Seirbhísí gan cheann: Ligeann seirbhísí duit pods a dhícheangal ó chliaint ag baint úsáide as ainm loighciúil. Tá Kubernetes sa chás seo freagrach as cothromú ualach. Mar sin féin, agus ualaí oibre maorga á n-oibriú acu, mar ZooKeeper agus Kafka, ní mór do chliaint cumarsáid a dhéanamh le cás sonrach. Seo nuair a bhíonn seirbhísí gan cheann áisiúil: sa chás seo, beidh ainm loighciúil fós ag an gcliant, ach ní bheidh ort teagmháil dhíreach a dhéanamh leis an pod.
  • Toirt stórála fadtéarmach: Tá na méideanna seo ag teastáil chun an stóráil leanúnach bloc neamh-áitiúil thuasluaite a chumrú.

Ar Yolean Soláthraíonn sé sraith chuimsitheach manifests chun cabhrú leat tosú le Kafka ar Kubernetes.

Cairteacha Helm

Is bainisteoir pacáiste é Helm do Kubernetes is féidir a chur i gcomparáid le bainisteoirí pacáiste OS mar yum, apt, Homebrew nó Chocolatey. Déanann sé éasca pacáistí bogearraí réamhshainithe a shuiteáil a bhfuil cur síos orthu i gcairteacha Helm. Déanann cairt Helm dea-roghnaithe an tasc deacair maidir le conas na paraiméadair go léir a chumrú i gceart chun Kafka a úsáid ar Kubernetes éasca. Tá roinnt léaráidí Kafka ann: tá an ceann oifigiúil suite i riocht gorlainne, tá ceann ó Confluent, ceann amháin níos mó - ó BitNami.

Oibreoirí

Toisc go bhfuil easnaimh áirithe ag Helm, tá an-tóir ar uirlis eile: oibreoirí Kubernetes. Ní hamháin go bpacálann an t-oibreoir bogearraí do Kubernetes, ach ligeann sé duit bogearraí den sórt sin a imscaradh agus é a bhainistiú.

Sa liosta oibreoirí iontacha Luaitear dhá oibreoir do Kafka. Ceann acu - Strimzi. Le Strimzi, tá sé éasca do bhraisle Kafka a chur ar bun agus a reáchtáil i nóiméid. Beagnach aon chumraíocht atá ag teastáil, ina theannta sin, soláthraíonn an t-oibreoir féin roinnt gnéithe deas, mar shampla, pointe-go-pointe TLS criptithe laistigh den bhraisle. Soláthraíonn Confluent freisin oibreoir féin.

Táirgiúlacht

Tá sé tábhachtach feidhmíocht a thástáil trí do shampla Kafka a thagarmharcáil. Cabhróidh tástálacha den sórt sin leat scrogaill ionchasacha a aimsiú sula dtagann fadhbanna chun cinn. Ar ámharaí an tsaoil, soláthraíonn Kafka dhá uirlis tástála feidhmíochta cheana féin: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. Bain úsáid ghníomhach astu. Le haghaidh tagartha, is féidir leat tagairt a dhéanamh do na torthaí a thuairiscítear i an post seo Jay Kreps, nó díriú ar an léirmheas seo Amazon MSK le Stéphane Maarek.

Oibríochtaí

Monatóireacht

Tá trédhearcacht sa chóras an-tábhachtach - ar shlí eile ní thuigfidh tú cad atá ag tarlú ann. Sa lá atá inniu ann tá foireann uirlisí soladach a sholáthraíonn monatóireacht bunaithe ar mhéadracht sa stíl dhúchasach scamall. Dhá uirlis mhóréilimh chun na críche seo ná Prometheus agus Grafana. Is féidir le Prometheus méadracht a bhailiú ó gach próiseas Java (Kafka, Zookeeper, Kafka Connect) ag baint úsáide as onnmhaireoir JMX - ar an mbealach is simplí. Má chuireann tú méadracht cAdvisor leis, is féidir leat níos iomláine a thuiscint conas a úsáidtear acmhainní in Kubernetes.

Tá sampla an-áisiúil ag Strimzi de chlár Grafana do Kafka. Amharcann sé príomhmhéadracht, mar shampla, faoi earnálacha nach bhfuil a macasamhlú go leor nó na cinn atá as líne. Tá gach rud an-soiléir ann. Comhlánaítear na méadrachtaí sin le húsáid acmhainní agus faisnéis feidhmíochta, chomh maith le táscairí cobhsaíochta. Mar sin gheobhaidh tú monatóireacht bhunúsach braisle Kafka gan aon rud!

An bhfuil Kafka ar Kubernetes go maith?

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

Bheadh ​​​​sé deas é seo go léir a fhorlíonadh le monatóireacht cliant (méadracht ar thomhaltóirí agus táirgeoirí), chomh maith le monatóireacht latency (do seo tá Burrow) agus monatóireacht deireadh le deireadh - don úsáid seo Monatóir Kafka.

Logáil

Tasc ríthábhachtach eile is ea an logáil. Cinntigh go bhfuil logáilte isteach ar gach coimeádán i do shuiteáil Kafka stdout и stderr, agus a chinntiú freisin go gcomhiomlánaíonn do bhraisle Kubernetes gach logáil isteach i mbonneagar logála lárnach, e.g. Elasticsearch.

Seiceáil feidhmiúil

Úsáideann Kubernetes tóireadóirí beogachta agus ullmhachta chun a sheiceáil an bhfuil do pods ag rith de ghnáth. Má theipeann ar an seiceáil beocht, stopfaidh Kubernetes an coimeádán sin agus ansin déanfaidh sé é a atosú go huathoibríoch má tá an polasaí atosú socraithe dá réir sin. Má theipeann ar an tseiceáil ullmhachta, leithlisíonn Kubernetes an pod ó iarratais seirbhíse. Mar sin, i gcásanna den sórt sin, ní gá idirghabháil láimhe a thuilleadh ar chor ar bith, rud is buntáiste mór.

Nuashonruithe á rolladh amach

Tacaíonn StatefulSets le nuashonruithe uathoibríocha: má roghnaíonn tú an straitéis RollingUpdate, déanfar gach ceann faoi Kafka a nuashonrú ar a seal. Ar an mbealach seo, is féidir downtime a laghdú go nialas.

Scálú

Ní tasc éasca é braisle Kafka a scálú. Mar sin féin, déanann Kubernetes sé an-éasca pods a scála go líon áirithe macasamhla, rud a chiallaíonn gur féidir leat an oiread bróicéirí Kafka agus is mian leat a shainiú go declaratively. Is é an rud is deacra sa chás seo ná earnálacha a athshannadh tar éis scálaithe suas nó roimh scálú síos. Arís, cabhróidh Kubernetes leat leis an tasc seo.

Riarachán

Is féidir tascanna a bhaineann le do bhraisle Kafka a riar, mar shampla topaicí a chruthú agus earnálacha a athshannadh, a dhéanamh ag baint úsáide as scripteanna bhlaosc atá ann cheana féin trí chomhéadan na n-orduithe a oscailt i do pods. Mar sin féin, níl an réiteach seo an-álainn. Tacaíonn Strimzi le hábhair a bhainistiú ag baint úsáide as oibreoir difriúil. Tá spás le feabhsú anseo.

Cúltaca agus athchóiriú

Anois beidh infhaighteacht Kafka ag brath freisin ar infhaighteacht Kubernetes. Má theipeann ar do bhraisle Kubernetes, ansin sa chás is measa, teipfidh ar do bhraisle Kafka freisin. De réir dlí Murphy, is cinnte go dtarlóidh sé seo, agus caillfidh tú sonraí. Chun an cineál riosca seo a laghdú, bíodh coincheap cúltaca maith agat. Is féidir leat MirrorMaker a úsáid, rogha eile ná S3 a úsáid le haghaidh seo, mar a thuairiscítear anseo phost ó Zalando.

Conclúid

Agus tú ag obair le braislí Kafka beaga go meánmhéide, is cinnte gur fiú Kubernetes a úsáid mar go soláthraíonn sé solúbthacht breise agus go simplíonn sé taithí an oibreora. Má tá riachtanais fholaigh agus/nó tréchur neamhfheidhmiúil an-suntasach agat, b’fhéidir gurbh fhearr rogha imlonnaithe eile a mheas.

Foinse: will.com

Add a comment