GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare ed eseguire Kafka su Kubernetes

Cos'è Apache Kafka?

Kafka è un sistema di messaggistica che raccoglie ed elabora grandi quantità di dati in tempo reale, rendendolo un componente di integrazione vitale per le applicazioni in esecuzione in un cluster Kubernetes. L'efficienza delle applicazioni distribuite in un cluster può essere ulteriormente aumentata con una piattaforma di streaming di eventi come Apache Kafka .

Questo tutorial approfondito mostra come configurare un server Kafka su un cluster Kubernetes.

Come funziona Apache Kafka?

Apache Kafka si basa su un modello di pubblicazione-abbonamento:

  1. Produttori produrre messaggi e pubblicarli su argomenti .
  2. Kafka classifica i messaggi in argomenti e li memorizza in modo che siano immutabili.
  3. I consumatori si iscrivono a un argomento specifico e assorbire i messaggi forniti dai produttori.

Produttori e consumatori in questo contesto rappresentano applicazioni che producono messaggi basati su eventi e applicazioni che consumano tali messaggi. I messaggi sono archiviati sui broker Kafka, ordinati per argomenti definiti dall'utente .

Zookeeper è un componente indispensabile di una configurazione Kafka. Coordina i produttori Kafka, i broker, i consumatori e le iscrizioni ai cluster.

Distribuisci Zookeeper

Kafka non può funzionare senza Zookeeper. Il servizio Kafka continua a riavviarsi finché non viene rilevata una distribuzione Zookeeper funzionante.

Distribuisci Zookeeper in anticipo, creando un file YAML zookeeper.yml . Questo file avvia un servizio e una distribuzione che pianificano i pod Zookeeper su un cluster Kubernetes.

Usa il tuo editor di testo preferito per aggiungere i seguenti campi a zookeeper.yml :

apiVersion: v1
kind: Service
metadata:
  name: zk-s
  labels:
    app: zk-1
spec:
  ports:
  - name: client
    port: 2181
    protocol: TCP
  - name: follower
    port: 2888
    protocol: TCP
  - name: leader
    port: 3888
    protocol: TCP
  selector:
    app: zk-1
    ---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: zk-deployment-1
spec:
  template:
    metadata:
      labels:
        app: zk-1
    spec:
      containers:
      - name: zk1
        image: bitnami/zookeeper
        ports:
        - containerPort: 2181
        env:
        - name: ZOOKEEPER_ID
          value: "1"
        - name: ZOOKEEPER_SERVER_1
          value: zk1

Esegui il comando seguente sul tuo cluster Kubernetes per creare il file di definizione:

kubectl create -f zookeeper.yml

Crea servizio Kafka

Ora dobbiamo creare un file di definizione del servizio Kafka. Questo file gestisce le distribuzioni di Kafka Broker bilanciando il carico dei nuovi pod Kafka. Un kafka-service.yml di base contiene i seguenti elementi:

 apiVersion: v1 
 kind: Service 
 metadata:  
   labels:  
     app: kafkaApp 
   name: kafka
 spec:  
   ports:  
     -  
       port: 9092 
       targetPort: 9092
      protocol: TCP
     -  
       port: 2181 
       targetPort: 2181 
   selector:  
     app: kafkaApp 
   type: LoadBalancer

Una volta salvato il file, crea il servizio inserendo il seguente comando:

kubectl create -f kafka-service.yml

Definisci Kafka Replication Controller

Crea un ulteriore .yml file per fungere da controller di replica per Kafka. Un file del controller di replica, nel nostro esempio kafka-repcon.yml, contiene i seguenti campi:

---  
 apiVersion: v1 
 kind: ReplicationController 
 metadata:  
   labels:  
     app: kafkaApp 
   name: kafka-repcon 
 spec:  
   replicas: 1
   selector:  
     app: kafkaApp 
   template:  
     metadata:  
       labels:  
         app: kafkaApp 
     spec:  
       containers:  
-
           command:  
             - zookeeper-server-start.sh 
             - /config/zookeeper.properties 
           image: "wurstmeister/kafka" 
           name: zk1 
           ports:  
             -  
               containerPort: 2181

Salvare il file di definizione del controller di replica e crearlo utilizzando il comando seguente:

kubectl create -f kafka-repcon.yml

Avvia Kafka Server

Le proprietà di configurazione per un server Kafka sono definite in config/server.properties file. Poiché abbiamo già configurato il server Zookeeper, avvia il server Kafka con:

kafka-server-start.sh config/server.properties

Come creare un argomento Kafka

Kafka ha un'utilità da riga di comando chiamata kafka-topics.sh . Utilizzare questa utilità per creare argomenti sul server. Apri una nuova finestra di terminale e digita:

kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic Topic-Name

Abbiamo creato un argomento chiamato Nome-argomento con una singola partizione e un'istanza di replica.

Come avviare un produttore Kafka

config/server.properties contiene l'ID della porta del broker. Il broker nell'esempio è in ascolto sulla porta 9092. È possibile specificare la porta in ascolto direttamente utilizzando la riga di comando:

kafka-console-producer.sh --topic kafka-on-kubernetes --broker-list localhost:9092 --topic Topic-Name 

Ora usa il terminale per aggiungere diverse righe di messaggi.

Come avviare un consumatore Kafka

Come per le proprietà Producer, le impostazioni Consumer predefinite sono specificate in config/consumer.properties file. Apri una nuova finestra di terminale e digita il comando per consumare i messaggi:

kafka-console-consumer.sh --topic Topic-Name --from-beginning --zookeeper localhost:2181 

Il --from-beginning comando elenca i messaggi in ordine cronologico. Ora puoi inserire messaggi dal terminale del produttore e vederli apparire nel terminale del consumatore.

Come scalare un cluster Kafka

Usa il terminale di comando e amministra direttamente il Kafka Cluster usando kubectl . Immettere il comando seguente e ridimensionare rapidamente il cluster Kafka aumentando il numero di pod da uno (1) a sei (6):

kubectl scale rc kafka-rc --replicas=6

Cent OS
  1. Come distribuire ed eseguire Redis in Docker

  2. Come installare ed eseguire Python su CentOS 8

  3. Come compilare ed eseguire il programma C in Ubuntu

  4. Come installare e configurare mysql 8 su Ubuntu 20.04

  5. Come impostare o modificare il fuso orario su Ubuntu 20.04 e 21.04

Come installare e configurare SeedDMS

Come scrivere ed eseguire un programma C in Debian 10

Come installare e configurare Jenkins in Fedora 35

Come installare e configurare Jenkins in Debian 11

Come compilare ed eseguire il programma C in Linux

Come impostare ed eseguire un cron in cPanel