Оё Кафка дар Кубернетес хуб аст?

Салом, Хабр!

Замоне мо аввалин шуда ин мавзӯъро ба бозори Русия ворид кардем Кафка ва давом диҳед пайгирӣ кунед барои инкишофи он. Аз ҷумла, мо мавзӯи ҳамкории байни Кафка ва Кубернитель. Мушоҳидашаванда (ва хеле эҳтиёткор) мақола ин мавзӯъ дар блоги Confluent дар моҳи октябри соли гузашта таҳти муаллифи Гвен Шапира нашр шуда буд. Имрӯз мо мехоҳем таваҷҷуҳи шуморо ба як мақолаи тозатар аз моҳи апрели Иоганн Гигер ҷалб кунем, ки ҳарчанд дар сарлавҳа бе аломати савол набуда, мавзӯъро ба таври муфассалтар баррасӣ карда, матнро бо истинодҳои ҷолиб ҳамроҳӣ мекунад. Лутфан, агар имкон дошта бошед, тарҷумаи ройгони "маймуни хаос"-ро бубахшед!

Оё Кафка дар Кубернетес хуб аст?

Муқаддима

Kubernetes барои коркарди сарбории кории бидуни шаҳрвандӣ тарҳрезӣ шудааст. Одатан, чунин сарбории корӣ дар шакли меъмории микросервис пешниҳод карда мешавад, ки онҳо сабуканд, ба таври уфуқӣ миқёс доранд, принсипҳои барномаҳои 12-омилро риоя мекунанд ва метавонанд бо сӯзандоруҳо ва маймунҳои бесарусомонӣ кор кунанд.

Кафка, аз тарафи дигар, аслан ҳамчун пойгоҳи додаҳои тақсимшуда амал мекунад. Ҳамин тариқ, ҳангоми кор шумо бояд бо давлат кор кунед ва он аз хидматрасонии микросервис хеле вазнинтар аст. Кубернетес борҳои давлатиро дастгирӣ мекунад, аммо тавре ки Келси Хайтауэр дар ду твит қайд мекунад, онҳо бояд бо эҳтиёт кор карда шаванд:

Баъзе одамон фикр мекунанд, ки агар шумо Kubernetes-ро ба сарбории кории давлатӣ табдил диҳед, он ба пойгоҳи додаҳои пурра идорашаванда табдил меёбад, ки бо RDS рақиб аст. Ин нодуруст аст. Шояд, агар шумо ба қадри кофӣ кор кунед, ҷузъҳои иловагӣ илова кунед ва як гурӯҳи муҳандисони SREро ҷалб кунед, шумо метавонед RDS-ро дар болои Kubernetes созед.

Ман ҳамеша тавсия медиҳам, ки ба ҳама ҳангоми иҷро кардани сарбории кории давлатӣ дар Kubernetes хеле эҳтиёткор бошанд. Аксар одамоне, ки мепурсанд, ки "метавонам сарбории давлатиро дар Кубернетес иҷро кунам" бо Kubernetes таҷрибаи кофӣ надоранд ва аксар вақт бо сарбории кории онҳо мепурсанд.

Пас, оё шумо бояд Кафкаро дар Кубернетес идора кунед? Саволи муқобил: оё Кафка бе Кубернетес беҳтар кор мекунад? Аз ин рӯ, ман мехоҳам дар ин мақола таъкид намоям, ки чӣ гуна Кафка ва Кубернетес якдигарро пурра мекунанд ва дар якҷоягӣ бо онҳо кадом домҳо метавонанд пайдо шаванд.

Вақти анҷомёбӣ

Биёед дар бораи чизи асосӣ - худи муҳити корӣ сӯҳбат кунем

раванди

Брокерҳои Кафка ба CPU дӯстонаанд. TLS метавонад каме хароҷоти изофӣ ворид кунад. Бо вуҷуди ин, муштариёни Кафка метавонанд CPU пуршиддат бошанд, агар онҳо рамзгузориро истифода баранд, аммо ин ба брокерҳо таъсир намерасонад.

хотира

Далелҳои Кафка хотираро мехӯранд. Андозаи теппаи JVM одатан бо 4-5 ГБ маҳдуд аст, аммо ба шумо инчунин хотираи зиёди система лозим мешавад, зеро Кафка кэши саҳифаро хеле сахт истифода мебарад. Дар Кубернетес, манбаи контейнерро таъин кунед ва мувофиқи он маҳдудият дархост кунед.

Захираи маълумот

Нигоҳдории маълумот дар контейнерҳо муваққатӣ аст - ҳангоми бозоғозӣ маълумот гум мешавад. Барои маълумоти Кафка шумо метавонед ҳаҷмро истифода баред emptyDir, ва таъсир монанд хоҳад буд: маълумоти брокери шумо пас аз анҷом гум мешавад. Паёмҳои шумо то ҳол метавонанд дар дигар брокерҳо ҳамчун нусхабардорӣ нигоҳ дошта шаванд. Аз ин рӯ, пас аз бозоғозӣ, брокери ноком аввал бояд ҳама маълумотро такрор кунад ва ин раванд метавонад вақти зиёдро талаб кунад.

Ин аст, ки чаро шумо бояд захираи дарозмуддати маълумотро истифода баред. Бигзор он нигаҳдории дарозмуддати ғайри маҳаллӣ бо системаи файлии XFS ё дақиқтараш ext4 бошад. NFS-ро истифода набаред. Ман шуморо огоҳ кардам. Версияҳои NFS v3 ё v4 кор намекунанд. Хулоса, брокери Кафка вайрон мешавад, агар он директорияи маълумотро аз сабаби мушкилоти "номи аблаҳона" дар NFS нест карда натавонад. Агар ман шуморо то ҳол бовар кунонда натавонам, хеле бодиққат ин мақоларо хонед. Анбори додаҳо бояд ғайримаҳаллӣ бошад, то Кубернетес пас аз бозоғозӣ ё кӯчонидан гиреҳи навро чандиртар интихоб кунад.

Шабака

Мисли аксари системаҳои тақсимшуда, кори Кафка аз нигоҳ доштани таъхири шабака то ҳадди ақал ва фарохмаҷрои то ҳадди аксар вобаста аст. Кӯшиш накунед, ки ҳамаи брокерҳоро дар як гиреҳ ҷойгир кунед, зеро ин дастрасиро коҳиш медиҳад. Агар гиреҳи Кубернетес ноком шавад, тамоми кластери Кафка ноком мешавад. Инчунин, кластери Кафкаро дар тамоми марказҳои додаҳо пароканда накунед. Ҳамин чиз ба кластери Kubernetes дахл дорад. Як созиши хуб дар ин ҳолат интихоби минтақаҳои гуногуни дастрас аст.

Танзимот

Манифестҳои муқаррарӣ

Вебсайти Kubernetes дорад дастури хеле хуб дар бораи чӣ гуна танзим кардани ZooKeeper бо истифода аз манифестҳо. Азбаски ZooKeeper қисми Кафка аст, ин ҷои хубест барои шинос шудан бо он мафҳумҳои Кубернетес дар ин ҷо татбиқ мешаванд. Вақте ки шумо инро дарк мекунед, шумо метавонед ҳамон мафҳумҳоро бо кластери Кафка истифода баред.

  • Бо: Под хурдтарин воҳиди ҷойгиршаванда дар Кубернетес мебошад. Под сарбории кори шуморо дар бар мегирад ва худи он ба раванде дар кластери шумо мувофиқат мекунад. Под як ё якчанд контейнерро дар бар мегирад. Ҳар як сервери ZooKeeper дар ансамбл ва ҳар як брокер дар кластери Кафка дар як паҳлӯи алоҳида кор мекунанд.
  • Stateful Set: StatefulSet объекти Kubernetes аст, ки сарбории кории сершуморро идора мекунад ва чунин сарбории корӣ ҳамоҳангиро талаб мекунад. StatefulSets дар бораи фармоиши поддонҳо ва беназирии онҳо кафолат медиҳад.
  • Хизматрасонии бе сар: Хидматҳо ба шумо имкон медиҳанд, ки бо истифода аз номи мантиқӣ подкҳоро аз муштариён ҷудо кунед. Кубернетес дар ин ҳолат барои мувозинати сарборӣ масъул аст. Аммо, ҳангоми иҷрои сарбории кории давлатӣ, ба монанди ZooKeeper ва Kafka, муштариён бояд бо як мисоли мушаххас муошират кунанд. Ин аст, ки хидматҳои бе сараш муфиданд: дар ин ҳолат, муштарӣ ҳоло ҳам номи мантиқӣ хоҳад дошт, аммо ба шумо лозим нест, ки мустақиман бо pod тамос гиред.
  • Ҳаҷми нигоҳдории дарозмуддат: Ин ҳаҷмҳо барои танзими нигоҳдории доимии блоки ғайримаҳаллии дар боло зикршуда лозиманд.

Дар бораи он Йолеан Маҷмӯи ҳамаҷонибаи манифестҳоро пешкаш мекунад, ки ба шумо дар оғоз кардани Кафка дар Кубернетес кӯмак мерасонанд.

Диаграммаҳои чархбол

Helm як менеҷери бастаи Kubernetes мебошад, ки онро бо менеҷерҳои бастаи OS ба монанди yum, apt, Homebrew ё Chocolatey муқоиса кардан мумкин аст. Он насб кардани бастаҳои нармафзори пешакӣ муайяншударо, ки дар диаграммаҳои Helm тавсиф шудаанд, осон мекунад. Диаграммаи хуб интихобшудаи Helm вазифаи душворро дар бораи дуруст танзим кардани ҳама параметрҳо барои истифодаи Кафка дар Кубернетес осон мекунад. Якчанд диаграммаҳои Кафка мавҷуданд: диаграммаи расмӣ ҷойгир аст дар ҳолати инкубатор, яке аз он вуҷуд дорад Махфӣ, яки дигар — аз Bitnami.

Операторҳо

Азбаски Helm камбудиҳои муайян дорад, асбоби дигар маъруфияти назаррас пайдо мекунад: операторони Kubernetes. Оператор на танҳо нармафзорро барои Kubernetes баста мекунад, балки ба шумо имкон медиҳад, ки чунин нармафзорро ҷойгир кунед ва онро идора кунед.

рӯйхати операторони аҷиб Ду оператор барои Кафка зикр шудаанд. Яке аз онҳо - Стримзи. Бо Strimzi, кластери Кафкаи худро дар дақиқаҳо ба кор андохтан осон аст. Аслан ягон конфигуратсия талаб карда намешавад, илова бар ин, худи оператор якчанд хусусиятҳои хубро пешниҳод мекунад, масалан, рамзгузории нуқта ба нуқта TLS дар дохили кластер. Confluent низ таъмин менамояд оператори худ.

Маҳсулнокӣ

Санҷиши иҷроиш тавассути муқоисаи мисоли Кафка муҳим аст. Чунин санҷишҳо ба шумо кӯмак мекунанд, ки монеаҳои эҳтимолиро пеш аз пайдо шудани мушкилот пайдо кунед. Хушбахтона, Кафка аллакай ду воситаи санҷиши иҷроишро пешниҳод мекунад: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. Аз онхо фаъолона истифода баред. Барои маълумот, шумо метавонед ба натиҷаҳое, ки дар зер тавсиф шудаанд, муроҷиат кунед ин пост Ҷей Крепс, ё тамаркуз ба ин барраси Amazon MSK аз ҷониби Стефан Маарек.

амалиёт

Мониторинг

Шаффофият дар система хеле муҳим аст - дар акси ҳол шумо намефаҳмед, ки дар он чӣ рӯй дода истодааст. Имрӯз як абзоре мавҷуд аст, ки мониторинги метрикаро дар сабки аслии абр таъмин мекунад. Ду асбоби маъмул барои ин мақсад Prometheus ва Grafana мебошанд. Prometheus метавонад аз ҳама равандҳои Java (Kafka, Zookeeper, Kafka Connect) бо истифода аз содиркунандаи JMX - бо роҳи соддатарин ченакҳоро ҷамъ кунад. Агар шумо метрикаи cAdvisor илова кунед, шумо метавонед пурратар фаҳмед, ки чӣ гуна захираҳо дар Kubernetes истифода мешаванд.

Стримзи намунаи хеле қулайи панели графикии Grafana барои Кафка дорад. Он нишондиҳандаҳои калидиро, масалан, дар бораи бахшҳои кам такроршаванда ё онҳое, ки офлайнанд, визуалӣ мекунад. Дар он ҷо ҳама чиз хеле равшан аст. Ин ченакҳо бо иттилооти истифодаи захираҳо ва фаъолият, инчунин нишондиҳандаҳои устуворӣ пурра карда мешаванд. Ҳамин тавр, шумо мониторинги кластери асосии Кафкаро бефоида мегиред!

Оё Кафка дар Кубернетес хуб аст?

Манбаъ: streamzi.io/docs/master/#kafka_dashboard

Хуб мебуд, ки ҳамаи инро бо мониторинги муштариён (метрика дар бораи истеъмолкунандагон ва истеҳсолкунандагон), инчунин мониторинги таъхир (барои ин вуҷуд дорад) пурра кунед. Бурро) ва мониторинги ба охир расидан - барои ин истифода Монитор Кафка.

Бақайдгирӣ

Гузариш боз як вазифаи муҳим аст. Боварӣ ҳосил кунед, ки ҳамаи контейнерҳо дар насби Кафка ба қайд гирифта шудаанд stdout и stderr, ва инчунин боварӣ ҳосил кунед, ки кластери Kubernetes шумо ҳама гузоришҳоро ба инфрасохтори марказии бақайдгирӣ ҷамъ мекунад, масалан. Ҷустуҷӯи Elastics.

Тафтиши функсионалӣ

Кубернетес санҷишҳои зинда ва омодагиро истифода мебарад, то тафтиш кунад, ки қуттиҳои шумо мӯътадил кор мекунанд. Агар санҷиши зиндамонӣ ноком шавад, Кубернетес он контейнерро қатъ мекунад ва пас аз он ба таври худкор онро дубора оғоз мекунад, агар сиёсати бозсозӣ мувофиқи он муқаррар карда шавад. Агар санҷиши омодагӣ ноком шавад, Кубернетес подкастро аз дархостҳои хидматрасонӣ ҷудо мекунад. Ҳамин тариқ, дар чунин ҳолатҳо, дахолати дастӣ дигар талаб карда намешавад, ки ин як плюс калон аст.

Интишори навсозиҳо

StatefulSets навсозиҳои автоматиро дастгирӣ мекунад: агар шумо стратегияи RollingUpdate -ро интихоб кунед, ҳар кадоме дар зери Кафка бо навбат нав карда мешавад. Ба хамин тарик, бекористиро ба сифр кам кардан мумкин аст.

Миқёскунӣ

Миқёси кластери Кафка кори осон нест. Аммо, Kubernetes миқёси подкҳоро ба миқдори муайяни репликаҳо хеле осон мекунад, ки ин маънои онро дорад, ки шумо метавонед ба таври декларативӣ шумораи зиёди брокерҳои Кафкаро, ки мехоҳед, муайян кунед. Дар ин ҳолат мушкилтарин чиз ин аз нав таъин кардани бахшҳо пас аз васеъшавӣ ё пеш аз коҳиш додани миқёс мебошад. Боз, Кубернетес ба шумо дар ин вазифа кӯмак мекунад.

Идораи

Вазифаҳои марбут ба идоракунии кластери Кафкаи шумо, аз қабили эҷоди мавзӯъҳо ва аз нав таъин кардани бахшҳо, метавонанд бо истифода аз скриптҳои ҷилди мавҷуда тавассути кушодани интерфейси сатри фармон дар подкастҳои худ анҷом дода шаванд. Бо вуҷуди ин, ин ҳалли он хеле зебо нест. Strimzi идоракунии мавзӯъҳоро бо истифода аз оператори дигар дастгирӣ мекунад. Дар ин ҷо барои беҳтар кардани он ҷой вуҷуд дорад.

Нусхабардорӣ ва барқарорсозӣ

Акнун дастрасии Кафка низ аз мавҷудияти Kubernetes вобаста хоҳад буд. Агар кластери Kubernetes-и шумо ноком шавад, пас дар бадтарин сенария кластери Кафкаи шумо низ ноком мешавад. Тибқи қонуни Мерфи, ин ҳатман рӯй медиҳад ва шумо маълумотро аз даст медиҳед. Барои кам кардани ин намуди хавф, консепсияи хуби эҳтиётӣ дошта бошед. Шумо метавонед MirrorMaker-ро истифода баред, варианти дигар ин аст, ки S3-ро барои ин истифода баред, тавре ки дар ин бора тавсиф шудааст овехтан аз Заландо.

хулоса

Ҳангоми кор бо кластерҳои хурд ва миёнаи Кафка, бешубҳа истифода бурдани Kubernetes бамаврид аст, зеро он чандирии иловагиро таъмин мекунад ва таҷрибаи операторро содда мекунад. Агар шумо талаботи хеле назарраси таъхирнопазири ғайрифунксионалӣ ва/ё қобилияти интиқол дошта бошед, пас беҳтар аст, ки баъзе вариантҳои дигари густаришро баррасӣ кунед.

Манбаъ: will.com

Илова Эзоҳ