Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Nota. transl.: F'dan l-artikolu, Banzai Cloud jaqsam eżempju ta' kif l-għodod personalizzati tiegħu jistgħu jintużaw biex jagħmlu Kafka aktar faċli biex jintuża fi ħdan Kubernetes. L-istruzzjonijiet li ġejjin juru kif tista’ tiddetermina l-aħjar daqs tal-infrastruttura tiegħek u tikkonfigura lil Kafka innifsu biex tikseb il-fluss meħtieġ.

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Apache Kafka hija pjattaforma ta' streaming distribwita għall-ħolqien ta' sistemi ta' streaming f'ħin reali affidabbli, skalabbli u ta' prestazzjoni għolja. Il-kapaċitajiet impressjonanti tiegħu jistgħu jiġu estiżi bl-użu ta 'Kubernetes. Għal dan żviluppajna Operatur Kafka Open Source u għodda msejħa Supertubi. Jippermettulek tħaddem Kafka fuq Kubernetes u tuża l-karatteristiċi varji tagħha, bħall-irfinar tal-konfigurazzjoni tas-sensar, skalar ibbażat fuq il-metrika b'ibbilanċjar mill-ġdid, għarfien tar-rack, "artab" (grazzjuż) it-tnedija ta' aġġornamenti, eċċ.

Ipprova Supertubes fil-grupp tiegħek:

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

Jew ikkuntattja dokumentazzjoni. Tista 'wkoll taqra dwar xi wħud mill-kapaċitajiet ta' Kafka, li x-xogħol tiegħu huwa awtomatizzat bl-użu ta 'Supertubes u operatur Kafka. Diġà ktibna dwarhom fuq il-blog:

Meta tiddeċiedi li tiskjera cluster Kafka fuq Kubernetes, x'aktarx tkun iffaċċjat bl-isfida li tiddetermina d-daqs ottimali tal-infrastruttura sottostanti u l-ħtieġa li tirfina l-konfigurazzjoni Kafka tiegħek biex tissodisfa r-rekwiżiti ta’ throughput. Il-prestazzjoni massima ta 'kull sensar hija ddeterminata mill-prestazzjoni tal-komponenti tal-infrastruttura sottostanti, bħal memorja, proċessur, veloċità tad-disk, bandwidth tan-netwerk, eċċ.

Idealment, il-konfigurazzjoni tas-sensar għandha tkun tali li l-elementi kollha tal-infrastruttura jintużaw għall-kapaċitajiet massimi tagħhom. Madankollu, fil-ħajja reali din is-setup hija pjuttost kumplessa. Huwa aktar probabbli li l-utenti se jikkonfiguraw sensara biex jimmassimizzaw l-użu ta 'wieħed jew żewġ komponenti (disk, memorja, jew proċessur). B'mod ġenerali, sensar juri prestazzjoni massima meta l-konfigurazzjoni tiegħu tippermetti li l-komponent l-aktar bil-mod jintuża sal-limitu massimu tiegħu. Dan il-mod nistgħu nieħdu idea approssimattiva tat-tagħbija li sensar wieħed jista 'jimmaniġġja.

Teoretikament, nistgħu wkoll nistmaw in-numru ta 'sensara meħtieġa biex jimmaniġġaw tagħbija partikolari. Madankollu, fil-prattika hemm tant għażliet ta 'konfigurazzjoni f'livelli differenti li huwa diffiċli ħafna (jekk mhux impossibbli) li tiġi evalwata l-prestazzjoni potenzjali ta' konfigurazzjoni partikolari. Fi kliem ieħor, huwa diffiċli ħafna li tippjana konfigurazzjoni bbażata fuq xi prestazzjoni partikolari.

Għall-utenti ta 'Supertubes, ġeneralment nieħdu l-approċċ li ġej: nibdew b'xi konfigurazzjoni (infrastruttura + settings), imbagħad inkejlu l-prestazzjoni tagħha, aġġusta s-settings tas-sensar u rrepeti l-proċess mill-ġdid. Dan iseħħ sakemm l-iktar komponent bil-mod tal-infrastruttura jiġi utilizzat bis-sħiħ.

B'dan il-mod, aħna jkollna idea aktar ċara ta 'kemm sensara raggruppament jeħtieġ biex jimmaniġġjaw ċertu tagħbija (in-numru ta' sensara jiddependi wkoll fuq fatturi oħra, bħan-numru minimu ta 'repliki ta' messaġġi biex tiġi żgurata r-reżistenza, in-numru ta 'partizzjoni mexxejja, eċċ.). Barra minn hekk, niksbu għarfien dwar liema komponenti tal-infrastruttura jeħtieġu skala vertikali.

Dan l-artikolu se jitkellem dwar il-passi li nieħdu biex niksbu l-aħjar mill-komponenti l-aktar bil-mod fil-konfigurazzjonijiet inizjali u nkejjel il-fluss ta 'cluster Kafka. Konfigurazzjoni reżiljenti ħafna teħtieġ mill-inqas tliet sensara li jaħdmu (min.insync.replicas=3), imqassma fi tliet żoni ta’ aċċessibbiltà differenti. Biex tikkonfigura, niskala u tissorvelja l-infrastruttura Kubernetes, nużaw il-pjattaforma tagħna stess għall-ġestjoni tal-kontejners għal sħab ibridi - Pipeline. Jappoġġja fuq il-post (metall vojt, VMware) u ħames tipi ta 'sħab (Alibaba, AWS, Azure, Google, Oracle), kif ukoll kwalunkwe kombinazzjoni tagħhom.

Ħsibijiet dwar l-infrastruttura u l-konfigurazzjoni tal-cluster Kafka

Għall-eżempji hawn taħt, għażilna AWS bħala l-fornitur tal-cloud u EKS bħala d-distribuzzjoni Kubernetes. Konfigurazzjoni simili tista 'tiġi implimentata bl-użu P.K.E. - Distribuzzjoni Kubernetes minn Banzai Cloud, iċċertifikata minn CNCF.

Drive

Amazon toffri diversi Tipi ta' volum EBS. Fil-qalba gp2 и io1 hemm drives SSD, madankollu, biex jiżguraw throughput għoli gp2 jikkonsma krediti akkumulati (Kredti I/O), għalhekk ippreferajna t-tip io1, li joffri produzzjoni għolja konsistenti.

Tipi ta' istanzi

Il-prestazzjoni ta 'Kafka hija dipendenti ħafna fuq il-cache tal-paġna tas-sistema operattiva, għalhekk għandna bżonn każijiet b'memorja biżżejjed għas-sensara (JVM) u l-cache tal-paġna. Istanza c5.2xlarge - bidu tajjeb, peress li għandu 16 GB ta 'memorja u ottimizzat biex jaħdem mal-EBS. L-iżvantaġġ tiegħu huwa li huwa kapaċi biss li jipprovdi prestazzjoni massima għal mhux aktar minn 30 minuta kull 24 siegħa. Jekk it-tagħbija tax-xogħol tiegħek teħtieġ l-ogħla prestazzjoni fuq perjodu itwal ta 'żmien, tista' tkun trid tikkunsidra tipi oħra ta' istanzi. Dak hu eżattament dak li għamilna, waqfu fuq c5.4xlarge. Tipprovdi throughput massimu fi 593,75 Mbps. Throughput massimu ta' volum EBS io1 ogħla mill-istanza c5.4xlarge, għalhekk l-aktar element bil-mod tal-infrastruttura x'aktarx ikun it-throughput I/O ta' dan it-tip ta' istanza (li t-testijiet tat-tagħbija tagħna għandhom ukoll jikkonfermaw).

Network

Il-fluss tan-netwerk għandu jkun kbir biżżejjed meta mqabbel mal-prestazzjoni tal-istanza u d-disk tal-VM, inkella n-netwerk isir ostakolu. Fil-każ tagħna, l-interface tan-netwerk c5.4xlarge jappoġġja veloċitajiet sa 10 Gb/s, li huwa ogħla b'mod sinifikanti mill-fluss I/O ta' istanza VM.

Skjerament ta' Broker

Is-sensara għandhom jiġu skjerati (skedati f'Kubernetes) għal nodi ddedikati biex jevitaw li jikkompetu ma 'proċessi oħra għal riżorsi ta' CPU, memorja, netwerk u disk.

Verżjoni Java

L-għażla loġika hija Java 11 għaliex hija kompatibbli ma 'Docker fis-sens li l-JVM jiddetermina b'mod korrett il-proċessuri u l-memorja disponibbli għall-kontenitur li fih is-sensar ikun qed jaħdem. Billi jkun jaf li l-limiti tal-proċessuri huma importanti, il-JVM jistabbilixxi internament u b'mod trasparenti n-numru ta 'ħjut GC u ħjut JIT. Użajna l-immaġni Kafka banzaicloud/kafka:2.13-2.4.0, li tinkludi l-verżjoni Kafka 2.4.0 (Scala 2.13) fuq Java 11.

Jekk tixtieq titgħallem aktar dwar Java/JVM fuq Kubernetes, iċċekkja l-postijiet li ġejjin tagħna:

Settings tal-memorja tal-broker

Hemm żewġ aspetti ewlenin għall-konfigurazzjoni tal-memorja tas-sensar: settings għall-JVM u għall-pod Kubernetes. Il-limitu tal-memorja stabbilit għal pod għandu jkun akbar mid-daqs massimu tal-heap sabiex il-JVM ikollu spazju għall-metaspace Java li jirrisjedi fil-memorja tiegħu stess u għall-cache tal-paġna tas-sistema operattiva li Kafka juża b'mod attiv. Fit-testijiet tagħna nedejna sensara Kafka b'parametri -Xmx4G -Xms2G, u l-limitu tal-memorja għall-pod kien 10 Gi. Jekk jogħġbok innota li s-settings tal-memorja għall-JVM jistgħu jinkisbu awtomatikament bl-użu -XX:MaxRAMPercentage и -X:MinRAMPercentage, ibbażat fuq il-limitu tal-memorja għall-pod.

Settings tal-proċessur tal-broker

B'mod ġenerali, tista 'ttejjeb il-prestazzjoni billi żżid il-paralleliżmu billi żżid in-numru ta' ħjut użati minn Kafka. Aktar ma jkun hemm proċessuri għal Kafka, aħjar. Fit-test tagħna, bdejna b'limitu ta '6 proċessuri u gradwalment (permezz ta' iterazzjonijiet) għollejna n-numru tagħhom għal 15. Barra minn hekk, waqqafna num.network.threads=12 fis-settings tas-sensar biex iżżid in-numru ta 'ħjut li jirċievu data min-netwerk u tibgħatha. Immedjatament skoprew li s-sensara segwaċi ma setgħux jirċievu repliki malajr biżżejjed, qajmu num.replica.fetchers għal 4 biex tiżdied il-veloċità li biha s-sensara segwaċi irreplikaw messaġġi mill-mexxejja.

Għodda tal-Ġenerazzjoni tat-Tagħbija

Għandek tiżgura li l-ġeneratur tat-tagħbija magħżul ma jispiċċax tal-kapaċità qabel ma l-cluster Kafka (li qed jiġi benchmarked) jilħaq it-tagħbija massima tiegħu. Fi kliem ieħor, huwa meħtieġ li ssir valutazzjoni preliminari tal-kapaċitajiet tal-għodda tal-ġenerazzjoni tat-tagħbija, u tagħżel ukoll tipi ta 'istanza għaliha b'numru suffiċjenti ta' proċessuri u memorja. F'dan il-każ, l-għodda tagħna se tipproduċi aktar tagħbija milli l-grupp Kafka jista 'jimmaniġġja. Wara ħafna esperimenti, konna nilqgħu fuq tliet kopji c5.4xlarge, li kull wieħed minnhom kellu ġeneratur jaħdem.

Benchmarking

Il-kejl tal-prestazzjoni huwa proċess iterattiv li jinkludi l-istadji li ġejjin:

  • it-twaqqif ta' infrastruttura (kluster EKS, cluster Kafka, għodda għall-ġenerazzjoni tat-tagħbija, kif ukoll Prometheus u Grafana);
  • tiġġenera tagħbija għal ċertu perjodu biex tiffiltra devjazzjonijiet każwali fl-indikaturi tal-prestazzjoni miġbura;
  • l-aġġustament tal-infrastruttura u l-konfigurazzjoni tas-sensar ibbażati fuq indikaturi tal-prestazzjoni osservati;
  • tirrepeti l-proċess sakemm jintlaħaq il-livell meħtieġ ta' produzzjoni ta' cluster Kafka. Fl-istess ħin, għandu jkun riproduċibbli b'mod konsistenti u juri varjazzjonijiet minimi fil-produzzjoni.

It-taqsima li jmiss tiddeskrivi l-passi li twettqu matul il-proċess ta’ benchmarking tal-cluster tat-test.

Għodod

L-għodod li ġejjin intużaw biex tiġi skjerata malajr konfigurazzjoni tal-linja bażi, jiġġeneraw tagħbijiet, u jkejlu l-prestazzjoni:

  • Banzai Cloud Pipeline għall-organizzazzjoni ta' cluster EKS mill-Amazon c Prometheus (biex jiġbru Kafka u metriċi tal-infrastruttura) u grafana (biex Ħares dawn il-metriċi). Ħadna vantaġġ integrati в Pipeline servizzi li jipprovdu monitoraġġ federat, ġbir ċentralizzat ta’ log, skannjar tal-vulnerabbiltà, rkupru minn diżastri, sigurtà ta’ livell ta’ intrapriża u ħafna aktar.
  • Sangrenel — għodda għall-ittestjar tat-tagħbija ta' cluster Kafka.
  • Dashboards Grafana għall-viżwalizzazzjoni tal-metriċi u l-infrastruttura Kafka: Kubernetes Kafka, Node Esportatur.
  • Supertubes CLI għall-eħfef mod biex jitwaqqaf cluster Kafka fuq Kubernetes. Zookeeper, operatur Kafka, Envoy u ħafna komponenti oħra huma installati u kkonfigurati kif suppost biex imexxu cluster Kafka lest għall-produzzjoni fuq Kubernetes.
    • Għall-installazzjoni supertubi CLI uża l-istruzzjonijiet ipprovduti hawn.

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

cluster EKS

Ipprepara cluster EKS b'nodi tal-ħaddiema ddedikati c5.4xlarge f'żoni ta 'disponibbiltà differenti għall-imżiewed ma' sensara Kafka, kif ukoll nodi ddedikati għall-ġeneratur tat-tagħbija u l-infrastruttura ta 'monitoraġġ.

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

Ladarba l-cluster EKS ikun qed jaħdem, ippermetti l-integrazzjoni tiegħu servizz ta' monitoraġġ — se tiskjera Prometheus u Grafana fi cluster.

Komponenti tas-sistema Kafka

Installa l-komponenti tas-sistema Kafka (Zookeeper, kafka-operator) fl-EKS billi tuża supertubes CLI:

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

Kafka cluster

B'mod awtomatiku, EKS juża volumi EBS tat-tip gp2, għalhekk għandek bżonn toħloq klassi ta 'ħażna separata bbażata fuq il-volumi io1 għal Kafka cluster:

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

Issettja l-parametru għas-sensara min.insync.replicas=3 u skjera pods ta' sensar fuq nodi fi tliet żoni ta' disponibbiltà differenti:

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

Suġġetti

Għaddejna tliet istanzi tal-ġeneratur tat-tagħbija b'mod parallel. Kull wieħed minnhom jikteb fis-suġġett tiegħu stess, jiġifieri, għandna bżonn tliet suġġetti b'kollox:

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

Għal kull suġġett, il-fattur ta 'replikazzjoni huwa 3—il-valur minimu rakkomandat għal sistemi ta' produzzjoni disponibbli ħafna.

Għodda tal-Ġenerazzjoni tat-Tagħbija

Nedejna tliet kopji tal-ġeneratur tat-tagħbija (kull wieħed kiteb f'suġġett separat). Għall-imżiewed tal-ġeneratur tat-tagħbija, għandek bżonn tissettja l-affinità tan-nodi sabiex ikunu skedati biss fuq in-nodi allokati għalihom:

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

Xi ftit punti li wieħed għandu jinnota:

  • Il-ġeneratur tat-tagħbija jiġġenera messaġġi ta '512 bytes fit-tul u jippubblikahom lil Kafka f'lottijiet ta' 500 messaġġ.
  • Bl-użu ta' argument -required-acks=all Il-pubblikazzjoni titqies bħala suċċess meta r-repliki sinkronizzati kollha tal-messaġġ jiġu riċevuti u kkonfermati mis-sensara Kafka. Dan ifisser li fil-benchmark aħna kejlna mhux biss il-veloċità tal-mexxejja li jirċievu l-messaġġi, iżda wkoll is-segwaċi tagħhom li jirreplikaw il-messaġġi. L-għan ta' dan it-test mhuwiex li jevalwa l-veloċità tal-qari tal-konsumatur (konsumaturi) messaġġi riċevuti reċentement li għadhom jibqgħu fil-cache tal-paġna tal-OS, u t-tqabbil tiegħu mal-veloċità tal-qari tal-messaġġi maħżuna fuq id-diska.
  • Il-ġeneratur tat-tagħbija jmexxi 20 ħaddiem b'mod parallel (-workers=20). Kull ħaddiem fih 5 produtturi li jaqsmu l-konnessjoni tal-ħaddiem mal-grupp Kafka. Bħala riżultat, kull ġeneratur għandu 100 produttur, u kollha jibagħtu messaġġi lill-cluster Kafka.

Monitoraġġ tas-saħħa tal-cluster

Waqt l-ittestjar tat-tagħbija tar-raggruppament Kafka, aħna mmonitorjajna wkoll is-saħħa tiegħu biex niżguraw li ma kien hemm l-ebda startjar mill-ġdid tal-pods, l-ebda repliki mhux sinkronizzati, u throughput massimu b'varjazzjonijiet minimi:

  • Il-ġeneratur tat-tagħbija jikteb statistika standard dwar in-numru ta 'messaġġi ppubblikati u r-rata ta' żball. Ir-rata ta' żball għandha tibqa' l-istess 0,00%.
  • Kontroll tal-kruċiera, skjerat minn kafka-operator, jipprovdi dashboard fejn nistgħu wkoll nissorveljaw l-istat tal-cluster. Biex tara dan il-panel agħmel:
    supertubes cluster cruisecontrol show -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file>
  • Livell ISR (numru ta’ repliki “sinkronizzati”) shrink u espansjoni huma ugwali għal 0.

Riżultati tal-kejl

3 sensara, daqs tal-messaġġ - 512 bytes

B'diviżorji mqassma b'mod ugwali fuq tliet sensara, stajna niksbu prestazzjoni ~500 Mb/s (madwar 990 elf messaġġ kull sekonda):

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Il-konsum tal-memorja tal-magna virtwali JVM ma qabeż 2 GB:

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Il-fluss tad-disk laħaq il-fluss massimu tan-node I/O fit-tliet istanzi kollha li fuqhom kienu qed jaħdmu s-sensara:

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Mid-dejta dwar l-użu tal-memorja min-nodi, jirriżulta li l-buffering u l-caching tas-sistema ħadu ~ 10-15 GB:

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

3 sensara, daqs tal-messaġġ - 100 bytes

Hekk kif id-daqs tal-messaġġ jonqos, it-throughput jonqos b'madwar 15-20%: iż-żmien mgħoddi biex jipproċessa kull messaġġ jaffettwah. Barra minn hekk, it-tagħbija tal-proċessur kważi rdoppja.

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Peress li n-nodi tas-sensar għad għandhom qlub mhux użati, il-prestazzjoni tista 'tittejjeb billi tinbidel il-konfigurazzjoni Kafka. Din mhix biċċa xogħol faċli, għalhekk biex tiżdied it-throughput huwa aħjar li taħdem b'messaġġi akbar.

4 sensara, daqs tal-messaġġ - 512 bytes

Tista 'faċilment iżżid il-prestazzjoni ta' cluster Kafka billi sempliċement iżżid sensara ġodda u żżomm bilanċ ta 'diviżorji (dan jiżgura li t-tagħbija titqassam b'mod ugwali bejn is-sensara). Fil-każ tagħna, wara li żżid sensar, il-fluss tal-cluster żdied għal ~580 Mb/s (~1,1 miljun messaġġ kull sekonda). It-tkabbir irriżulta li kien inqas milli mistenni: dan huwa spjegat prinċipalment mill-iżbilanċ tal-ħitan (mhux is-sensara kollha jaħdmu fil-quċċata tal-kapaċitajiet tagħhom).

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Il-konsum tal-memorja tal-magna JVM baqa' taħt 2 GB:

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Ix-xogħol tas-sensara bi drives kien affettwat mill-iżbilanċ tal-ħitan:

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Iddetermina d-daqs xieraq għal cluster Kafka f'Kubernetes

Sejbiet

L-approċċ iterattiv ippreżentat hawn fuq jista’ jiġi estiż biex ikopri xenarji aktar kumplessi li jinvolvu mijiet ta’ konsumaturi, tqassim mill-ġdid, aġġornamenti regolari, startjar mill-ġdid tal-pods, eċċ. Dan kollu jippermettilna nevalwaw il-limiti tal-kapaċitajiet tal-cluster Kafka f'diversi kundizzjonijiet, nidentifikaw ostakoli fl-operat tiegħu u nsibu modi kif niġġielduhom.

Iddisinjajna Supertubes biex iħaddmu cluster malajr u faċilment, jikkonfigurawh, iżidu/neħħu sensara u suġġetti, jirrispondu għal twissijiet, u niżguraw li Kafka b'mod ġenerali jaħdem sew fuq Kubernetes. L-għan tagħna huwa li ngħinuk tikkonċentra fuq il-kompitu ewlieni ("jiġġenera" u "ikkonsma" messaġġi Kafka), u nħallu x-xogħol iebes kollu f'idejn Supertubes u l-operatur Kafka.

Jekk inti interessat fit-teknoloġiji Banzai Cloud u proġetti Open Source, abbona għall-kumpanija fuq GitHub, LinkedIn jew twitter.

PS minn traduttur

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment