Skip to content

Licea11/kafka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kafka on Kubernetes (KRaft)

Dos stacks independientes en modo KRaft. Cada stack es un único YAML con brokers, servicios, tópicos y workloads.

Stacks

Stack Archivo Namespace Brokers Workloads incluidos
Alto rendimiento kafka-high-perf.yaml kafka-high-perf 12 Job topic-setup, 6× producer-perf, 12× consumer-perf
Eventos / dev kafka-events.yaml kafka-events 3 Job topic-setup, producer, consumer

Arquitectura

flowchart TB
    subgraph HP["kafka-high-perf.yaml"]
        HBrokers["12 brokers KRaft"]
        HSvc["Services"]
        HTopic["Job: ultra-fast-topic"]
        HProd["6× producer-perf"]
        HCons["12× consumer-perf"]
        HBrokers --> HSvc
        HTopic --> HProd
        HTopic --> HCons
        HProd --> HSvc
        HCons --> HSvc
    end

    subgraph EV["kafka-events.yaml"]
        EBrokers["3 brokers KRaft"]
        ESvc["Services"]
        ETopic["Job: topic-test"]
        EProd["kafka-producer"]
        ECons["kafka-consumer"]
        EBrokers --> ESvc
        ETopic --> EProd
        ETopic --> ECons
        EProd --> ESvc
        ECons --> ESvc
    end
Loading

Nodos y almacenamiento

Los PersistentVolumes apuntan al nodo kafka-node (hostname detectado del entorno). Rutas de datos:

Stack Ruta en el nodo
Alto rendimiento /mnt/fast-ssd/kafka-{0..11}
Eventos /mnt/kafka-data/broker-{0..2}

Si despliegas en cluster multi-nodo, edita kubernetes.io/hostname en cada PV del stack correspondiente.

Despliegue

Prerrequisitos

./install.sh --install
./install-tools.sh    # opcional: kafkacat, k6

Stack eventos (recomendado para empezar)

sudo mkdir -p /mnt/kafka-data/broker-{0..2}
kubectl apply -f kafka-events.yaml
kubectl -n kafka-events wait --for=condition=ready pod -l app=kafka --timeout=300s
kubectl -n kafka-events logs -l app=kafka-producer --tail=20
kubectl -n kafka-events logs -l app=kafka-consumer --tail=20

El Job crea topic-test. El producer envía un heartbeat JSON cada 30 s; el consumer lo lee en el grupo test-consumidor.

Stack alto rendimiento

sudo mkdir -p /mnt/fast-ssd/kafka-{0..11}
kubectl apply -f kafka-high-perf.yaml
kubectl -n kafka-high-perf wait --for=condition=ready pod -l app=kafka --timeout=600s

El Job crea ultra-fast-topic (72 particiones). Los deployments de perf esperan el tópico antes de iniciar el benchmark.

Nota: 12 brokers con 16–24 GiB RAM cada uno requieren hardware dedicado. En un solo nodo (kafka-node) sirve para validar manifests; para benchmark real usa cluster multi-nodo.

Archivos del repositorio

Archivo Propósito
kafka-high-perf.yaml Stack completo alto rendimiento
kafka-events.yaml Stack completo eventos + clientes
kafka-operations.sh Operaciones manuales: tópicos, grupos, limpieza PV

KRaft: arranque de brokers

Script kafka-startup en cada stack:

  1. Deriva node.id del ordinal del pod (kafka-00)
  2. Sustituye variables en server.properties
  3. Ejecuta kafka-storage.sh format en el primer arranque
  4. Inicia el broker con KAFKA_HEAP_OPTS (12 GiB en high-perf, 2 GiB en eventos)

Operaciones manuales

# Consola interactiva (stack eventos)
kubectl exec -it deploy/kafka-producer -n kafka-events -- bash
kubectl exec -it kafka-0 -n kafka-events -- /opt/kafka/bin/kafka-topics.sh \
  --bootstrap-server kafka-service.kafka-events.svc.cluster.local:9092 --list

Más comandos en kafka-operations.sh.

Tuning (alto rendimiento)

num.network.threads=16
num.io.threads=24
compression.type=snappy
log.segment.bytes=1073741824
default.replication.factor=2
min.insync.replicas=1

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages