He maikaʻi anei ʻo Kafka ma Kubernetes?

Aloha mai e Habr!

I kekahi manawa, ʻo mākou ka mea mua i hoʻolauna i ke kumuhana i ka mākeke Lūkini Kafka a hoomau aku alahele no kona ulu ana. Ma keʻano kūikawā, ua loaʻa iā mākou ke kumuhana o ka pilina ma waena o Kafka a me Kubernetes. ʻIke ʻia (a mālama pono) 'atikala ua paʻi ʻia kēia kumuhana ma ka blog Confluent i ʻOkakopa i ka makahiki i hala ma lalo o ka mea kākau a Gwen Shapira. I kēia lā, makemake mākou e huki i kou manaʻo i kahi ʻatikala hou loa mai ʻApelila e Johann Gyger, ʻoiai ʻaʻole me ka ʻole o ka nīnau nīnau ma ke poʻo inoa, e nānā i ke kumuhana ma ke ʻano ʻoi aku ka nui, me ka ʻōlelo me nā loulou hoihoi. E kala mai iā mākou i ka unuhi manuahi o "chaos monkey" inā hiki iā ʻoe!

He maikaʻi anei ʻo Kafka ma Kubernetes?

Hōʻike

Hoʻolālā ʻia ʻo Kubernetes e mālama i nā haʻahaʻa hana ʻole. ʻO ka mea maʻamau, hōʻike ʻia ia mau hana ma ke ʻano o ka microservice architecture, māmā lākou, ʻoi aku ka maikaʻi o ka pae ākea, e hahai i nā loina o nā noi 12-factor, a hiki ke hana me nā mea hoʻokele kaapuni a me nā monkey chaos.

ʻO Kafka, ma ka ʻaoʻao ʻē aʻe, ke hana maoli nei ma ke ʻano he waihona i puʻunaue ʻia. No laila, i ka wā e hana ai, pono ʻoe e hana me ka mokuʻāina, a ʻoi aku ka kaumaha ma mua o kahi microservice. Kākoʻo ʻo Kubernetes i nā ukana mokuʻāina, akā e like me kā Kelsey Hightower i kuhikuhi ai i ʻelua tweets, pono e mālama ʻia lākou me ka mālama:

Manaʻo kekahi poʻe inā e ʻōwili ʻoe iā Kubernetes i loko o kahi haʻahaʻa haʻahaʻa, e lilo ia i waihona hoʻokele piha e hoʻokūkū ana iā RDS. He hewa kēia. Malia paha, inā ʻoe e hana ikaika, hoʻohui i nā mea hou aʻe a huki i kahi hui o nā ʻenekinia SRE, hiki iā ʻoe ke kūkulu i RDS ma luna o nā Kubernetes.

Manaʻo mau au i ka poʻe a pau e akahele loa i ka holo ʻana i nā haʻahaʻa hana kūlana ma nā Kubernetes. ʻAʻole lawa ka ʻike me nā Kubernetes ka hapa nui o ka poʻe e nīnau ana "hiki iaʻu ke holo i nā haʻahaʻa hana ma nā Kubernetes", a pinepine me ka haʻahaʻa hana a lākou e nīnau nei.

No laila, pono ʻoe e holo iā Kafka ma Kubernetes? Nīnau pane: e hana maikaʻi anei ʻo Kafka me ka ʻole o Kubernetes? ʻO ia ke kumu makemake wau e hōʻike i kēia ʻatikala pehea e hoʻokō ai ʻo Kafka lāua ʻo Kubernetes i kekahi i kekahi, a he aha nā pilikia e hiki mai me ka hoʻohui ʻana iā lākou.

Manawa o ka pau ana

E kamaʻilio kākou e pili ana i ka mea maʻamau - ʻo ke kaiapuni runtime ponoʻī

kaʻina

ʻO nā mea kālepa Kafka he CPU aloha. Hiki paha iā TLS ke hoʻokomo i kekahi o luna. Eia nō naʻe, ʻoi aku ka ikaika o nā mea kūʻai aku o Kafka inā hoʻohana lākou i ka hoʻopunipuni, akā ʻaʻole pili kēia i nā brokers.

paʻa

ʻAi ʻo Kafka brokers i ka hoʻomanaʻo. ʻO ka nui o ka puʻu JVM i kaupalena ʻia i 4-5 GB, akā pono ʻoe i ka nui o ka hoʻomanaʻo ʻōnaehana mai ka hoʻohana nui ʻana o Kafka i ka cache ʻaoʻao. Ma Kubernetes, e hoʻonoho i ka punawai pahu a noi i nā palena e like me ia.

Hale kūʻai ʻikepili

He ephemeral ka mālama ʻana i ka ʻikepili i loko o nā ipu - nalowale ka ʻikepili ke hoʻomaka hou. No ka ʻikepili Kafka hiki iā ʻoe ke hoʻohana i kahi leo emptyDir, a e like ka hopena: e nalowale ana kāu ʻikepili broker ma hope o ka pau ʻana. Hiki ke mālama ʻia kāu mau memo ma nā brokers ʻē aʻe ma ke ʻano he kope. No laila, ma hope o ka hoʻomaka hou ʻana, pono e hoʻopili mua ka mea kūʻai aku i nā ʻikepili āpau, a hiki i kēia kaʻina hana ke lawe i ka manawa nui.

ʻO kēia ke kumu e hoʻohana ai ʻoe i ka mālama ʻikepili no ka wā lōʻihi. E waiho i kahi waihona no ka wā lōʻihi me ka ʻōnaehana faila XFS a i ʻole, ʻoi aku ka pololei, ext4. Mai hoʻohana i ka NFS. Ua ao aku au ia oe. ʻAʻole e holo nā mana NFS v3 a i ʻole v4. I ka pōkole, e hāʻule ka mea kūʻai aku ʻo Kafka inā ʻaʻole hiki iā ia ke holoi i ka papa kuhikuhi ʻikepili ma muli o ka pilikia "hōʻano hou" i ka NFS. Inā ʻaʻole wau i hōʻoiaʻiʻo iā ʻoe, e akahele loa heluhelu i keia 'atikala. ʻAʻole pono ka hale kūʻai ʻikepili i ka ʻāina i hiki i nā Kubernetes ke koho maʻalahi i kahi node hou ma hope o ka hoʻomaka hou ʻana a i ʻole ka neʻe ʻana.

Pūnaewele

E like me ka hapa nui o nā ʻōnaehana hoʻolaha, hilinaʻi nui ka hana a Kafka i ka mālama ʻana i ka latency pūnaewele i ka liʻiliʻi a me ka bandwidth i ka nui. Mai ho'āʻo e hoʻokipa i nā brokers āpau ma ka node hoʻokahi, no ka mea e hōʻemi kēia i ka loaʻa. Inā hāʻule ka node Kubernetes, pau ka pūʻulu Kafka holoʻokoʻa. Eia kekahi, mai hoʻopuehu i ka pūʻulu Kafka ma nā kikowaena ʻikepili holoʻokoʻa. Pela no ka hui Kubernetes. ʻO kahi kūpono maikaʻi i kēia hihia ke koho ʻana i nā ʻāpana loaʻa like ʻole.

Kauoa

Nā hōʻike maʻamau

Aia ka pūnaewele Kubernetes alakai maikai loa e pili ana i ka hoʻonohonoho ʻana iā ZooKeeper me ka hoʻohana ʻana i nā hōʻike. No ka mea he ʻāpana ʻo ZooKeeper o Kafka, he wahi maikaʻi kēia e hoʻomaka ai e kamaʻāina i nā manaʻo Kubernetes e pili ana ma aneʻi. Ke hoʻomaopopo ʻoe i kēia, hiki iā ʻoe ke hoʻohana i nā manaʻo like me kahi pūʻulu Kafka.

  • I lalo: ʻO ka pod ka mea liʻiliʻi loa i hiki ke hoʻoili ʻia ma Kubernetes. Loaʻa i kahi pod kāu haʻahaʻa hana, a ʻo ka pod ponoʻī e pili ana i kahi kaʻina hana i kāu hui. Aia i loko o kahi pahu hoʻokahi a ʻoi aku paha nā pahu. E holo ana kēlā me kēia kikowaena ZooKeeper i ka hui a me kēlā me kēia mea kūʻai aku ma ka pūʻulu Kafka i kahi pod kaʻawale.
  • StatefulSet: ʻO kahi StatefulSet kahi mea Kubernetes e lawelawe ana i nā haʻahaʻa hana mokuʻāina he nui, a ʻo ia mau haʻahaʻa hana e pono ai ka hoʻonohonoho ʻana. Hāʻawi ʻo StatefulSets i nā hōʻoia e pili ana i ka hoʻonohonoho ʻana i nā pods a me ko lākou ʻokoʻa.
  • Nā lawelawe poʻo ʻole: Hāʻawi nā lawelawe iā ʻoe e wehe i nā pods mai nā mea kūʻai aku me ka hoʻohana ʻana i kahi inoa logical. ʻO nā Kubernetes i kēia hihia ke kuleana no ka hoʻokau kaulike. Eia nō naʻe, i ka hana ʻana i nā haʻahaʻa hana kūlana, e like me ZooKeeper a me Kafka, pono nā mea kūʻai aku e kamaʻilio me kahi ʻano kikoʻī. ʻO kēia kahi e hiki mai ai nā lawelawe poʻo ʻole: i kēia hihia, e loaʻa mau ka inoa o ka mea kūʻai aku, akā ʻaʻole pono ʻoe e hoʻopili pololei i ka pod.
  • Ka nui o ka mālama ʻana i ka wā lōʻihi: Pono kēia mau puke no ka hoʻonohonoho ʻana i ka waihona hoʻomau paʻa ʻole kūloko i ʻōlelo ʻia ma luna.

maluna o Yolean Hāʻawi i kahi pūʻulu piha o nā hōʻike e kōkua iā ʻoe e hoʻomaka me Kafka ma Kubernetes.

Helm pakuhi

ʻO Helm kahi luna pūʻolo no nā Kubernetes i hiki ke hoʻohālikelike ʻia me nā mana pūʻolo OS e like me yum, apt, Homebrew a i ʻole Chocolatey. He mea maʻalahi ka hoʻouka ʻana i nā pūʻolo polokalamu i wehewehe ʻia ma nā pakuhi Helm. ʻO kahi palapala Helm i koho maikaʻi ʻia e hana i ka hana paʻakikī o ka hoʻonohonoho pono ʻana i nā ʻāpana āpau e hoʻohana iā Kafka ma nā Kubernetes maʻalahi. Nui nā kiʻi Kafka: aia ka mea kūhelu i ke kūlana incubator, aia kekahi mai Hoʻohui, hoʻokahi hou - mai Bitnami.

ʻO nā mea hana

No ka loaʻa ʻana o kekahi mau hemahema ʻo Helm, ʻoi aku ka kaulana o kekahi mea hana: nā mea hoʻohana Kubernetes. ʻAʻole hoʻopili wale ka mea hoʻohana i nā lako polokalamu no Kubernetes, akā ʻae pū kekahi iā ʻoe e kau i ia polokalamu a mālama iā ia.

I ka papa inoa mea hana kupanaha ʻElua mau mea hoʻohana no Kafka i ʻōlelo ʻia. ʻO kekahi o lākou - Strimzi. Me Strimzi, maʻalahi ka hoʻomaka ʻana o kāu hui Kafka a holo i nā minuke. ʻAʻole pono ka hoʻonohonoho ʻana, ʻo ia hoʻi, hāʻawi ka mea hoʻohana ponoʻī i kekahi mau hiʻohiʻona maikaʻi, no ka laʻana, point-to-point TLS encryption i loko o ka pūpū. Hāʻawi pū ʻo Confluent mea hoʻohana ponoʻī.

'Ohanahana

He mea nui e hoʻāʻo i ka hana ma ka hoʻohālikelike ʻana i kāu hiʻohiʻona Kafka. ʻO ia mau hoʻāʻo e kōkua iā ʻoe e ʻike i nā bottlenecks ma mua o ka hiki ʻana o nā pilikia. ʻO ka mea pōmaikaʻi, ua hāʻawi mua ʻo Kafka i ʻelua mau mea hana hoʻokolohua: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. E hoʻohana ikaika iā lākou. No ka ʻike, hiki iā ʻoe ke kuhikuhi i nā hopena i wehewehe ʻia ma keia pou ʻO Jay Kreps, a i ʻole ka nānā ʻana keia loiloi ʻO Amazon MSK na Stéphane Maarek.

Nā hana

Ka mālama ʻana

He mea koʻikoʻi ka ʻike i ka ʻōnaehana - inā ʻaʻole ʻoe e hoʻomaopopo i ka mea e hana nei i loko. I kēia lā aia kahi pahu hana paʻa e hāʻawi ana i ka nānā ʻana ma muli o nā metric ma ke ʻano ʻōiwi maoli. ʻElua mau mea hana kaulana no kēia kumu ʻo Prometheus a me Grafana. Hiki iā Prometheus ke hōʻiliʻili i nā metric mai nā kaʻina Java āpau (Kafka, Zookeeper, Kafka Connect) me ka hoʻohana ʻana i kahi mea hoʻopuka JMX - ma ke ala maʻalahi. Inā hoʻohui ʻoe i nā metric cAdvisor, hiki iā ʻoe ke hoʻomaopopo piha i ka hoʻohana ʻia ʻana o nā kumuwaiwai ma Kubernetes.

Loaʻa iā Strimzi kahi hiʻohiʻona kūpono loa o kahi dashboard Grafana no Kafka. ʻIke ia i nā metric koʻikoʻi, no ka laʻana, e pili ana i nā ʻāpana under-replicated a i ʻole nā ​​mea i waho. Ua maopopo loa nā mea a pau ma laila. Hoʻopili ʻia kēia mau ana e ka hoʻohana waiwai a me ka ʻike hana, a me nā hōʻailona kūpaʻa. No laila, loaʻa iā ʻoe ka nānā ʻana i ka puʻupuʻu Kafka kumu no ka mea ʻole!

He maikaʻi anei ʻo Kafka ma Kubernetes?

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

He mea maikaʻi e hoʻohui i kēia mau mea āpau me ka nānā ʻana i nā mea kūʻai aku (nā mea kūʻai aku a me nā mea hana), a me ka nānā ʻana i ka latency (no kēia mea aia. Burrow) a me ka nānā ʻana i ka hopena - no kēia hoʻohana Kafka Monitor.

Ke kālai lāʻau

ʻO ka logging kekahi hana koʻikoʻi. E hōʻoia i ka hoʻopaʻa inoa ʻia nā pahu a pau i kāu hoʻokomo ʻana iā Kafka stdout и stderr, a e hōʻoia pū i kāu hui Kubernetes e hōʻuluʻulu i nā lāʻau a pau i loko o kahi ʻōnaehana hoʻopaʻa inoa kikowaena, e laʻa. Elasticsearch.

Hoʻolālā Hana

Hoʻohana ʻo Kubernetes i nā ʻimi ola a me ka mākaukau e nānā inā holo maʻamau kāu mau pods. Inā hāʻule ka nānā ola, hoʻopau ʻo Kubernetes i kēlā pahu a laila hoʻomaka hou inā hoʻonohonoho ʻia ke kulekele hoʻomaka. Inā hāʻule ka māka mākaukau, hoʻokaʻawale ʻo Kubernetes i ka pod mai nā noi lawelawe. No laila, ma ia mau hihia, ʻaʻole koi ʻia ka hana lima, ʻo ia ka mea nui.

Ke hoʻopuka nei i nā mea hou

Kākoʻo ʻo StatefulSets i nā hoʻopou hou: inā koho ʻoe i ka hoʻolālā RollingUpdate, e hoʻonui ʻia kēlā me kēia ma lalo o Kafka. Ma kēia ala, hiki ke hoʻemi ʻia ka manawa hoʻomaha i ka ʻole.

Ka hoʻonui ʻana

ʻAʻole maʻalahi ka hoʻonui ʻana i kahi hui Kafka. Eia nō naʻe, maʻalahi loa ʻo Kubernetes i ka hoʻonui ʻana i nā pods i kekahi helu o nā replicas, ʻo ia ka mea hiki iā ʻoe ke wehewehe i ka nui o nā Kafka brokers e like me kou makemake. ʻO ka mea paʻakikī loa i kēia hihia ʻo ka hoʻihoʻi ʻana i nā ʻāpana ma hope o ka hoʻonui ʻana a i ʻole ma mua o ka hoʻohaʻahaʻa ʻana. Eia hou, e kōkua ʻo Kubernetes iā ʻoe i kēia hana.

Nā Administration

Hiki ke hana ʻia nā hana e pili ana i ka lawelawe ʻana i kāu pūʻulu Kafka, e like me ka hoʻokumu ʻana i nā kumuhana a me ka hoʻololi ʻana i nā ʻāpana, me ka hoʻohana ʻana i nā ʻatikala shell e loaʻa ana ma ka wehe ʻana i ke kikowaena laina kauoha i kāu pods. Eia naʻe, ʻaʻole nani loa kēia hoʻonā. Kākoʻo ʻo Strimzi i ka mālama ʻana i nā kumuhana me ka hoʻohana ʻana i kahi mea hoʻohana ʻē aʻe. Aia kekahi wahi no ka hoʻomaikaʻi ʻana ma ʻaneʻi.

Ре в в в в в в в в в в

I kēia manawa e hilinaʻi ʻia ka loaʻa ʻana o Kafka i ka loaʻa ʻana o Kubernetes. Inā hāʻule kāu puʻupuʻu Kubernetes, a laila, i ka hihia ʻino loa, e hāʻule pū kāu pūʻulu Kafka. Wahi a ke kānāwai o Murphy, e hana maoli ʻia kēia, a nalowale ʻoe i ka ʻikepili. No ka hōʻemi ʻana i kēia ʻano pilikia, loaʻa kahi manaʻo hoʻihoʻi maikaʻi. Hiki iā ʻoe ke hoʻohana i ka MirrorMaker, ʻo kahi koho ʻē aʻe e hoʻohana iā S3 no kēia, e like me ka mea i wehewehe ʻia ma kēia pou mai Zalando mai.

hopena

I ka hana ʻana me nā puʻupuʻu Kafka liʻiliʻi a liʻiliʻi, pono maoli ka hoʻohana ʻana i nā Kubernetes no ka mea e hāʻawi ana i ka maʻalahi a maʻalahi i ka ʻike mea hoʻohana. Inā he koʻikoʻi koʻikoʻi ka latency non-functional a/a i ʻole nā ​​​​koi o ka throughput, a laila ʻoi aku ka maikaʻi o ka noʻonoʻo ʻana i kahi koho hoʻonohonoho ʻē aʻe.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka