Shin Kafka akan Kubernetes yana da kyau?

Gaisuwa, Habr!

A wani lokaci, mu ne farkon wanda ya gabatar da batun zuwa kasuwar Rasha Kafka kuma a ci gaba waƙa domin cigabanta. Musamman, mun sami batun hulɗar tsakanin Kafka da Kubernetes. Abun gani (kuma a hankali) labarin An buga wannan batu a shafin yanar gizon Confluent a watan Oktoban bara a ƙarƙashin marubucin Gwen Shapira. A yau muna so mu jawo hankalin ku zuwa ga wani labarin kwanan nan daga watan Afrilu na Johann Gyger, wanda, ko da yake ba tare da alamar tambaya ba a cikin taken, yana nazarin batun a hanya mai mahimmanci, tare da rubutun tare da hanyoyi masu ban sha'awa. Da fatan za a gafarta mana fassarar "birai hargitsi" kyauta idan za ku iya!

Shin Kafka akan Kubernetes yana da kyau?

Gabatarwar

An ƙirƙira Kubernetes don ɗaukar nauyin ayyukan rashin ƙasa. Yawanci, ana gabatar da irin waɗannan nauyin aikin a cikin tsarin gine-gine na microservice, suna da nauyi, suna da kyau a kwance, suna bin ka'idodin aikace-aikacen 12-factor, kuma suna iya aiki tare da masu fashewa da kuma birai hargitsi.

Kafka, a gefe guda, yana aiki da gaske azaman bayanan da aka rarraba. Don haka, lokacin aiki, dole ne ku yi hulɗa da jihar, kuma yana da nauyi fiye da microservice. Kubernetes yana goyan bayan manyan kaya, amma kamar yadda Kelsey Hightower ya nuna a cikin tweets biyu, yakamata a kula dasu da kulawa:

Wasu mutane suna jin cewa idan kun mirgine Kubernetes cikin ingantaccen aiki, ya zama cikakken tsarin bayanai wanda ke adawa da RDS. Wannan ba daidai ba ne. Wataƙila, idan kun yi aiki tuƙuru, ƙara ƙarin abubuwan haɗin gwiwa kuma ku jawo ƙungiyar injiniyoyin SRE, zaku iya gina RDS akan Kubernetes.

A koyaushe ina ba da shawarar cewa kowa ya yi taka tsantsan yayin gudanar da ayyuka masu inganci akan Kubernetes. Yawancin mutanen da ke tambaya "Zan iya gudanar da ayyuka na yau da kullun akan Kubernetes" ba su da isasshen gogewa tare da Kubernetes, kuma galibi tare da nauyin aikin da suke tambaya akai.

Don haka, ya kamata ku gudanar da Kafka akan Kubernetes? Tambayar tambaya: shin Kafka zai yi aiki mafi kyau ba tare da Kubernetes ba? Shi ya sa nake so in haskaka a cikin wannan labarin yadda Kafka da Kubernetes ke haɗa juna, da kuma waɗanne matsaloli za su iya zuwa tare da haɗa su.

Lokacin kammalawa

Bari muyi magana game da ainihin abu - yanayin lokacin aiki da kansa

aiwatar

Dillalan Kafka suna abokantaka na CPU. TLS na iya gabatar da wasu sama da ƙasa. Koyaya, abokan cinikin Kafka na iya zama ƙarin ƙarfin CPU idan suna amfani da ɓoyewa, amma wannan baya shafar dillalai.

Waƙwalwa

Kafka dillalai suna cinye ƙwaƙwalwar ajiya. Girman tarin JVM yawanci ana iyakance shi zuwa 4-5 GB, amma kuma zaku buƙaci ƙwaƙwalwar tsarin da yawa tunda Kafka yana amfani da cache ɗin shafi sosai. A Kubernetes, saita albarkatun kwantena da buƙatar iyaka daidai da haka.

Ma'ajiyar bayanai

Ma'ajiyar bayanai a cikin kwantena abu ne mai ban mamaki - bayanai suna ɓacewa lokacin da aka sake kunnawa. Don bayanan Kafka zaka iya amfani da ƙara emptyDir, kuma tasirin zai kasance kamar haka: bayanan dillalin ku zai ɓace bayan kammalawa. Har yanzu ana iya adana saƙonninku akan wasu dillalai azaman kwafi. Sabili da haka, bayan sake farawa, dillalin da ya gaza dole ne ya fara kwafin duk bayanan, kuma wannan tsari na iya ɗaukar lokaci mai yawa.

Wannan shine dalilin da ya sa ya kamata ku yi amfani da ajiyar bayanai na dogon lokaci. Bari ya zama ma'aji na dogon lokaci ba na gida ba tare da tsarin fayil na XFS ko, mafi daidai, ext4. Kada kayi amfani da NFS. Na gargade ku. Siffofin NFS v3 ko v4 ba za su yi aiki ba. A takaice dai, dillalin Kafka zai fadi idan ba zai iya share kundin bayanan ba saboda matsalar "sake suna" a cikin NFS. Idan har yanzu ban shawo kan ku ba, a hankali sosai karanta wannan labarin. Ma'ajiyar bayanai ya kamata ta zama ba na gida ba domin Kubernetes zai iya zabar sabon kumburi a hankali bayan sake farawa ko ƙaura.

Network

Kamar yadda yake tare da yawancin tsarin rarrabawa, aikin Kafka yana dogara sosai akan kiyaye latency na cibiyar sadarwa zuwa ƙarami da bandwidth zuwa matsakaicin. Kada kayi kokarin karbar bakuncin duk dillalai akan kulli guda, saboda wannan zai rage samuwa. Idan kumburin Kubernetes ya gaza, duk gungu na Kafka zai gaza. Hakanan, kar a tarwatsa gungu na Kafka a duk cibiyoyin bayanai. Haka yake ga gungu na Kubernetes. Kyakkyawan sulhu a cikin wannan yanayin shine zaɓin wurare daban-daban na samuwa.

Kanfigareshan

Manufofin yau da kullun

Gidan yanar gizon Kubernetes yana da mai kyau jagora game da yadda ake saita ZooKeeper ta amfani da bayyanar. Tun da ZooKeeper wani ɓangare ne na Kafka, wannan wuri ne mai kyau don fara sanin abin da abubuwan Kubernetes ke amfani da su a nan. Da zarar kun fahimci wannan, zaku iya amfani da dabaru iri ɗaya tare da tarin Kafka.

  • A karkashin: Kwasfa ita ce mafi ƙarancin naúrar da za a iya turawa a cikin Kubernetes. Kwamfuta ya ƙunshi nauyin aikinku, kuma kwaf ɗin da kansa ya yi daidai da tsari a cikin tarin ku. Kwasfa ya ƙunshi kwantena ɗaya ko fiye. Kowane uwar garken ZooKeeper a cikin rukunin da kowane dillali a cikin gungun Kafka zai gudana a cikin wani kwasfa daban.
  • StatefulSet: A StatefulSet abu ne na Kubernetes wanda ke ɗaukar nauyin ayyuka masu yawa na jihohi, kuma irin wannan nauyin aiki yana buƙatar haɗin kai. StatefulSets suna ba da garanti game da odar kwas ɗin da keɓanta su.
  • Ayyukan marasa kai: Sabis suna ba ku damar cire kwasfan fayiloli daga abokan ciniki ta amfani da suna mai ma'ana. Kubernetes a cikin wannan yanayin yana da alhakin daidaita nauyi. Koyaya, lokacin gudanar da ayyuka masu inganci, kamar ZooKeeper da Kafka, abokan ciniki suna buƙatar sadarwa tare da takamaiman misali. Wannan shine inda sabis ɗin marasa kai ya zo da amfani: a wannan yanayin, abokin ciniki zai kasance yana da suna mai ma'ana, amma ba lallai ne ku tuntuɓar kwaf ɗin kai tsaye ba.
  • Girman ajiya na dogon lokaci: Ana buƙatar waɗannan juzu'i don saita ma'ajin da ba na gida ba da aka ambata a sama.

a kan Yolean Yana ba da cikakkiyar saiti na bayyanannu don taimaka muku farawa da Kafka akan Kubernetes.

Taswirar Helm

Helm shine manajan fakiti na Kubernetes wanda za'a iya kwatanta shi da masu sarrafa fakitin OS kamar yum, apt, Homebrew ko Chocolatey. Yana sauƙaƙa shigar da fakitin software da aka riga aka bayyana a cikin ginshiƙi na Helm. Taswirar Helm da aka zaɓa da kyau yana yin aiki mai wahala na yadda za a daidaita duk sigogi yadda yakamata don amfani da Kafka akan Kubernetes mai sauƙi. Akwai zane-zane na Kafka da yawa: na hukuma yana samuwa a cikin yanayin incubator, akwai daya daga M, daya more - daga Bitnami.

Masu aiki

Saboda Helm yana da wasu gazawa, wani kayan aiki yana samun shahara sosai: Ma'aikatan Kubernetes. Mai aiki ba wai kawai ya haɗa software don Kubernetes ba, har ma yana ba ku damar tura irin wannan software da sarrafa ta.

A cikin jerin masu aiki masu ban mamaki An ambaci masu aiki biyu na Kafka. Daya daga cikinsu - Strimzi. Tare da Strimzi, yana da sauƙi don samun gungu na Kafka da gudu cikin mintuna. Kusan ba a buƙatar saiti, ƙari, ma'aikacin da kansa yana ba da wasu abubuwa masu kyau, misali, boye-boye TLS-to-point a cikin tari. Confluent kuma yana bayarwa ma'aikacin kansa.

Yawan aiki

Yana da mahimmanci don gwada aikin ta hanyar yin la'akari da misalin Kafka. Irin waɗannan gwaje-gwajen za su taimake ka ka sami yuwuwar cikas kafin matsaloli su taso. Abin farin ciki, Kafka ya riga ya ba da kayan aikin gwaji guda biyu: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. Yi amfani da su a hankali. Don tunani, zaku iya komawa zuwa sakamakon da aka bayyana a ciki wannan post Jay Kreps, ko mayar da hankali kan wannan bita Amazon MSK ta Stéphane Maarek.

Ayyuka

Kulawa

Bayyana gaskiya a cikin tsarin yana da matukar muhimmanci - in ba haka ba ba za ku fahimci abin da ke faruwa a ciki ba. A yau akwai ƙaƙƙarfan kayan aikin kayan aiki wanda ke ba da sa ido na tushen ma'auni a cikin salon asalin gajimare. Shahararrun kayan aiki guda biyu don wannan dalili sune Prometheus da Grafana. Prometheus na iya tattara ma'auni daga duk matakan Java (Kafka, Zookeeper, Kafka Connect) ta amfani da mai fitar da JMX - a hanya mafi sauƙi. Idan ka ƙara ma'aunin cAdvisor, za ka iya ƙarin fahimtar yadda ake amfani da albarkatu a cikin Kubernetes.

Strimzi yana da ingantaccen misali na dashboard ɗin Grafana don Kafka. Yana duban ma'auni masu mahimmanci, misali, game da sassan da ba a kwafi ba ko waɗanda ke layi. Komai a bayyane yake a wurin. Waɗannan ma'auni suna cike da amfani da albarkatu da bayanan aiki, da kuma alamun kwanciyar hankali. Don haka kuna samun ainihin gungu na Kafka saka idanu ba komai!

Shin Kafka akan Kubernetes yana da kyau?

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

Zai yi kyau a ƙara duk wannan tare da saka idanu na abokin ciniki (ma'auni akan masu amfani da masu samarwa), da kuma saka idanu na latency (don wannan akwai Burrow) da kuma saka idanu na ƙarshe-zuwa-ƙarshen - don wannan amfani Kafka Monitor.

Shiga

Shiga wani muhimmin aiki ne. Tabbatar cewa duk kwantena a cikin shigarwar Kafka an shigar dasu stdout и stderr, da kuma tabbatar da cewa gungu na Kubernetes ya tattara duk rajistan ayyukan cikin manyan gine-gine na tsakiya, misali. Elasticsearch.

Duba aiki

Kubernetes yana amfani da raye-raye da shirye-shiryen bincike don bincika ko kwafs ɗinku suna gudana akai-akai. Idan duban rai ya gaza, Kubernetes zai dakatar da wannan akwati sannan ta sake kunna shi ta atomatik idan an saita manufar sake farawa daidai. Idan duban shirye-shiryen ya gaza, Kubernetes ya keɓe kwaf ɗin daga buƙatun sabis. Don haka, a irin waɗannan lokuta, ba a buƙatar sa hannun hannu kwata-kwata, wanda babban ƙari ne.

Ana fitar da sabuntawa

StatefulSets suna goyan bayan sabuntawa ta atomatik: idan kun zaɓi dabarun RollingUpdate, kowane ƙarƙashin Kafka za a sabunta shi bi da bi. Ta wannan hanyar, za a iya rage lokacin hutu zuwa sifili.

Sikeli

Ƙirƙirar gungu na Kafka ba abu ne mai sauƙi ba. Koyaya, Kubernetes yana sauƙaƙe ma'aunin kwasfa zuwa takamaiman adadin kwafi, wanda ke nufin zaku iya bayyana dillalan Kafka da yawa kamar yadda kuke so. Abu mafi wahala a cikin wannan yanayin shine sake sanya sassan sassan bayan haɓaka sama ko kafin raguwa. Bugu da ƙari, Kubernetes zai taimake ku da wannan aikin.

Gudanarwa

Ayyukan da suka danganci gudanar da gungu na Kafka, kamar ƙirƙira batutuwa da sake fasalin sassa, ana iya yin su ta amfani da rubutun harsashi da ake da su ta hanyar buɗe layin umarni a cikin kwas ɗinku. Duk da haka, wannan bayani ba shi da kyau sosai. Strimzi yana goyan bayan sarrafa batutuwa ta amfani da wani ma'aikaci daban. Akwai wurin ingantawa anan.

Ajiye da mayarwa

Yanzu samun Kafka shima zai dogara ne akan samuwar Kubernetes. Idan gungu na Kubernetes ya gaza, to a cikin mafi munin yanayi, gunkin Kafka shima zai gaza. Bisa ga dokar Murphy, wannan tabbas zai faru, kuma za ku rasa bayanai. Don rage irin wannan haɗarin, sami kyakkyawan ra'ayi na madadin. Kuna iya amfani da MirrorMaker, wani zaɓi shine don amfani da S3 don wannan, kamar yadda aka bayyana a cikin wannan aikawa daga Zalando.

ƙarshe

Lokacin aiki tare da ƙananan gungu na Kafka masu matsakaici zuwa matsakaici, tabbas yana da daraja amfani da Kubernetes kamar yadda yake ba da ƙarin sassauci kuma yana sauƙaƙe ƙwarewar mai aiki. Idan kuna da mahimman latency mara aiki da/ko buƙatun kayan aiki, to yana iya zama mafi kyau a yi la'akari da wasu zaɓin turawa.

source: www.habr.com

Add a comment