Nco tseg. txhais.: Hauv tsab xov xwm no, Banzai Cloud qhia ib qho piv txwv ntawm yuav ua li cas nws cov cuab yeej kev cai siv tau los ua kom Kafka yooj yim siv hauv Kubernetes. Cov lus qhia hauv qab no qhia txog qhov koj tuaj yeem txiav txim siab qhov loj me ntawm koj qhov kev tsim kho thiab teeb tsa Kafka nws tus kheej kom ua tiav qhov kev xav tau.
Apache Kafka yog ib qho kev faib streaming platform rau tsim txhim khu kev qha, scalable thiab ua tau zoo ntawm lub sij hawm streaming systems. Nws lub peev xwm ua tau zoo tuaj yeem txuas ntxiv siv Kubernetes. Rau qhov no peb tau tsim Qhib Qhov Chaw Kafka tus neeg teb xov tooj thiab ib lub cuab yeej hu ua Supertubes. Lawv tso cai rau koj khiav Kafka ntawm Kubernetes thiab siv nws cov yam ntxwv ntau yam, xws li kev kho kom zoo ntawm tus broker kev teeb tsa, metric-based scaling nrog rebalancing, khib kev paub, "mos" (zoo nkauj) dov tawm tshiab, thiab lwm yam.
Sim Supertubes hauv koj pawg:
curl https://getsupertubes.sh | sh ΠΈ supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>
Los yog hu rau cov ntaub ntawv. Koj tseem tuaj yeem nyeem txog qee qhov peev xwm ntawm Kafka, kev ua haujlwm nrog uas yog automated siv Supertubes thiab Kafka tus neeg teb xov tooj. Peb twb tau sau txog lawv hauv blog:
Thaum koj txiav txim siab siv Kafka pawg ntawm Kubernetes, koj yuav muaj kev sib tw ntawm kev txiav txim siab qhov loj me ntawm cov txheej txheem hauv qab thiab qhov yuav tsum tau ua kom zoo rau koj qhov kev teeb tsa Kafka kom tau raws li cov kev xav tau. Qhov siab tshaj plaws kev ua tau zoo ntawm txhua tus broker yog txiav txim siab los ntawm kev ua haujlwm ntawm cov khoom siv hauv qab, xws li nco, processor, disk ceev, network bandwidth, thiab lwm yam.
Qhov zoo tshaj plaws, tus broker configuration yuav tsum yog xws li tias tag nrho cov txheej txheem infrastructure yog siv rau lawv lub peev xwm siab tshaj plaws. Txawm li cas los xij, hauv lub neej tiag tiag qhov teeb tsa no yog qhov nyuaj heev. Nws yog qhov zoo dua uas cov neeg siv yuav teeb tsa tus broker kom siv ntau tshaj ib lossis ob yam khoom (disk, nco, lossis processor). Feem ntau hais lus, tus broker qhia qhov ua tau zoo tshaj plaws thaum nws qhov kev teeb tsa tso cai rau cov khoom siv qeeb tshaj plaws los siv rau nws qhov ntau tshaj plaws. Txoj kev no peb tuaj yeem tau txais lub tswv yim ntxhib ntawm cov khoom thauj uas ib tus broker tuaj yeem ua tau.
Raws li txoj cai, peb kuj tuaj yeem kwv yees tus naj npawb ntawm cov neeg ua haujlwm yuav tsum tau ua haujlwm rau cov khoom thauj. Txawm li cas los xij, hauv kev xyaum muaj ntau ntau txoj kev xaiv ntawm ntau theem uas nws nyuaj heev (yog tias tsis yooj yim sua) los ntsuas qhov ua tau zoo ntawm ib qho kev teeb tsa tshwj xeeb. Hauv lwm lo lus, nws nyuaj heev los npaj ib qho kev teeb tsa raws li qee qhov kev ua tau zoo.
Rau cov neeg siv Supertubes, peb feem ntau siv txoj hauv kev hauv qab no: peb pib nrog qee qhov kev teeb tsa (infrastructure + chaw), tom qab ntawd ntsuas nws qhov kev ua tau zoo, kho qhov chaw broker thiab rov ua cov txheej txheem dua. Qhov no tshwm sim kom txog rau thaum qhov qeeb tshaj plaws ntawm cov txheej txheem siv tag nrho.
Nyob rau hauv txoj kev no, peb tau txais ib lub tswv yim meej ntawm yuav ua li cas muaj pes tsawg tus brokers ib pawg yuav tsum tau ua ib qho kev thauj khoom (tus naj npawb ntawm cov brokers kuj nyob ntawm lwm yam, xws li tus lej tsawg kawg nkaus ntawm cov lus replicas kom ntseeg tau tias muaj peev xwm, tus naj npawb ntawm kev faib tawm. cov thawj coj, thiab lwm yam). Tsis tas li ntawd, peb tau txais kev nkag siab txog qhov twg cov khoom siv hauv vaj tse yuav tsum tau ntsuas ntsug.
Tsab ntawv xov xwm no yuav tham txog cov kauj ruam uas peb ua kom tau txais txiaj ntsig tshaj plaws ntawm cov khoom qeeb tshaj plaws hauv kev teeb tsa thawj zaug thiab ntsuas qhov dhau los ntawm Kafka pawg. Kev teeb tsa muaj zog heev yuav tsum muaj tsawg kawg yog peb tus neeg ua haujlwm khiav haujlwm (min.insync.replicas=3), faib thoob plaws peb thaj chaw nkag mus sib txawv. Txhawm rau teeb tsa, ntsuas thiab saib xyuas Kubernetes cov txheej txheem, peb siv peb tus kheej lub thawv tswj lub platform rau hybrid huab - Pipeline. Nws txhawb nqa ntawm qhov chaw (liab liab qab, VMware) thiab tsib hom huab (Alibaba, AWS, Azure, Google, Oracle), nrog rau kev sib xyaw ua ke ntawm lawv.
Kev xav ntawm Kafka pawg infrastructure thiab kev teeb tsa
Rau cov piv txwv hauv qab no, peb xaiv AWS ua tus muab kev pabcuam huab thiab EKS raws li Kubernetes faib. Ib qho kev teeb tsa zoo sib xws tuaj yeem siv tau P.K.E. - Kubernetes faib los ntawm Banzai Cloud, tau lees paub los ntawm CNCF.
disk
Amazon muaj ntau yam EBS ntim hom. Ntawm lub hauv paus gp2 ΠΈ io1 muaj SSD drives, txawm li cas los xij, kom ntseeg tau tias muaj kev nkag siab zoo gp2 siv cov qhab nia sau (I/O credits), yog li peb nyiam hom io1, uas muaj kev sib txuam siab dhau.
Hom piv txwv
Kafka qhov kev ua tau zoo yog nyob ntawm qhov kev ua haujlwm ntawm nplooj ntawv cache, yog li peb xav tau cov piv txwv nrog lub cim xeeb txaus rau cov brokers (JVM) thiab nplooj cache. Piv txwv c5.2x ua - pib zoo, vim nws muaj 16 GB ntawm lub cim xeeb thiab optimized ua hauj lwm nrog EBS. Nws qhov tsis zoo yog tias nws tsuas muaj peev xwm muab kev ua haujlwm siab tshaj plaws tsis pub ntau tshaj 30 feeb txhua 24 teev. Yog tias koj qhov chaw ua haujlwm xav tau qhov ua tau zoo tshaj plaws nyob rau lub sijhawm ntev, koj yuav xav xav txog lwm hom piv txwv. Qhov ntawd yog qhov peb tau ua, nres ntawm c5.4x ua. Nws muab qhov siab tshaj plaws throughput nyob rau hauv 593,75 Mb/s. Tshaj siab tshaj plaws ntawm EBS ntim io1 siab dua qhov piv txwv c5.4x ua, yog li lub caij qeeb tshaj plaws ntawm cov txheej txheem zoo li yuav yog I / O dhau los ntawm hom piv txwv no (uas peb cov kev xeem thauj khoom yuav tsum tau lees paub).
Network
Lub network throughput yuav tsum loj txaus piv rau qhov kev ua tau zoo ntawm VM piv txwv thiab disk, txwv tsis pub lub network yuav ua rau lub cev tsis muaj zog. Hauv peb qhov xwm txheej, lub network interface c5.4x ua txhawb kev ceev txog li 10 Gb / s, uas yog siab tshaj qhov I / O throughput ntawm VM piv txwv.
Broker Deployment
Cov neeg ua haujlwm yuav tsum tau muab xa mus (teeb tsa hauv Kubernetes) rau cov nodes siab kom tsis txhob muaj kev sib tw nrog lwm cov txheej txheem rau CPU, nco, network, thiab cov peev txheej disk.
Java version
Qhov kev xaiv qhov laj thawj yog Java 11 vim tias nws tau sib xws nrog Docker hauv kev nkag siab tias JVM raug txiav txim siab cov txheej txheem thiab lub cim xeeb muaj nyob rau hauv lub thawv uas tus broker tab tom khiav. Paub tias CPU txwv yog qhov tseem ceeb, JVM sab hauv thiab pob tshab teeb tsa tus naj npawb ntawm GC xov thiab JIT xov. Peb siv cov duab Kafka banzaicloud/kafka:2.13-2.4.0, uas suav nrog Kafka version 2.4.0 (Scala 2.13) ntawm Java 11.
Muaj ob yam tseem ceeb rau kev teeb tsa tus broker nco: chaw rau JVM thiab rau Kubernetes pod. Lub cim xeeb txwv tau teem rau lub pod yuav tsum ntau dua qhov siab tshaj plaws heap loj kom JVM muaj chaw rau Java metaspace uas nyob hauv nws lub cim xeeb thiab rau lub operating system nplooj ntawv cache uas Kafka nquag siv. Hauv peb qhov kev ntsuam xyuas peb tau tshaj tawm Kafka brokers nrog cov kev txwv -Xmx4G -Xms2G, thiab lub cim xeeb txwv rau lub pod yog 10 Gi. Thov nco ntsoov tias qhov chaw nco rau JVM tuaj yeem tau txais kev siv -XX:MaxRAMPercentage ΠΈ -X:MinRAMPercentage, raws li lub cim xeeb txwv rau lub pod.
Broker processor nqis
Feem ntau hais lus, koj tuaj yeem txhim kho kev ua tau zoo los ntawm kev ua kom sib luag los ntawm kev nce cov xov uas siv los ntawm Kafka. Qhov ntau processors muaj rau Kafka, qhov zoo dua. Hauv peb qhov kev sim, peb pib nrog kev txwv ntawm 6 processors thiab maj mam (los ntawm iterations) tsa lawv tus lej mus rau 15. Tsis tas li ntawd, peb tau teeb tsa. num.network.threads=12 nyob rau hauv cov chaw broker kom nce cov xov tooj uas tau txais cov ntaub ntawv los ntawm lub network thiab xa nws. Tam sim ntawd pom tias cov neeg ua raws li cov neeg ua lag luam tsis tuaj yeem tau txais cov ntawv luam tawm sai txaus, lawv tau tsa num.replica.fetchers mus rau 4 kom nce qhov ceev ntawm cov follower brokers replicated lus los ntawm cov thawj coj.
Load Generation Tool
Koj yuav tsum xyuas kom meej tias lub tshuab hluav taws xob xaiv tsis tau khiav tawm ntawm lub peev xwm ua ntej Kafka pawg (uas tau raug ntsuas) ncav cuag nws qhov siab tshaj plaws. Hauv lwm lo lus, nws yog ib qho tsim nyog los ua qhov kev ntsuam xyuas ua ntej ntawm lub peev xwm ntawm cov cuab yeej tsim khoom, thiab tseem xaiv hom piv txwv rau nws nrog tus lej txaus ntawm processors thiab nco. Hauv qhov no, peb lub cuab yeej yuav tsim cov khoom thauj ntau dua li Kafka pawg tuaj yeem ua tau. Tom qab ntau qhov kev sim, peb txiav txim siab peb daim ntawv c5.4x ua, txhua tus uas muaj lub tshuab hluav taws xob khiav.
Kev ntsuas ntsuas
Kev ntsuas kev ua tau zoo yog cov txheej txheem rov ua dua uas suav nrog cov theem hauv qab no:
tsim ib qho load rau ib lub sij hawm los lim random deviations nyob rau hauv cov ntaub ntawv qhia kev ua tau zoo;
kho tus broker lub infrastructure thiab configuration raws li kev soj ntsuam ntsuas kev ua tau zoo;
rov ua dua cov txheej txheem kom txog rau thaum qhov yuav tsum tau ua ntawm Kafka pawg throughput tiav. Nyob rau tib lub sijhawm, nws yuav tsum ua kom rov ua tau zoo dua qub thiab ua kom pom qhov hloov pauv tsawg kawg hauv kev xa khoom.
Ntu tom ntej no piav qhia txog cov kauj ruam uas tau ua thaum lub sij hawm xeem pawg ntsuas kev ntsuas.
Cov cuab yeej
Cov cuab yeej hauv qab no tau siv los siv sai sai rau kev teeb tsa lub hauv paus, tsim cov khoom thauj, thiab ntsuas kev ua haujlwm:
Banzai Huab Pipeline rau kev teeb tsa EKS pawg los ntawm Amazon c Prometheus (kom sau Kafka thiab infrastructure metrics) thiab ua grafana (kom pom cov kev ntsuas no). Peb coj kom zoo dua kev koom ua ke Π² Pipeline cov kev pabcuam uas muab kev saib xyuas los ntawm tsoomfwv, kev sau cov log hauv nruab nrab, kev kuaj xyuas qhov tsis zoo, kev rov qab los ntawm kev puas tsuaj, kev ruaj ntseg qib lag luam thiab ntau ntxiv.
Peb tau khiav peb lub tshuab hluav taws xob thauj khoom hauv qhov sib npaug. Txhua tus sau rau lawv tus kheej lub ntsiab lus, uas yog, peb xav tau peb lub ntsiab lus hauv tag nrho:
Disk throughput mus txog qhov siab tshaj plaws I / O node throughput ntawm tag nrho peb lub sij hawm uas cov brokers tau khiav:
Los ntawm cov ntaub ntawv ntawm kev siv nco los ntawm cov nodes, nws ua raws li qhov system buffering thiab caching coj ~ 10-15 GB:
3 brokers, lus loj - 100 bytes
Raws li cov lus loj zuj zus, kev xa khoom poob los ntawm kwv yees li 15-20%: lub sijhawm siv ua txhua cov lus cuam tshuam rau nws. Tsis tas li ntawd, lub processor load yuav luag ob npaug.
Txij li thaum tus broker nodes tseem muaj cov cores tsis siv, kev ua tau zoo tuaj yeem txhim kho los ntawm kev hloov kho Kafka. Qhov no tsis yog ib txoj haujlwm yooj yim, yog li txhawm rau ua kom muaj txiaj ntsig nws yog qhov zoo dua los ua haujlwm nrog cov lus loj dua.
4 brokers, lus loj - 512 bytes
Koj tuaj yeem yooj yim nce kev ua tau zoo ntawm Kafka pawg los ntawm tsuas yog ntxiv cov neeg ua haujlwm tshiab thiab tswj kom muaj kev sib npaug ntawm kev faib tawm (qhov no ua kom cov khoom sib npaug sib npaug ntawm cov brokers). Nyob rau hauv peb cov ntaub ntawv, tom qab ntxiv ib tug broker, pawg throughput nce mus rau ~ 580 Mb / s (~ 1,1 lab cov lus hauv ib ob). Qhov kev loj hlob tau dhau los ua tsawg dua li qhov xav tau: qhov no feem ntau piav qhia los ntawm qhov tsis sib xws ntawm kev faib tawm (tsis yog txhua tus neeg ua haujlwm ua haujlwm ntawm qhov kawg ntawm lawv lub peev xwm).
Nco noj ntawm JVM tshuab tseem qis dua 2 GB:
Kev ua haujlwm ntawm cov neeg ua haujlwm nrog cov tsav tsheb tau cuam tshuam los ntawm qhov tsis sib xws ntawm kev faib tawm:
tshawb pom
Txoj hauv kev uas tau hais los saum toj no tuaj yeem nthuav dav kom npog ntau qhov xwm txheej uas cuam tshuam nrog ntau pua tus neeg siv khoom, kev faib tawm, dov hloov tshiab, pod restarts, thiab lwm yam. Tag nrho cov no tso cai rau peb los ntsuas qhov txwv ntawm Kafka pawg lub peev xwm hauv ntau yam xwm txheej, txheeb xyuas cov kev tsis sib haum xeeb hauv nws txoj haujlwm thiab nrhiav txoj hauv kev los tawm tsam lawv.
Peb tsim Supertubes kom sai thiab yooj yim xa ib pawg, teeb tsa nws, ntxiv / tshem tawm cov neeg ua haujlwm thiab cov ncauj lus, teb cov lus ceeb toom, thiab xyuas kom Kafka feem ntau ua haujlwm zoo ntawm Kubernetes. Peb lub hom phiaj yog los pab koj tsom mus rau lub luag haujlwm tseem ceeb ("tsim" thiab "siv" Kafka cov lus), thiab tawm txhua txoj haujlwm nyuaj rau Supertubes thiab Kafka tus neeg teb xov tooj.
Yog tias koj txaus siab rau Banzai Cloud technologies thiab Open Source tej yaam num, sau npe mus rau lub tuam txhab ntawm GitHub, LinkedIn los yog Twitter.