Apache Kafka - Didacticiels

Comment provisionner un PaaS Apache Kafka ?

Pour commencer, rendez-vous sur ITCare et recherchez votre service global cible où vous créerez votre nouveau cluster Apache Kafka.

Recherchez votre service Global dans la barre de recherche supérieure et cliquez dessus pour afficher sa page d'information.

Une fois dans votre Service Global, cliquez sur le bouton Créer une ressource, sélectionnez Apache Kafka et la version requise.

Remplir le formulaire :

  • Définir le nom du futur cluster

  • Le nombre de broker (3+)

  • Le dimensionnement

  • Le stockage requis sur chaque broker

  • La localisation cible

  • Le réseau cible

  • Les options de gestion (sauvegarde, surveillance, 24/7, réplication site distant)

Cliquer sur Suivant une fois les champs remplis. A l'étape suivante, saisir le mot de passe du compte super user qui sera fourni puis cliquer sur Suivant.

Les mots de passe ne sont pas sauvegardés par cegedim.cloud.

Assurez-vous de sauvegarder votre mot de passe!

Réviser la synthèse avant de soumettre le formulaire.

Le provisionnement peut prendre jusqu'à 2 heures en fonction de la charge actuelle de l'automatisation.

Une fois le déploiement prêt, vous en serez informé par e-mail.

Démarrer un cluster

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Démarrer et confirmer.

Le démarrage d'un cluster démarre toutes les machines virtuelles attachées au cluster.

Une notification par courriel sera envoyée lorsque le service sera activé.

Arrêter un cluster

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Stop.

Saisissez un numéro RFC pour le suivi (facultatif). Cliquez sur Soumettre.

L'arrêt d'un cluster arrêtera toutes les machines virtuelles attachées au cluster et la surveillance sera désactivée.

Une notification par courrier électronique sera envoyée lorsque le cluster sera arrêté.

Redimensionner les nœuds

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Redimensionner les nœuds.

Sélectionnez les nœuds que vous souhaitez redimensionner et sélectionnez la nouvelle taille (cpu/ram).

Chaque nœud sera redimensionné et redémarré de manière séquentielle.

Une notification par courriel sera envoyée lorsque tous les nœuds auront été redimensionnés.

Supprimer un cluster

En haut de la page du cluster, cliquez sur le bouton Gérer, puis sur Supprimer. Cette action arrêtera et supprimera toutes les machines virtuelles.

Veuillez noter que cette action n'est pas récupérable!

Saisissez un numéro RFC pour le suivi (facultatif), puis cliquez sur Soumettre.

Une notification par courriel sera envoyée lorsque le cluster sera supprimé.

Comment gérer Apache Kafka ?

Pour interagir avec votre cluster sécurisé en utilisant les scripts Kafka, vous devez d'abord télécharger l'archive Apache Kafka depuis le site officiel.

Idéalement, vous devriez télécharger la version exacte correspondant à votre cluster.

Une fois dézippé et désarchivé sur votre serveur ou client Linux, vous trouverez les scripts shell Kafka dans le répertoire /bin.

Ces scripts permettent de :

  • Produire et consommer

  • Gérer les utilisateurs

  • Gérer les sujets

  • ACL de gestion

  • Gérer les configurations des articles

Ce guide n'entrera pas dans les détails de tous les scripts mais vous aidera à démarrer avec des commandes simples.

Authentification

Pour se connecter à un cluster Kafka sécurisé, vous devez configurer un keystore et un fichier de propriétés.

Créer un keystore

Créez le keystore avec le certificat fourni :

keytool -keystore kafka.client.truststore.jks -alias ca-cert-cluster1 -import -file ca-cert -storepass <redacted> -keypass <redacted> -noprompt
  • Alias : alias du certificat dans le keystore

  • Import-file: nom du fichier de certificat contenant le certificat fourni

  • Storepass et keypass : mot de passe pour protéger votre keystore, doivent être identiques

Pour lister le contenu de votre keystore, utilisez cette commande :

keytool -list -v -keystore kafka.client.truststore.jks

Fichier de propriétés

Une fois le keystore créé, il vous faut maintenant un fichier de propriétés :

security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="password";
ssl.truststore.location=/path/to/kafka.client.truststore.jks
ssl.truststore.password=keystore-password
  • username : le super utilisateur kafka qui vous est fourni par email

  • mot de passe : le mot de passe de cet utilisateur que vous avez fourni lors du provisionnement.

  • ssl.truststore.location : l'emplacement de votre keystore précédemment créé

  • ssl.truststore.password : le mot de passe pour déverrouiller votre keystore (storepass / keypass utilisé)

Ligne de commande

Avec ces éléments, vous pouvez maintenant utiliser n'importe quel script shell Kafka avec le paramètre suivant :

--command-config client.properties

Gérer les topics

Créer un topic

# Use an env variable for short commands, the bootstrap-server is available in ITCare
export BROKERS=broker1.hosting.cegedim.cloud:9094,broker2.hosting.cegedim.cloud:9094,broker3.hosting.cegedim.cloud:9094 
kafka-topics.sh --bootstrap-server $BROKERS --create --replication-factor 3 --partitions 3 --topic my-topic --command-config client.properties 
Created topic my-topic.

Lister des topics

kafka-topics.sh --bootstrap-server $BROKERS -list --command-config client.properties my-topic

Décrire un topic

kafka-topics.sh --bootstrap-server $BROKERS --describe --topic my-topic --command-config client.properties 
Topic: my-topic	      TopicId: 84yqCErzTG27J4wv44dkPQ	PartitionCount: 4	ReplicationFactor: 3	Configs: cleanup.policy=delete
Topic: my-topicc	Partition: 0	Leader: 2	Replicas: 2,3,1	Isr: 2,3,1
Topic: my_topic		Partition: 1	Leader: 3	Replicas: 3,1,2	Isr: 3,1,2
Topic: my_topic		Partition: 2	Leader: 1	Replicas: 1,2,3	Isr: 1,2,3
Topic: my_topic		Partition: 3	Leader: 2	Replicas: 2,1,3	Isr: 2,1,3

Supprimer un topic

kafka-topics.sh --bootstrap-server $BROKERS --delete --topic my-topic --command-config client.properties

Ajouter des partitions au topic

kafka-topics.sh --bootstrap-server $BROKERS --alter --topic my-topic --partitions 16 --command-config client.properties

Lister les partitions sous-répliquées pour tous les topics

kafka-topics.sh --bootstrap-server $BROKERS --describe --under-replicated-partitions --command-config client.properties

Lister les ACLs pour un topic

kafka-acls.sh --bootstrap-server $BROKERS --topic=my-topic --list --command-config client.properties

Gérer les utilisateurs

Créer un utilisateur Kafka

kafka-configs.sh --bootstrap-server $BROKERS --alter --add-config 'SCRAM-SHA-256=[password=secret]' --entity-type users --entity-name username --command-config client.properties

Lister des utilisateurs de Kafka

kafka-configs.sh --bootstrap-server $BROKERS --describe --entity-type users --command-config client.properties

Supprimer un utilisateur Kafka

kafka-configs.sh --bootstrap-server $BROKERS --alter --delete-config 'SCRAM-SHA-256' --entity-type users --entity-name username --command-config client.properties

Lister tous les ACLs

kafka-acls.sh --bootstrap-server $BROKERS --list --command-config client.properties

Lister les ACL pour un utilisateur Kafka

kafka-acls.sh --bootstrap-server $BROKERS --principal User:admin --list --command-config client.properties

Définir des ACL pour un utilisateur Kafka

kafka-acls.sh --bootstrap-server $BROKERS --add --allow-principal User:alice --producer --topic my-topic --command-config client.properties

Supprimer un ACL pour un utilisateur Kafka

kafka-acls.sh --bootstrap-server $BROKERS --remove --allow-principal User:bob --consumer --topic my-topic --group my-consumer-group --command-config client.properties

Producteurs

Lancer un producteur de message

kafka-console-producer.sh --broker-list $BROKERS --topic my-topic --producer.config client.properties 
>

Consommateurs

Lancer un consommateur

kafka-console-consumer.sh --bootstrap-server $BROKERS --topic my-topic --consumer.config client.properties --group consu

Lister tous les groupes de consommateurs

kafka-consumer-groups.sh --list --bootstrap-server $BROKERS --command-config client.properties

Décrire le groupe de consommateurs

kafka-run-class.sh kafka.admin.ConsumerGroupCommand --bootstrap-server $BROKERS --describe --group consu --command-config client.properties

Supprimer un groupe de consommateurs

kafka-consumer-groups.sh --bootstrap-server $BROKERS --group my-group --group my-other-group --delete --command-config client.properties

Kcat

Kcat est un producteur et consommateur générique non-JVM pour Apache Kafka >=0.8.

La version 1.5.0 et supérieure doit être utilisée pour prendre en charge l'authentification SASL_SSL.

De plus amples informations concernant Kcat sont disponibles sur le site de Confluent :

Clients Kafka

Veuillez vous référer à cette documentation pour créer un client Kafka dans la langue de votre choix :

Connecteurs Kafka

Veuillez vous référer à cette documentation pour en savoir plus sur les connecteurs Kafka :

Dernière mise à jour