web-dev-qa-db-fra.com

Sauvegarde/restauration de kafka et de zookeeper

J'utilise un simple 3 nœuds de kafka et 5 nœuds de zookeeper pour exécuter la kafka. J'aimerais savoir quel est le bon moyen de sauvegarder ma kafka, de même pour ma zookeeper.

Pour le moment, je viens d'exporter mon répertoire de données dans un compartiment s3 ...

Merci.

8
starttter

Zalando a récemment publié un très bon article comment sauvegarder Kafka et Zookeeper . Il existe généralement deux chemins pour la sauvegarde Kafka:

  • Conservez le deuxième cluster Kafka, sur lequel toutes les rubriques sont répliquées. Je n'ai pas vérifié cette configuration, mais si les sujets décalés sont également répliqués, le passage à un autre cluster ne devrait pas nuire à l'état de traitement des consommateurs.
  • Déposez les sujets sur le stockage en nuage, par exemple. utilisant le connecteur S3 (comme décrit par Zalando). En cas de restauration, vous recréez des sujets et vous les alimentez avec les données de votre stockage en nuage. Cela vous permettrait d'effectuer une restauration à un moment précis, mais les consommateurs devraient commencer à lire le sujet à partir du début.

La solution de sauvegarde préférée dépendra de votre cas d'utilisation. Par exemple. pour les applications en streaming, la première solution peut être moins pénible, tandis que lorsque vous utilisez Kafka pour la détermination d'événements, la seconde solution peut s'avérer plus souhaitable.

En ce qui concerne Zookeeper, Kafka conserve ses informations sur les sujets (magasin persistant), ainsi que pour la découverte des courtiers et l’élection du chef (éphémère). Zalando a opté pour l'utilisation de Burry , qui effectue simplement une itération sur l'arborescence de Zookeeper, la transfère dans une structure de fichier, pour la compresser ultérieurement et la transmettre au stockage dans le cloud. Il souffre de un petit problème , mais très probablement, cela n’a aucune incidence sur la sauvegarde des données persistantes de Kafka (vérification TODO). Zalando y explique que, lors de la restauration, il est préférable de créer un cluster Zookeeper, puis de lui connecter un nouveau cluster Kafka (avec de nouveaux ID de courtier uniques), puis de restaurer la sauvegarde de Burry. Burry n'écrasera pas les nœuds existants, ne mettra pas d'informations éphémères sur les anciens courtiers, ce qui est stocké dans la sauvegarde.

Remarque: Bien qu'ils mentionnent l'utilisation d'Exposant, cela n'est pas vraiment nécessaire pour la sauvegarde lorsque vous sauvegardez avec Burry.

7
krzychu

Apache Kafka maintient déjà vos données distribuées et fournit également de fortes capacités de réplication cohérente

Du point de vue de la conception de l'architecture, nous devons d'abord comprendre que signifie une sauvegarde pour nous.

  • est-ce que c'est pour survivre à une panne de centre de données?

    Comme vous l'avez dit dans le commentaire, imaginez le cas où tout votre centre de données est en panne, alors cela signifie que tout ce qui tourne dans ce centre de données a disparu, pas seulement le kafka. Pour gérer ce type d'échec, vous devez concevoir une stratégie de réplication en temps réel vers un autre centre de données. Vous pouvez utiliser kafka-mirror maker pour cela. Vous devez configurer un cluster kafka dans un centre de données différent (pas nécessairement avec les mêmes ressources matérielles), puis configurer votre Kafka de centre de données actuel pour qu'il soit mis en miroir sur cet autre centre de données.

En cas de défaillance du centre de données, tous vos services seront exécutés à partir de ce centre de données de secours et ils utiliseront votre Kafka en miroir en tant que kafka principal.

Ensuite, une fois que l'autre centre de données est revenu, vous pouvez configurer le miroir dans le sens inverse et vous pouvez accéder à votre ancien centre de données (détruit).

  • s'agit-il uniquement de la sauvegarde des données Kafka/Zookeeper?

Kafka Connect a quelques connecteurs prêts à l'emploi pour le transport des données de Kafka avec une garantie de cohérence. Vous pouvez donc peut-être choisir AWS S3 comme magasin de sauvegarde et le connecteur suivant peut le faire pour vous.

  • Connecteur AWS S3 confluent.
  • Pinterest dispose d'un service secor qui transfère des données vers des stockages AWS S3, Google et Mircosoft Cloud . Je suis sûr que vous pouvez également trouver des connecteurs dédiés pour tous les grands fournisseurs de cloud. Peu de choses à prendre en compte en cas de sauvegarde des données Kafka sur un stockage en nuage hautement disponible.

  • kafka a une politique de conservation des données par sujet. Les anciennes données seront donc supprimées des serveurs Kafka par Kafka, mais elles resteront dans votre compartiment AWS S3. Par conséquent, si vous les recopiez directement en cas d'événement de restauration, verra beaucoup plus de données sur les courtiers Kafka et ce ne sera pas non plus une bonne idée de restaurer des données entières dans un cluster Kafka en cours d’exécution, car vous commencerez alors à traiter les anciennes données. Alors soyez sélectif et prudent dans ce processus

  • Pour zookeeper, vous pouvez également copier les données sur AWS S3, mais vous devez faire preuve de prudence lors de la restauration en raison des nœuds éphémères. J'ai trouvé quelques liens qui peuvent aider:

https://jobs.zalando.com/tech/blog/backing-up-kafka-zookeeper/https://www.elastic.co/blog/zookeeper-backup-a-treatisehttps://medium.com/@Pinterest_Engineering/zookeeper-resilience-at-pinterest-adfd8acf2a6b

En fin de compte, "mieux vaut prévenir que guérir". Ainsi, si vous utilisez une configuration de fournisseur de nuage telle qu'AWS, vous pouvez déployer la configuration de votre cluster en gardant à l'esprit les échecs. Le lien ci-dessous contient des informations.

https://aws.Amazon.com/blogs/big-data/best-practices-for-running-Apache-kafka-on-aws/

2
Peeyush