Да ли је Кафка на Кубернетесу добар?

Поздрав, Хабр!

Својевремено смо први увели ту тему на руско тржиште Кафка и настави пратити за њен развој. Конкретно, пронашли смо тему интеракције између Кафке и Кубернетес. Уочљиво (и прилично пажљиво) чланак ова тема је објављена на блогу Цонфлуент још у октобру прошле године под ауторством Гвен Шапире. Данас вам скрећемо пажњу на новији чланак из априла Јохана Гигера, који, иако не без знака питања у наслову, разматра тему на садржајнији начин, пратећи текст занимљивим линковима. Опростите нам на бесплатном преводу „хаос мајмун“ ако можете!

Да ли је Кафка на Кубернетесу добар?

Увод

Кубернетес је дизајниран да управља радним оптерећењима без стања. Типично, таква оптерећења су представљена у облику микросервисне архитектуре, лагана су, добро се скалирају хоризонтално, прате принципе апликација са 12 фактора и могу да раде са прекидачима и хаос мајмунима.

Кафка, с друге стране, у суштини делује као дистрибуирана база података. Дакле, када радите, морате имати посла са државом, а она је много тежа од микросервиса. Кубернетес подржава учитавање стања, али као што Келсеи Хигхтовер истиче у два твита, њима треба поступати пажљиво:

Неки људи сматрају да ако укључите Кубернетес у радно оптерећење са стањем, он постаје потпуно управљана база података која је ривал РДС-у. Ово није у реду. Можда ћете, ако довољно радите, додате додатне компоненте и привучете тим СРЕ инжењера, моћи да направите РДС на врху Кубернетеса.

Увек препоручујем свима да буду изузетно опрезни када покрећу радна оптерећења која се односе на стање на Кубернетес-у. Већина људи који питају „да ли могу да покренем радна оптерећења са подацима о стању на Кубернетес-у“ немају довољно искуства са Кубернетес-ом, а често и са радним оптерећењем о којем питају.

Дакле, да ли треба да покренете Кафку на Кубернетесу? Контра питање: да ли ће Кафка боље радити без Кубернетеса? Зато желим да истакнем у овом чланку како се Кафка и Кубернетес допуњују и које замке могу настати са њиховим комбиновањем.

Време завршетка

Хајде да причамо о основној ствари - самом рунтиме окружењу

процес

Кафка брокери су прилагођени процесору. ТЛС може увести неке додатне трошкове. Међутим, Кафка клијенти могу бити интензивнији за процесор ако користе шифровање, али то не утиче на брокере.

меморија

Кафкини брокери једу сећање. Величина ЈВМ гомиле је обично ограничена на 4-5 ГБ, али ће вам такође требати много системске меморије пошто Кафка веома интензивно користи кеш странице. У Кубернетес-у подесите ресурсе контејнера и захтевајте ограничења у складу са тим.

Складиште података

Складиштење података у контејнерима је ефемерно – подаци се губе када се поново покрене. За Кафка податке можете користити волумен emptyDir, а ефекат ће бити сличан: ваши брокерски подаци ће бити изгубљени након завршетка. Ваше поруке се и даље могу чувати на другим брокерима као реплике. Стога, након поновног покретања, неуспели брокер мора прво да реплицира све податке, а овај процес може потрајати много времена.

Због тога би требало да користите дуготрајно складиштење података. Нека то буде нелокално дуготрајно складиштење са КСФС системом датотека или, тачније, ект4. Не користите НФС. Упозорио сам те. НФС верзије в3 или в4 неће радити. Укратко, Кафка брокер ће се срушити ако не може да избрише директоријум података због проблема „глупог преименовања“ у НФС-у. Ако те још нисам убедио, врло пажљиво прочитајте овај чланак. Складиште података треба да буде нелокално како би Кубернетес могао флексибилније да изабере нови чвор након поновног покретања или измештања.

Мрежа

Као и код већине дистрибуираних система, Кафкине перформансе у великој мери зависе од одржавања мрежног кашњења на минимуму и максималног пропусног опсега. Не покушавајте да угостите све брокере на истом чвору, јер ће то смањити доступност. Ако Кубернетес чвор откаже, цео Кафка кластер ће отказати. Такође, немојте расипати Кафка кластер по читавим центрима података. Исто важи и за Кубернетес кластер. Добар компромис у овом случају је одабир различитих зона доступности.

Конфигурација

Редовни манифести

Кубернетес веб локација има веома добар водич о томе како да конфигуришете ЗооКеепер користећи манифесте. Пошто је ЗооКеепер део Кафке, ово је добро место да почнете да упознате који Кубернетес концепти се овде примењују. Када ово схватите, можете користити исте концепте са Кафка кластером.

  • Под: Под је најмања јединица која се може применити у Кубернетесу. Под садржи ваше радно оптерећење, а сам модул одговара процесу у вашем кластеру. Махуна садржи један или више контејнера. Сваки ЗооКеепер сервер у ансамблу и сваки брокер у Кафка кластеру радиће у засебној подлози.
  • СтатефулСет: СтатефулСет је Кубернетес објекат који рукује вишеструким радним оптерећењима са стањем, а таква оптерећења захтевају координацију. СтатефулСетс пружају гаранције у вези са редоследом махуна и њиховом јединственошћу.
  • Безглаве услуге: Услуге вам омогућавају да одвојите подове од клијената користећи логично име. Кубернетес је у овом случају одговоран за балансирање оптерећења. Међутим, када управљају радним оптерећењима са стањем, као што су ЗооКеепер и Кафка, клијенти морају да комуницирају са одређеном инстанцом. Овде су корисне услуге без главе: у овом случају, клијент ће и даље имати логично име, али нећете морати директно да контактирате под.
  • Обим дуготрајног складиштења: Ови волумени су потребни да би се конфигурисала нелокална блок трајна меморија поменута горе.

На Иолеан Пружа свеобухватан скуп манифеста који ће вам помоћи да почнете са Кафком на Кубернетесу.

Хелм цхартс

Хелм је менаџер пакета за Кубернетес који се може упоредити са менаџерима пакета за ОС као што су иум, апт, Хомебрев или Цхоцолатеи. Олакшава инсталацију унапред дефинисаних софтверских пакета описаних у Хелм графиконима. Добро одабран Хелм графикон чини тежак задатак како правилно конфигурисати све параметре за коришћење Кафке на Кубернетес-у. Постоји неколико Кафкиних дијаграма: званични се налази у стању инкубатора, постоји један из Чвор, још један - од БитНами.

Оператори

Пошто Хелм има одређене недостатке, још један алат добија значајну популарност: Кубернетес оператери. Оператер не само да пакује софтвер за Кубернетес, већ вам такође омогућава да примените такав софтвер и управљате њиме.

На списку невероватни оператери Помињу се два оператера за Кафку. Један од њих - Стримзи. Са Стримзијем, лако је покренути Кафка кластер за неколико минута. Практично није потребна конфигурација, осим тога, сам оператер пружа неке лепе карактеристике, на пример, поинт-то-поинт ТЛС енкрипцију унутар кластера. Цонфлуент такође пружа сопствени оператер.

Перформансе

Важно је да тестирате перформансе бенцхмаркингом ваше Кафка инстанце. Такви тестови ће вам помоћи да пронађете потенцијална уска грла пре него што дође до проблема. Срећом, Кафка већ нуди два алата за тестирање перформанси: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. Активно их користите. За референцу, можете погледати резултате описане у овај пост Јаи Крепс, или се фокусирати на овај преглед Амазон МСК од Стефана Маарека.

Операције

Праћење

Транспарентност у систему је веома важна - иначе нећете разумети шта се у њему дешава. Данас постоји солидан комплет алата који обезбеђује праћење засновано на метрикама у изворном стилу у облаку. Два популарна алата за ову сврху су Прометеј и Графана. Прометхеус може прикупити метрику из свих Јава процеса (Кафка, Зоокеепер, Кафка Цоннецт) користећи ЈМКС експортер - на најједноставнији начин. Ако додате цАдвисор метрику, можете потпуније разумети како се ресурси користе у Кубернетес-у.

Стримзи има веома згодан пример Графана контролне табле за Кафку. Он визуелизује кључне метрике, на пример, о секторима који су недовољно реплицирани или онима који су ван мреже. Ту је све врло јасно. Ове метрике су допуњене информацијама о коришћењу ресурса и перформансама, као и индикаторима стабилности. Дакле, добијате основно праћење Кафка кластера за ништа!

Да ли је Кафка на Кубернетесу добар?

Извор: стреамзи.ио/доцс/мастер/#кафка_дасхбоард

Било би лепо све ово допунити праћењем клијената (метрика о потрошачима и произвођачима), као и праћењем кашњења (за ово постоји Бурров) и праћење од краја до краја - за ову употребу Кафка Монитор.

Логгинг

Евидентирање је још један критичан задатак. Уверите се да су сви контејнери у вашој Кафка инсталацији пријављени stdout и stderr, а такође обезбедите да ваш Кубернетес кластер агрегира све евиденције у централну инфраструктуру за евидентирање, нпр. Еластицсеарцх.

Функционална провера

Кубернетес користи сонде за живост и спремност да провери да ли ваши подови раде нормално. Ако провера живости не успе, Кубернетес ће зауставити тај контејнер, а затим га аутоматски поново покренути ако је смерница поновног покретања подешена на одговарајући начин. Ако провера спремности не успе, Кубернетес изолује под од захтева за сервисирање. Дакле, у таквим случајевима ручна интервенција више није потребна, што је велики плус.

Увођење ажурирања

СтатефулСетс подржавају аутоматска ажурирања: ако изаберете стратегију РоллингУпдате, сваки под Кафка ће бити ажуриран редом. На овај начин се време застоја може свести на нулу.

Skaliranje

Скалирање Кафка кластера није лак задатак. Међутим, Кубернетес олакшава скалирање подова на одређени број реплика, што значи да можете декларативно дефинисати онолико Кафка брокера колико желите. Најтежа ствар у овом случају је прерасподела сектора након повећања или пре смањивања. Опет, Кубернетес ће вам помоћи у овом задатку.

Администрација

Задаци у вези са администрирањем вашег Кафка кластера, као што је креирање тема и прерасподела сектора, могу се обавити коришћењем постојећих схелл скрипти отварањем интерфејса командне линије у вашим подовима. Међутим, ово решење није баш лепо. Стримзи подржава управљање темама помоћу другог оператора. Овде има простора за напредак.

Резервно копирање и восставление

Сада ће доступност Кафке такође зависити од доступности Кубернетеса. Ако ваш Кубернетес кластер не успе, онда ће у најгорем случају и ваш Кафка кластер пропасти. Према Марфијевом закону, ово ће се дефинитивно догодити, а ви ћете изгубити податке. Да бисте смањили ову врсту ризика, имајте добар концепт резервне копије. Можете користити МиррорМакер, друга опција је да користите С3 за ово, као што је описано у овоме пошта из Заланда.

Закључак

Када радите са малим и средњим Кафка кластерима, свакако вреди користити Кубернетес јер пружа додатну флексибилност и поједностављује искуство оператера. Ако имате веома значајне нефункционалне захтеве за кашњењем и/или пропусношћу, можда би било боље размотрити неку другу опцију примене.

Извор: ввв.хабр.цом

Додај коментар