ProHoster > Блог > Nchịkwa > Ịchọpụta nha kwesịrị ekwesị maka ụyọkọ Kafka na Kubernetes
Ịchọpụta nha kwesịrị ekwesị maka ụyọkọ Kafka na Kubernetes
Rịba ama. ntụgharị asụsụ.: N'isiokwu a, Banzai Cloud na-ekerịta ihe atụ nke otu esi eji ngwá ọrụ omenala ya mee ka Kafka dị mfe iji n'ime Kubernetes. Ntuziaka ndị a na-egosi otu ị nwere ike isi chọpụta oke akụrụngwa gị wee hazie Kafka n'onwe ya iji nweta ihe achọrọ achọrọ.
Apache Kafka bụ usoro mgbasa ozi na-ekesa maka ịmepụta usoro mgbasa ozi a pụrụ ịdabere na ya, nke nwere ike ịgbatị na arụ ọrụ dị elu. Enwere ike ịgbatị ikike ya dị egwu site na iji Kubernetes. N'ihi na nke a anyị mepụtara Onye ọrụ Kafka mepere emepe na ngwá ọrụ a na-akpọ Supertubs. Ha na-ahapụ gị ka ị na-agba ọsọ Kafka na Kubernetes ma jiri atụmatụ ya dị iche iche, dị ka nhazi nhazi nke onye na-ere ahịa, nhazi nke dabeere na metric na nhazigharị, mmata rack, "dị nro" (mara mma) na-ewepụta mmelite, wdg.
Gbalịa Supertubes na ụyọkọ gị:
curl https://getsupertubes.sh | sh и supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>
Ma ọ bụ kọntaktị akwụkwọ. Ị nwekwara ike ịgụ banyere ụfọdụ ikike nke Kafka, ọrụ nke ejiri ya na-akpaghị aka site na iji Supertubes na Kafka onye ọrụ. Anyị edeela gbasara ha na blọọgụ:
Mgbe ị na-ekpebi ibubata ụyọkọ Kafka na Kubernetes, ọ ga-abụ na ị ga-eche ihe ịma aka nke ịchọpụta nha kacha mma nke akụrụngwa dị n'okpuru na mkpa ọ dị ịmezi nhazi Kafka gị iji mezuo ihe ndị a chọrọ. A na-ekpebi oke arụmọrụ nke onye na-ere ahịa ọ bụla site na arụmọrụ nke akụrụngwa akụrụngwa dị n'okpuru, dị ka ebe nchekwa, processor, ọsọ diski, bandwidth netwọkụ, wdg.
Dị ka o kwesịrị, nhazi onye na-ere ahịa kwesịrị ịdị ka ihe niile akụrụngwa na-eji ike ha niile. Agbanyeghị, na ndụ n'ezie, ntọlite a dị mgbagwoju anya. O yikarịrị ka ndị ọrụ ga-ahazi ndị na-ere ahịa ka ha nwekwuo ike iji otu akụkụ ma ọ bụ abụọ (disk, ebe nchekwa, ma ọ bụ processor). N'ikwu okwu n'ozuzu, onye na-ere ahịa na-egosi arụmọrụ kachasị elu mgbe nhazi ya na-enye ohere iji ngwa ngwa ngwa mee ihe ruo n'ókè ya. N'ụzọ dị otú a, anyị nwere ike nweta echiche siri ike nke ibu nke otu onye na-ere ahịa nwere ike ijikwa.
N'ụzọ doro anya, anyị nwekwara ike ịkọ ọnụ ọgụgụ ndị na-ere ahịa chọrọ ijikwa ibu enyere. Otú ọ dị, na omume enwere ọtụtụ nhọrọ nhazi na ọkwa dị iche iche nke na ọ siri ike (ma ọ bụrụ na ọ gaghị ekwe omume) iji nyochaa arụmọrụ nke otu nhazi. N'ikwu ya n'ụzọ ọzọ, ọ na-esiri ike ịhazi nhazi nke dabeere na ụfọdụ arụmọrụ enyere.
Maka ndị ọrụ Supertubes, anyị na-ejikarị usoro a: anyị na-amalite site na nhazi ụfọdụ (ihe akụrụngwa + ntọala), wee tụọ arụmọrụ ya, dozie ntọala ndị na-ere ahịa ma megharịa usoro ahụ ọzọ. Nke a na-eme ruo mgbe ejiri ngwa ngwa nke akụrụngwa rụọ ọrụ nke ọma.
N'ụzọ dị otú a, anyị na-enweta echiche doro anya nke ole ndị na-ere ahịa na ụyọkọ kwesịrị ijikwa ụfọdụ ibu (ọnụọgụ ndị na-ere ahịa na-adaberekwa n'ihe ndị ọzọ, dị ka ọnụ ọgụgụ kacha nta nke nsụgharị ozi iji hụ na resiliency, ọnụ ọgụgụ nke nkebi. ndị isi, wdg). Na mgbakwunye, anyị na-enweta nghọta nke akụrụngwa akụrụngwa chọrọ nha nha kwụ ọtọ.
Isiokwu a ga-ekwu maka usoro anyị na-eme iji nweta ihe kachasị mma na ngwa ngwa ngwa na nhazi mbụ ma tụọ ntinye nke ụyọkọ Kafka. Nhazi nke siri ike na-achọ ma ọ dịkarịa ala ndị na-ere ahịa atọ na-agba ọsọ (min.insync.replicas=3), ekesara n'ofe mpaghara nnweta atọ dị iche iche. Iji hazie, nha na nyochaa akụrụngwa Kubernetes, anyị na-eji ikpo okwu njikwa akpa nke anyị maka igwe ojii ngwakọ - Pipeline. Ọ na-akwado n'ime ụlọ (ọla efu, VMware) na ụdị igwe ojii ise (Alibaba, AWS, Azure, Google, Oracle), yana ngwakọta ọ bụla nke ha.
Echiche na Kafka ụyọkọ akụrụngwa na nhazi
Maka ihe atụ ndị dị n'okpuru, anyị họọrọ AWS dị ka onye na-eweta igwe ojii na EKS dị ka nkesa Kubernetes. Enwere ike ime nhazi nhazi yiri nke ahụ site na iji P.K.E. - Nkesa Kubernetes sitere na Banzai Cloud, nke CNCF kwadoro.
disk
Amazon na-enye dị iche iche Ụdị olu EBS. Na isi gp2 и io1 enwere draịva SSD, agbanyeghị, iji hụ na ntinye dị elu gp2 na-eri kredit chịkọbara (I/O kredit), yabụ anyị họọrọ ụdị ahụ io1, nke na-enye ihe nrụpụta dị elu na-agbanwe agbanwe.
Ụdị ihe atụ
Ọrụ Kafka dabere na cache ibe sistemụ arụmọrụ, yabụ anyị chọrọ oge nwere ebe nchekwa zuru oke maka ndị na-ere ahịa (JVM) na cache ibe. Ihe atụ c5.2 ukwu - mmalite dị mma, ebe ọ nwere 16 GB nke ebe nchekwa na emebere ya ka ọ rụọ ọrụ na EBS. Ọdịmma ya bụ na ọ bụ naanị ike ịnye arụmọrụ kachasị maka ihe karịrị nkeji 30 kwa awa 24 ọ bụla. Ọ bụrụ na ibu ọrụ gị chọrọ ịrụ ọrụ kacha elu n'ime ogologo oge, ịnwere ike ịtụle ụdị ihe atụ ndị ọzọ. Nke ahụ bụ kpọmkwem ihe anyị mere, na-akwụsị na c5.4 ukwu. Ọ na-enye ntinye ntinye kacha elu 593,75Mbps. Ntinye kacha elu nke olu EBS io1 elu karịa ihe atụ c5.4 ukwu, yabụ ihe kacha dị nwayọ nke akụrụngwa nwere ike ịbụ ntinye I / O nke ụdị ihe atụ a (nke ule ibu anyị kwesịkwara ịkwado).
Network
Ntinye netwọk ga-abụrịrị nnukwu ma e jiri ya tụnyere arụmọrụ nke ihe atụ VM na diski, ma ọ bụghị ya, netwọk ahụ na-aghọ ihe mgbochi. N'ọnọdụ anyị, netwọk mmekọrịta c5.4 ukwu na-akwado ọsọ nke ruru 10 Gb/s, nke dị elu nke ukwuu karịa ntinye I/O nke ihe atụ VM.
Nbunye onye na-ere ahịa
Ekwesịrị ibuga ndị na-ere ahịa (ahaziri na Kubernetes) na oghere raara onwe ya nye iji zere ịsọ mpi na usoro ndị ọzọ maka CPU, ebe nchekwa, netwọkụ na akụrụngwa diski.
Ụdị Java
Nhọrọ ezi uche dị na ya bụ Java 11 n'ihi na ọ dakọtara na Docker n'echiche na JVM na-ekpebi nhazi na ebe nchekwa dị na akpa nke onye na-ere ahịa na-agba ọsọ. N'ịmara na oke CPU dị mkpa, JVM n'ime ma na-edobe ọnụ ọgụgụ nke eriri GC na eriri JIT. Anyị na-eji ihe oyiyi Kafka banzaicloud/kafka:2.13-2.4.0, nke gụnyere ụdị Kafka 2.4.0 (Scala 2.13) na Java 11.
Ọ bụrụ na ị ga-achọ ịmụtakwu maka Java/JVM na Kubernetes, lelee akwụkwọ anyị ndị a:
Enwere akụkụ abụọ dị mkpa maka ịhazi ebe nchekwa onye na-ere ahịa: ntọala maka JVM na maka Kubernetes pod. Oke ebe nchekwa edobere maka pọd ga-adịrịrị karịa oke mkpokọ ka JVM nwee ohere maka metaspace Java nke bi na ebe nchekwa nke ya yana maka cache sistemụ arụmọrụ nke Kafka na-eji arụ ọrụ. N'ime ule anyị, anyị malitere ndị na-ere ahịa Kafka na paramita -Xmx4G -Xms2G, na oke ebe nchekwa maka pọd bụ 10 Gi. Biko mara na enwere ike nweta ntọala ebe nchekwa maka JVM na-akpaghị aka -XX:MaxRAMPercentage и -X:MinRAMPercentage, dabere na oke ebe nchekwa maka pọd.
Ntọala nhazi Broker
N'ikwu okwu n'ozuzu, ị nwere ike imeziwanye arụmọrụ site n'ịbawanye myirịta site n'ịbawanye ọnụọgụ nke eriri nke Kafka na-eji. Ihe nhazi ndị ọzọ dị maka Kafka, ọ ka mma. Na ule anyị, anyị malitere site na njedebe nke 6 processors na nke nta nke nta (site na iterations) welitere nọmba ha na 15. Na mgbakwunye, anyị setịpụrụ num.network.threads=12 na ntọala onye na-ere ahịa ka ịbawanye ọnụọgụ nke eri na-enweta data sitere na netwọk wee zipụ ya. Ozugbo achọpụtara na ndị na-ere ahịa na-eso ụzọ enweghị ike ịnata oyiri ngwa ngwa, ha welitere num.replica.fetchers ruo 4 iji bulie ọsọ nke ndị na-ere ahịa na-eso ụzọ na-atụgharị ozi sitere n'aka ndị isi.
Ibu Ibu Ngwá Ọrụ
Ị kwesịrị ijide n'aka na onye na-ebu ibu ahọpụtara adịghị agwụ ike tupu ụyọkọ Kafka (nke a na-agbanye akara) erute oke ibu ya. N'ikwu ya n'ụzọ ọzọ, ọ dị mkpa ịme nyocha mbụ nke ike nke ngwá ọrụ mmepụta ibu, ma họrọkwa ụdị ihe atụ maka ya na ọnụ ọgụgụ zuru ezu nke nhazi na ebe nchekwa. N'okwu a, ngwá ọrụ anyị ga-emepụta ibu karịa ụyọkọ Kafka nwere ike ijikwa. Mgbe ọtụtụ nnwale gasịrị, anyị doziri na mbipụta atọ c5.4 ukwu, nke ọ bụla n'ime ha nwere generator na-agba ọsọ.
Benchmarking
Nleta arụmọrụ bụ usoro ntugharị nke gụnyere usoro ndị a:
ịmepụta akụrụngwa (ụyọkọ EKS, ụyọkọ Kafka, ngwá ọrụ mmepụta ibu, yana Prometheus na Grafana);
na-emepụta ibu maka oge ụfọdụ iji nyochaa ndahie na-enweghị usoro na ihe ngosi arụmọrụ anakọtara;
na-edozi akụrụngwa na nhazi nke onye na-ere ahịa na-adabere na ihe ngosi arụmọrụ a hụrụ;
na-emeghachi usoro ahụ ruo mgbe a ga-enweta ọkwa dị mkpa nke nchịkọta ụyọkọ Kafka. N'otu oge ahụ, ọ ga-abụrịrị na a na-emegharị ya mgbe niile ma gosipụta obere mgbanwe dị na ntinye.
Supertubes CLI maka ụzọ kachasị mfe iji guzobe ụyọkọ Kafka na Kubernetes. A na-arụnye onye na-elekọta ụlọ zoo, onye ọrụ Kafka, Envoy na ọtụtụ akụrụngwa ndị ọzọ ma hazie ya nke ọma iji mee ụyọkọ Kafka dị njikere na Kubernetes.
Maka echichi nnukwu ụlọ ọrụ CLI jiri ntuziaka enyere ebe a.
Ụyọkọ EKS
Kwadebe ụyọkọ EKS nwere ọnụ ndị ọrụ raara onwe ya nye c5.4 ukwu na mpaghara dị iche iche maka pods na ndị na-ere ahịa Kafka, yana ọnụ ụzọ raara onwe ya nye maka onye na-ebu ibu na akụrụngwa nlekota.
Maka isiokwu ọ bụla, ihe ngbanwe bụ 3—uru kacha nta akwadoro maka sistemu mmepụta dị oke.
Ibu Ibu Ngwá Ọrụ
Anyị weputara mbipụta atọ nke igwe na-ebu ibu (nke ọ bụla dere na isiokwu dị iche). Maka pọd ndị na-ebu ibu, ịkwesịrị ịtọ ntọala ọnụ ka edobere ha naanị na oghere ekenyere ha:
Onye na-ebu ibu na-ewepụta ozi nke 512 bytes n'ogologo wee bipụta ya na Kafka na batches nke ozi 500.
Iji arụmụka -required-acks=all A na-ahụta mbipụta a ka ọ ga-aga nke ọma mgbe ndị na-ere ahịa Kafka natara ma kwado ya n'ụdị ozi niile emekọrịtara ọnụ. Nke a pụtara na na benchmark anyị tụrụ ọ bụghị naanị ọsọ nke ndị isi na-anata ozi, kamakwa ndị na-eso ụzọ ha na-emegharị ozi. Ebumnuche nke ule a abụghị iji nyochaa ọsọ ọgụgụ ndị ahịa (ndị ahịa) natara ozi n'oge na-adịbeghị anya nke ka dị na cache ibe OS, yana atụnyere ọsọ ọgụgụ ozi echekwara na diski.
Onye na-ebu ibu na-arụ ọrụ 20 n'otu oge (-workers=20). Onye ọrụ ọ bụla nwere ndị na-emepụta 5 na-ekekọrịta njikọ onye ọrụ na ụyọkọ Kafka. N'ihi ya, onye ọ bụla na-emepụta ihe nwere 100 ndị na-emepụta ihe, ha niile na-ezigakwa ozi na ụyọkọ Kafka.
Nyochaa ahụike nke ụyọkọ ahụ
N'oge ule ibu nke ụyọkọ Kafka, anyị lebakwara anya ahụike ya iji hụ na enweghị mweghachi nke pọd, enweghị mmekọ, yana ntinye kachasị na obere mgbanwe:
Onye na-ebu ibu na-ede ọnụ ọgụgụ ọkọlọtọ gbasara ọnụọgụ ozi e bipụtara na ọnụego njehie. Ọnụego mperi kwesịrị ịdị otu 0,00%.
Njikwa Cruise, nke kafka-operator wepụrụ, na-enye dashboard ebe anyị nwekwara ike nyochaa ọnọdụ nke ụyọkọ ahụ. Ka ilele panel a mee:
supertubes cluster cruisecontrol show -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file>
Ọnụ ego nke ISR (ọnụọgụ nke "in-sync" oyiri) mbelata na mgbasawanye hà nhata 0.
Nsonaazụ nha
Ndị na-ere ahịa 3, nha ozi - 512 bytes
Site na nkewa na-ekesa nke ọma n'ofe ndị na-ere ahịa atọ, anyị nwere ike ịrụ ọrụ ~ 500 Mb/s (ihe dị ka 990 puku ozi kwa nkeji):
Oriri ebe nchekwa nke igwe mebere JVM agafebeghị 2 GB:
Mbupute diski ruru oke ntinye ọnụ I/O na oge atọ ndị na-ere ahịa na-agba na ya:
Site na data na ojiji ebe nchekwa site na ọnụ, ọ na-esote na nchekwa sistemu na caching were ~ 10-15 GB:
Ndị na-ere ahịa 3, nha ozi - 100 bytes
Ka oke ozi na-ebelata, ntinye aka na-agbadata ihe dịka 15-20%: oge ejiri hazie ozi ọ bụla na-emetụta ya. Na mgbakwunye, ihe nrụpụta ihe fọrọ nke nta ka ọ bụrụ okpukpu abụọ.
Ebe ọ bụ na ọnụ ahịa ndị na-ere ahịa ka nwere cores na-ejighị ya eme ihe, enwere ike imeziwanye arụmọrụ site n'ịgbanwe nhazi Kafka. Nke a abụghị ọrụ dị mfe, ya mere, ọ ka mma iji ozi buru ibu rụọ ọrụ.
Ndị na-ere ahịa 4, nha ozi - 512 bytes
Ị nwere ike ịbawanye arụmọrụ nke ụyọkọ Kafka n'ụzọ dị mfe site n'ịgbakwunye ndị na-ere ahịa ọhụrụ na ịnọgide na-enwe nguzozi nke nkebi (nke a na-eme ka ọ bụrụ nkesa nkesa n'etiti ndị na-ere ahịa). N'ọnọdụ anyị, mgbe agbakwunyere onye na-ere ahịa, ntinye ụyọkọ ahụ mụbara ruo ~ 580 Mb/s (~ 1,1 nde ozi kwa nkeji). Uto ahụ wee bụrụ ihe na-erughị ka a tụrụ anya ya: nke a bụ n'ihi enweghị aha nke akụkụ (ọ bụghị ndị na-ere ahịa niile na-arụ ọrụ na ọnụ ọgụgụ kasị elu nke ike ha).
Oriri ebe nchekwa nke igwe JVM dị n'okpuru 2 GB:
Ọrụ nke ndị na-ere ahịa nwere draịva emetụtaghị ahaghị nhata nke akụkụ:
Nchoputa
Enwere ike ịgbasa usoro nkwuputa nke ewepụtara n'elu iji kpuchie ọnọdụ dị mgbagwoju anya nke metụtara ọtụtụ narị ndị na-azụ ahịa, mweghachi, mmelite mkpọgharị, mkpisigharị pọd, wdg. Ihe a niile na-enye anyị ohere ịlele njedebe nke ike ụyọkọ Kafka n'ọnọdụ dị iche iche, chọpụta ihe mgbochi na ọrụ ya ma chọta ụzọ iji luso ha ọgụ.
Anyị haziri Supertubes ka ọ na-ebuga ụyọkọ ngwa ngwa na ngwa ngwa, hazie ya, tinye / wepu ndị na-ere ahịa na isiokwu, zaghachi na ọkwa, wee hụ na Kafka n'ozuzu na-arụ ọrụ nke ọma na Kubernetes. Ebumnuche anyị bụ inyere gị aka itinye uche na isi ọrụ ("ịmepụta" na "na-eri" ozi Kafka), ma hapụ ọrụ siri ike na Supertubes na onye ọrụ Kafka.
Ọ bụrụ na ị nwere mmasị na teknụzụ Banzai Cloud na ọrụ Open Source, denye aha na ụlọ ọrụ na GitHub, LinkedIn ma ọ bụ Twitter.