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
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
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
- 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
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
ʻ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
'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
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!
Source:
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.
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.
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
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