GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer et exécuter Kafka sur Kubernetes

Qu'est-ce qu'Apache Kafka ?

Kafka est un système de messagerie qui collecte et traite de grandes quantités de données en temps réel, ce qui en fait un composant d'intégration essentiel pour les applications exécutées dans un cluster Kubernetes. L'efficacité des applications déployées dans un cluster peut être encore augmentée avec une plate-forme de streaming d'événements telle que Apache Kafka .

Ce tutoriel détaillé vous montre comment configurer un serveur Kafka sur un cluster Kubernetes.

Comment fonctionne Apache Kafka ?

Apache Kafka est basé sur un modèle de publication-abonnement :

  1. Producteurs produire des messages et les publier dans des sujets .
  2. Kafka catégorise les messages en sujets et les stocke afin qu'ils soient immuables.
  3. Les consommateurs s'abonnent à un sujet spécifique et assimiler les messages fournis par les producteurs.

Les producteurs et les consommateurs dans ce contexte représentent des applications qui produisent des messages événementiels et des applications qui consomment ces messages. Les messages sont stockés sur les courtiers Kafka, triés par sujets définis par l'utilisateur .

Zookeeper est un composant indispensable d'une configuration Kafka. Il coordonne les producteurs, les courtiers, les consommateurs et les membres des clusters Kafka.

Déployer Zookeeper

Kafka ne peut pas fonctionner sans Zookeeper. Le service Kafka continue de redémarrer jusqu'à ce qu'un déploiement Zookeeper fonctionnel soit détecté.

Déployez Zookeeper au préalable, en créant un fichier YAML zookeeper.yml . Ce fichier démarre un service et un déploiement qui planifient les pods Zookeeper sur un cluster Kubernetes.

Utilisez votre éditeur de texte préféré pour ajouter les champs suivants à 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

Exécutez la commande suivante sur votre cluster Kubernetes pour créer le fichier de définition :

kubectl create -f zookeeper.yml

Créer un service Kafka

Nous devons maintenant créer un fichier de définition de service Kafka. Ce fichier gère les déploiements de Kafka Broker en équilibrant la charge des nouveaux pods Kafka. Un kafka-service.yml de base le fichier contient les éléments suivants :

 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

Une fois le fichier enregistré, créez le service en saisissant la commande suivante :

kubectl create -f kafka-service.yml

Définir le contrôleur de réplication Kafka

Créez un .yml supplémentaire fichier pour servir de contrôleur de réplication pour Kafka. Un fichier de contrôleur de réplication, dans notre exemple kafka-repcon.yml, contient les champs suivants :

---  
 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

Enregistrez le fichier de définition du contrôleur de réplication et créez-le à l'aide de la commande suivante :

kubectl create -f kafka-repcon.yml

Démarrer le serveur Kafka

Les propriétés de configuration d'un serveur Kafka sont définies dans le config/server.properties dossier. Comme nous avons déjà configuré le serveur Zookeeper, démarrez le serveur Kafka avec :

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

Comment créer un sujet Kafka

Kafka a un utilitaire de ligne de commande appelé kafka-topics.sh . Utilisez cet utilitaire pour créer des rubriques sur le serveur. Ouvrez une nouvelle fenêtre de terminal et tapez :

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

Nous avons créé un sujet nommé Nom du sujet avec une seule partition et une instance dupliquée.

Comment démarrer un producteur de Kafka

Le config/server.properties Le fichier contient l'ID du port du courtier. Le courtier de l'exemple écoute sur le port 9092. Il est possible de spécifier le port d'écoute directement à l'aide de la ligne de commande :

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

Utilisez maintenant le terminal pour ajouter plusieurs lignes de messages.

Comment démarrer un consommateur Kafka

Comme pour les propriétés Producer, les paramètres Consumer par défaut sont spécifiés dans config/consumer.properties dossier. Ouvrez une nouvelle fenêtre de terminal et tapez la commande pour consommer les messages :

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

Le --from-beginning La commande répertorie les messages par ordre chronologique. Vous pouvez désormais saisir des messages depuis le terminal du producteur et les voir apparaître sur le terminal du consommateur.

Comment faire évoluer un cluster Kafka

Utilisez le terminal de commande et administrez directement le cluster Kafka à l'aide de kubectl . Entrez la commande suivante et mettez à l'échelle votre cluster Kafka rapidement en augmentant le nombre de pods de un (1) à six (6) :

kubectl scale rc kafka-rc --replicas=6

Cent OS
  1. Comment déployer et exécuter Redis dans Docker

  2. Comment installer et exécuter Python sur CentOS 8

  3. Comment compiler et exécuter le programme C dans Ubuntu

  4. Comment installer et configurer mysql 8 sur Ubuntu 20.04

  5. Comment définir ou modifier le fuseau horaire sur Ubuntu 20.04 et 21.04

Comment installer et configurer SeedDMS

Comment écrire et exécuter un programme C dans Debian 10

Comment installer et configurer Jenkins dans Fedora 35

Comment installer et configurer Jenkins dans Debian 11

Comment compiler et exécuter un programme C sous Linux

Comment configurer et exécuter un Cron dans cPanel