Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

PiezÄ«me. tulk.: Å”ajā rakstā Banzai Cloud dalās ar piemēru, kā tā pielāgotos rÄ«kus var izmantot, lai atvieglotu Kafka lietoÅ”anu Kubernetes. Tālāk sniegtie norādÄ«jumi ilustrē, kā varat noteikt savas infrastruktÅ«ras optimālo izmēru un konfigurēt paÅ”u Kafka, lai sasniegtu nepiecieÅ”amo caurlaidspēju.

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Apache Kafka ir izplatÄ«ta straumÄ“Å”anas platforma uzticamu, mērogojamu un augstas veiktspējas reāllaika straumÄ“Å”anas sistēmu izveidei. Tās iespaidÄ«gās iespējas var paplaÅ”ināt, izmantojot Kubernetes. Å im nolÅ«kam mēs esam izstrādājuÅ”i Atvērtā koda Kafka operators un rÄ«ks, ko sauc Supertubes. Tie ļauj palaist Kafka vietnē Kubernetes un izmantot tās dažādās funkcijas, piemēram, starpnieka konfigurācijas precizÄ“Å”anu, uz metriku balstÄ«tu mērogoÅ”anu ar lÄ«dzsvaroÅ”anu, statÄ«va apzināŔanos, ā€œmÄ«kstoā€ (graciozs) atjauninājumu ievieÅ”ana utt.

Izmēģiniet Supertubes savā klasterī:

curl https://getsupertubes.sh | sh Šø supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>

Vai arī sazinieties dokumentācija. Varat arī lasīt par dažām Kafkas iespējām, ar kurām darbs tiek automatizēts, izmantojot Supertubes un Kafka operatoru. Par tiem jau rakstījām emuārā:

Kad jÅ«s nolemjat izvietot Kafka klasteru Kubernetes, jÅ«s, iespējams, saskarsities ar izaicinājumu noteikt pamatā esoŔās infrastruktÅ«ras optimālo izmēru un vajadzÄ«bu precizēt savu Kafka konfigurāciju, lai tā atbilstu caurlaidspējas prasÄ«bām. Katra brokera maksimālo veiktspēju nosaka pamatā esoÅ”o infrastruktÅ«ras komponentu veiktspēja, piemēram, atmiņa, procesors, diska ātrums, tÄ«kla joslas platums utt.

Ideālā gadÄ«jumā brokera konfigurācijai jābÅ«t tādai, lai visi infrastruktÅ«ras elementi tiktu izmantoti maksimāli. Tomēr reālajā dzÄ«vē Ŕī iestatÄ«Å”ana ir diezgan sarežģīta. Visticamāk, ka lietotāji konfigurēs brokerus, lai maksimāli izmantotu vienu vai divus komponentus (disku, atmiņu vai procesoru). VispārÄ«gi runājot, brokeris parāda maksimālu veiktspēju, ja tā konfigurācija ļauj pilnÄ«bā izmantot lēnāko komponentu. Tādā veidā mēs varam iegÅ«t aptuvenu priekÅ”statu par slodzi, ar kuru viens brokeris var tikt galā.

Teorētiski mēs varam arÄ« novērtēt brokeru skaitu, kas nepiecieÅ”ams, lai apstrādātu noteiktu slodzi. Tomēr praksē ir tik daudz konfigurācijas iespēju dažādos lÄ«meņos, ka ir ļoti grÅ«ti (ja ne neiespējami) novērtēt konkrētas konfigurācijas iespējamo veiktspēju. Citiem vārdiem sakot, ir ļoti grÅ«ti plānot konfigurāciju, pamatojoties uz noteiktu veiktspēju.

Supertubes lietotājiem mēs parasti izmantojam Ŕādu pieeju: mēs sākam ar kādu konfigurāciju (infrastruktÅ«ra + iestatÄ«jumi), pēc tam izmērām tā veiktspēju, pielāgojam brokera iestatÄ«jumus un atkārtojam procesu vēlreiz. Tas notiek, lÄ«dz infrastruktÅ«ras lēnākā sastāvdaļa ir pilnÄ«bā izmantota.

Tādā veidā mēs iegÅ«stam skaidrāku priekÅ”statu par to, cik brokeru ir nepiecieÅ”ams klasterim, lai apstrādātu noteiktu slodzi (brokeru skaits ir atkarÄ«gs arÄ« no citiem faktoriem, piemēram, minimālā ziņojumu kopiju skaita, lai nodroÅ”inātu elastÄ«bu, nodalÄ«jumu skaita vadÄ«tāji utt.). Turklāt mēs gÅ«stam ieskatu par to, kuriem infrastruktÅ«ras komponentiem nepiecieÅ”ama vertikāla mērogoÅ”ana.

Å ajā rakstā tiks runāts par darbÄ«bām, ko veicam, lai sākotnējās konfigurācijās maksimāli izmantotu lēnākos komponentus un izmērÄ«tu Kafka klastera caurlaidspēju. Ä»oti elastÄ«gai konfigurācijai ir nepiecieÅ”ami vismaz trÄ«s strādājoÅ”i brokeri (min.insync.replicas=3), sadalÄ«ts trÄ«s dažādās pieejamÄ«bas zonās. Lai konfigurētu, mērogotu un pārraudzÄ«tu Kubernetes infrastruktÅ«ru, mēs izmantojam savu konteineru pārvaldÄ«bas platformu hibrÄ«diem mākoņiem - Cauruļvads. Tā atbalsta lokālos (bezmetāla, VMware) un piecu veidu mākoņus (Alibaba, AWS, Azure, Google, Oracle), kā arÄ« jebkuru to kombināciju.

Pārdomas par Kafka klastera infrastruktūru un konfigurāciju

Tālāk norādÄ«tajos piemēros mēs izvēlējāmies AWS kā mākoņa nodroÅ”inātāju un EKS kā Kubernetes izplatÄ«Å”anu. LÄ«dzÄ«gu konfigurāciju var ieviest, izmantojot P.K.E. - Kubernetes izplatÄ«Å”ana no Banzai Cloud, sertificēta CNCF.

disks

Amazon piedāvā dažādus EBS apjoma veidi. Pamatā gp2 Šø io1 tomēr ir SSD diskdziņi, lai nodroÅ”inātu augstu caurlaidspēju gp2 patērē uzkrātos kredÄ«tus (I/O kredÄ«ti), tāpēc mēs izvēlējāmies veidu io1, kas nodroÅ”ina nemainÄ«gi augstu caurlaidspēju.

Instanču veidi

Kafkas veiktspēja ir ļoti atkarÄ«ga no operētājsistēmas lapas keÅ”atmiņas, tāpēc mums ir nepiecieÅ”ami gadÄ«jumi ar pietiekami daudz atmiņas starpniekiem (JVM) un lapas keÅ”atmiņai. Piemērs c5.2xliels - labs sākums, jo tam ir 16 GB atmiņa un optimizēta darbam ar EBS. Tā trÅ«kums ir tāds, ka tas spēj nodroÅ”ināt maksimālo veiktspēju tikai ne vairāk kā 30 minÅ«tes ik pēc 24 stundām. Ja jÅ«su darba slodzei ir nepiecieÅ”ama maksimālā veiktspēja ilgākā laika periodā, iespējams, vēlēsities apsvērt citus gadÄ«jumu veidus. TieÅ”i tā mēs arÄ« darÄ«jām, pieturoties c5.4xliels. Tas nodroÅ”ina maksimālu caurlaidspēju 593,75 Mb/s. Maksimālā EBS apjoma caurlaidspēja io1 augstāks par gadÄ«jumu c5.4xliels, tāpēc vislēnākais infrastruktÅ«ras elements, visticamāk, ir Ŕī gadÄ«juma veida I/O caurlaidspēja (kas arÄ« jāapstiprina mÅ«su slodzes testiem).

TÄ«kls

TÄ«kla caurlaidspējai jābÅ«t pietiekami lielai salÄ«dzinājumā ar VM instances un diska veiktspēju, pretējā gadÄ«jumā tÄ«kls kļūst par saÅ”aurinājumu. MÅ«su gadÄ«jumā tÄ«kla saskarne c5.4xliels atbalsta ātrumu lÄ«dz 10 Gb/s, kas ir ievērojami augstāks nekā VM instances I/O caurlaidspēja.

Brokeru izvietoŔana

Brokeri ir jāizvieto (ieplānoti programmā Kubernetes) speciālos mezglos, lai izvairītos no konkurences ar citiem procesiem par CPU, atmiņu, tīklu un diska resursiem.

Java versija

LoÄ£iska izvēle ir Java 11, jo tā ir saderÄ«ga ar Docker tādā nozÄ«mē, ka JVM pareizi nosaka procesorus un atmiņu, kas ir pieejama konteineram, kurā darbojas brokeris. Zinot, ka CPU ierobežojumi ir svarÄ«gi, JVM iekŔēji un pārredzami nosaka GC pavedienu un JIT pavedienu skaitu. Mēs izmantojām Kafkas attēlu banzaicloud/kafka:2.13-2.4.0, kas ietver Kafka versiju 2.4.0 (Scala 2.13) uz Java 11.

Ja vēlaties uzzināt vairāk par Java/JVM vietnē Kubernetes, skatiet mÅ«su Ŕīs ziņas:

Brokera atmiņas iestatījumi

Brokera atmiņas konfigurÄ“Å”anai ir divi galvenie aspekti: JVM un Kubernetes pod iestatÄ«jumi. Atmiņas ierobežojumam, kas iestatÄ«ts podam, ir jābÅ«t lielākam par maksimālo kaudzes lielumu, lai JVM bÅ«tu vieta Java metavietai, kas atrodas tā atmiņā, un operētājsistēmas lapas keÅ”atmiņai, ko aktÄ«vi izmanto Kafka. MÅ«su testos mēs uzsākām Kafka brokerus ar parametriem -Xmx4G -Xms2G, un atmiņas ierobežojums podam bija 10 Gi. LÅ«dzu, ņemiet vērā, ka JVM atmiņas iestatÄ«jumus var iegÅ«t automātiski, izmantojot -XX:MaxRAMPercentage Šø -X:MinRAMPercentage, pamatojoties uz podziņas atmiņas ierobežojumu.

Brokeru procesora iestatījumi

Vispārīgi runājot, veiktspēju var uzlabot, palielinot paralēlismu, palielinot Kafkas izmantoto pavedienu skaitu. Jo vairāk Kafka procesoru ir pieejams, jo labāk. Pārbaudē mēs sākām ar 6 procesoru ierobežojumu un pakāpeniski (izmantojot iterācijas) palielinājām to skaitu līdz 15. Turklāt mēs iestatījām num.network.threads=12 brokera iestatījumos, lai palielinātu to pavedienu skaitu, kas saņem datus no tīkla un nosūta tos. Uzreiz atklājot, ka sekotāju brokeri nevar pietiekami ātri saņemt kopijas, viņi izvirzīja jautājumu num.replica.fetchers uz 4, lai palielinātu ātrumu, kādā sekotāju brokeri atkārto ziņojumus no līderiem.

Slodzes ģenerēŔanas rīks

Jums jānodroÅ”ina, lai izvēlētā slodzes Ä£eneratora jauda neiztrÅ«ktu, pirms Kafka klasteris (kas tiek veikts etalonuzņēmumā) sasniedz maksimālo slodzi. Citiem vārdiem sakot, ir jāveic iepriekŔējs slodzes Ä£enerÄ“Å”anas rÄ«ka iespēju novērtējums, kā arÄ« jāizvēlas tam instanču veidi ar pietiekamu skaitu procesoru un atmiņas. Å ajā gadÄ«jumā mÅ«su rÄ«ks radÄ«s lielāku slodzi, nekā spēj izturēt Kafka klasteris. Pēc daudziem eksperimentiem mēs nolēmām trÄ«s eksemplārus c5.4xliels, no kuriem katrā darbojās Ä£enerators.

SalÄ«dzinoŔā novērtÄ“Å”ana

Veiktspējas mērÄ«Å”ana ir iteratÄ«vs process, kas ietver Ŕādus posmus:

  • infrastruktÅ«ras izveidoÅ”ana (EKS klasteris, Kafka klasteris, slodzes Ä£enerÄ“Å”anas rÄ«ks, kā arÄ« Prometheus un Grafana);
  • slodzes Ä£enerÄ“Å”ana uz noteiktu periodu, lai filtrētu nejauŔās novirzes savāktajos darbÄ«bas rādÄ«tājos;
  • brokera infrastruktÅ«ras un konfigurācijas pielāgoÅ”ana, pamatojoties uz novērotajiem darbÄ«bas rādÄ«tājiem;
  • atkārtojot procesu, lÄ«dz tiek sasniegts nepiecieÅ”amais Kafka klastera caurlaidspējas lÄ«menis. Tajā paŔā laikā tai ir jābÅ«t konsekventi reproducējamai un jāuzrāda minimālas caurlaidspējas atŔķirÄ«bas.

Nākamajā sadaļā ir aprakstÄ«tas darbÄ«bas, kas tika veiktas testÄ“Å”anas klastera salÄ«dzinoŔās novērtÄ“Å”anas procesā.

Darbarīki

Lai ātri izvietotu bāzes konfigurāciju, Ä£enerētu slodzes un novērtētu veiktspēju, tika izmantoti Ŕādi rÄ«ki.

  • Banzai mākoņu cauruļvads par EKS klastera organizÄ“Å”anu no Amazon c Prometejs (lai savāktu Kafkas un infrastruktÅ«ras rādÄ«tājus) un grafana (lai vizualizētu Å”os rādÄ«tājus). Mēs izmantojām priekÅ”rocÄ«bas integrēta Š² Cauruļvads pakalpojumi, kas nodroÅ”ina apvienoto uzraudzÄ«bu, centralizētu žurnālu vākÅ”anu, ievainojamÄ«bu skenÄ“Å”anu, avāriju atkopÅ”anu, uzņēmuma lÄ«meņa droŔību un daudz ko citu.
  • Sangrenel ā€” rÄ«ks Kafka klastera slodzes testÄ“Å”anai.
  • Grafana informācijas paneļi Kafka metrikas un infrastruktÅ«ras vizualizÄ“Å”anai: Kubernetes Kafka, Mezglu eksportētājs.
  • Supertubes CLI, lai vienkārŔākais veids, kā Kubernetes iestatÄ«t Kafka klasteru. Zookeeper, Kafka operators, Envoy un daudzi citi komponenti ir instalēti un pareizi konfigurēti, lai Kubernetes palaistu ražoÅ”anai gatavu Kafka klasteru.
    • UzstādÄ«Å”anai supertubes CLI izmantojiet sniegtos norādÄ«jumus Å”eit.

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

EKS klasteris

Sagatavojiet EKS kopu ar īpaŔiem darbinieku mezgliem c5.4xliels dažādās pieejamības zonās podiem ar Kafka brokeriem, kā arī īpaŔiem mezgliem slodzes ģeneratoram un uzraudzības infrastruktūrai.

banzai cluster create -f https://raw.githubusercontent.com/banzaicloud/kafka-operator/master/docs/benchmarks/infrastructure/cluster_eks_202001.json

Kad EKS klasteris ir izveidots un darbojas, iespējojiet tā integrēto uzraudzÄ«bas pakalpojums ā€” viņa izvietos Prometeju un Grafānu klasterÄ«.

Kafka sistēmas sastāvdaļas

Instalējiet Kafka sistēmas komponentus (Zookeeper, kafka-operator) EKS, izmantojot supertubes CLI:

supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>

Kafkas klasteris

Pēc noklusējuma EKS izmanto EBS tipa sējumus gp2, tāpēc jums ir jāizveido atseviŔķa krātuves klase, pamatojoties uz apjomiem io1 Kafka klasterim:

kubectl create -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
  type: io1
  iopsPerGB: "50"
  fsType: ext4
volumeBindingMode: WaitForFirstConsumer
EOF

Iestatiet parametru brokeriem min.insync.replicas=3 un izvietot brokeru blokus mezglos trīs dažādās pieejamības zonās:

supertubes cluster create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f https://raw.githubusercontent.com/banzaicloud/kafka-operator/master/docs/benchmarks/infrastructure/kafka_202001_3brokers.yaml --wait --timeout 600

Tēmas

Mēs paralēli palaidām trīs slodzes ģeneratora gadījumus. Katrs no viņiem raksta par savu tēmu, tas ir, mums ir vajadzīgas trīs tēmas:

supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
  name: perftest1
spec:
  name: perftest1
  partitions: 12
  replicationFactor: 3
  retention.ms: '28800000'
  cleanup.policy: delete
EOF

supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
    name: perftest2
spec:
  name: perftest2
  partitions: 12
  replicationFactor: 3
  retention.ms: '28800000'
  cleanup.policy: delete
EOF

supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
  name: perftest3
spec:
  name: perftest3
  partitions: 12
  replicationFactor: 3
  retention.ms: '28800000'
  cleanup.policy: delete
EOF

Katrai tēmai replikācijas koeficients ir 3 ā€” minimālā ieteicamā vērtÄ«ba ļoti pieejamām ražoÅ”anas sistēmām.

Slodzes ģenerēŔanas rīks

Mēs iedarbinājām trÄ«s slodzes Ä£eneratora kopijas (katrs rakstÄ«ja atseviŔķā tēmā). Slodzes Ä£eneratora blokiem ir jāiestata mezglu afinitāte, lai tie tiktu ieplānoti tikai tiem pieŔķirtajos mezglos:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: loadtest
  name: perf-load1
  namespace: kafka
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: loadtest
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: loadtest
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: nodepool.banzaicloud.io/name
                operator: In
                values:
                - loadgen
      containers:
      - args:
        - -brokers=kafka-0:29092,kafka-1:29092,kafka-2:29092,kafka-3:29092
        - -topic=perftest1
        - -required-acks=all
        - -message-size=512
        - -workers=20
        image: banzaicloud/perfload:0.1.0-blog
        imagePullPolicy: Always
        name: sangrenel
        resources:
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 2
            memory: 1Gi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

Daži punkti, kas jāņem vērā:

  • Slodzes Ä£enerators Ä£enerē ziņojumus, kuru garums ir 512 baiti, un publicē tos Kafkai 500 ziņojumu grupās.
  • Izmantojot argumentu -required-acks=all Publikācija tiek uzskatÄ«ta par veiksmÄ«gu, ja Kafka brokeri ir saņēmuÅ”i un apstiprinājuÅ”i visas ziņojuma sinhronizētās kopijas. Tas nozÄ«mē, ka etalonā mēs mērÄ«jām ne tikai lÄ«deru ziņojumu saņemÅ”anas ātrumu, bet arÄ« viņu sekotāju ziņojumu atkārtoÅ”anas ātrumu. Å Ä« testa mērÄ·is nav novērtēt patērētāja lasÄ«Å”anas ātrumu (patērētāji) nesen saņemtie ziņojumi, kas joprojām ir palikuÅ”i OS lapas keÅ”atmiņā, un to salÄ«dzinājums ar diskā saglabāto ziņojumu lasÄ«Å”anas ātrumu.
  • Slodzes Ä£enerators paralēli darbina 20 strādniekus (-workers=20). Katram darbiniekam ir 5 ražotāji, kuriem ir kopÄ«ga darbinieka saikne ar Kafkas kopu. Rezultātā katram Ä£eneratoram ir 100 ražotāji, un tie visi sÅ«ta ziņojumus Kafka klasterim.

Klastera veselības uzraudzība

Kafkas klastera slodzes testÄ“Å”anas laikā mēs arÄ« uzraudzÄ«jām tā stāvokli, lai nodroÅ”inātu, ka nav podziņas restartÄ“Å”anas, nav nesinhronizētu kopiju un maksimālo caurlaidspēju ar minimālām svārstÄ«bām.

  • Slodzes Ä£enerators raksta standarta statistiku par publicēto ziņojumu skaitu un kļūdu biežumu. Kļūdu Ä«patsvaram vajadzētu palikt nemainÄ«gam 0,00%.
  • KruÄ«za kontrole, ko izvietojis kafka-operator, nodroÅ”ina informācijas paneli, kurā varam arÄ« pārraudzÄ«t klastera stāvokli. Lai skatÄ«tu Å”o paneli, rÄ«kojieties Ŕādi:
    supertubes cluster cruisecontrol show -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file>
  • ISR lÄ«menis (ā€œsinhronizētoā€ reprodukciju skaits) sarauÅ”anās un izpleÅ”anās ir vienāda ar 0.

Mērījumu rezultāti

3 brokeri, ziņojuma lielums - 512 baiti

Ar starpsienām, kas vienmērÄ«gi sadalÄ«tas starp trim brokeriem, mēs varējām sasniegt veiktspēju ~500 Mb/s (apmēram 990 tÅ«kstoÅ”i ziņojumu sekundē):

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

JVM virtuālās maŔīnas atmiņas patēriņŔ nepārsniedza 2 GB:

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Diska caurlaidspēja sasniedza maksimālo I/O mezgla caurlaidspēju visos trīs gadījumos, kuros darbojās brokeri:

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

No datiem par atmiņas lietojumu mezglos var secināt, ka sistēmas buferizācija un keÅ”atmiņa aizņēma ~10-15 GB:

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

3 brokeri, ziņojuma lielums - 100 baiti

Samazinoties ziņojuma lielumam, caurlaidspēja samazinās par aptuveni 15ā€“20%: katra ziņojuma apstrādei patērētais laiks to ietekmē. Turklāt procesora slodze ir gandrÄ«z dubultojusies.

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Tā kā starpnieku mezglos joprojām ir neizmantoti kodoli, veiktspēju var uzlabot, mainot Kafka konfigurāciju. Tas nav viegls uzdevums, tāpēc, lai palielinātu caurlaidspēju, labāk ir strādāt ar lielākiem ziņojumiem.

4 brokeri, ziņojuma lielums - 512 baiti

JÅ«s varat viegli palielināt Kafka klastera veiktspēju, vienkārÅ”i pievienojot jaunus brokerus un saglabājot starpsienu lÄ«dzsvaru (tas nodroÅ”ina vienmērÄ«gu slodzes sadalÄ«jumu starp brokeriem). MÅ«su gadÄ«jumā pēc brokera pievienoÅ”anas klastera caurlaidspēja palielinājās lÄ«dz ~580 Mb/s (~1,1 miljons ziņojumu sekundē). Izaugsme izrādÄ«jās mazāka, nekā gaidÄ«ts: tas galvenokārt skaidrojams ar starpsienu nelÄ«dzsvarotÄ«bu (ne visi brokeri strādā savu iespēju maksimumā).

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

JVM maŔīnas atmiņas patēriņŔ palika zem 2 GB:

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Brokeru darbu ar diskdziņiem ietekmēja starpsienu nelīdzsvarotība:

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Nosakiet atbilstoÅ”o izmēru Kafka klasterim Kubernetes

Atzinumi

IepriekÅ” aprakstÄ«to iteratÄ«vo pieeju var paplaÅ”ināt, lai aptvertu sarežģītākus scenārijus, kuros iesaistÄ«ti simtiem patērētāju, pārdalÄ«Å”ana, slÄ«doÅ”ie atjauninājumi, podziņu restartÄ“Å”ana utt. Tas viss ļauj novērtēt Kafkas klastera spēju robežas dažādos apstākļos, identificēt vājās vietas tā darbÄ«bā un atrast veidus, kā ar tām cÄ«nÄ«ties.

Mēs izstrādājām Supertubes, lai ātri un viegli izvietotu klasteru, konfigurētu to, pievienotu/noņemtu starpniekus un tēmas, reaģētu uz brÄ«dinājumiem un nodroÅ”inātu, ka Kafka kopumā darbojas pareizi Kubernetes. MÅ«su mērÄ·is ir palÄ«dzēt jums koncentrēties uz galveno uzdevumu (ā€œÄ£enerētā€ un ā€œpatērētā€ Kafka ziņojumus) un atstāt visu smago darbu Supertubes un Kafka operatora ziņā.

Ja jūs interesē Banzai Cloud tehnoloģijas un atvērtā koda projekti, abonējiet uzņēmumu plkst GitHub, LinkedIn vai Twitter.

PS no tulka

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru