veilletech.fr
3 nov. Feed du jour
#05 CLOUDFLARE Article

Cloudflare DNS : builds ciblés, mémoire −85 %

Un doute ne devient jamais moins de travail.

Cloudflare a remplacé les reconstructions complètes de zones DNS par un planificateur qui choisit le plus petit build dont l'équivalence avec un build complet est prouvée. Sur 24 h, 92,95 % des builds évitent la zone complète ; la mémoire de pointe passe de 79 à 12 GiB et le délai médian de 7,7 à 3,3 s. Le déploiement s'est fait derrière un miroir comparé sur 20 % des zones.

3 min de lectureavancévidéo 1:15
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Le mécanisme
  3. Les résultats
  4. Limites et déploiement
  5. À retenir

Ce qui se passe

Quand un client modifie un enregistrement DNS ou un réglage de zone, le Zone Builder de Cloudflare transforme le changement en clés pour les serveurs DNS faisant autorité, puis les écrit dans Quicksilver, le magasin clé-valeur distribué de Cloudflare. Il reçoit aujourd'hui environ 700 changements d'enregistrements par seconde (250 en 2022), plus 100 événements divers, et certaines zones dépassent 20 millions d'enregistrements.

Le problème n'est pas le nombre d'événements, mais leur coût : un simple réglage de zone, comme l'activation d'Universal SSL (qui peut toucher les enregistrements CAA à l'apex), déclenchait une reconstruction de la zone entière, tenue en mémoire.

Le mécanisme

Un planificateur de builds ciblés choisit, parmi cinq types, le plus petit build dont la sûreté est prouvée :

Type Quand
Enregistrements seuls A, AAAA, TXT, CNAME ordinaires
Enregistrements et métadonnées changements de serveurs de noms ou de jokers
Apex et métadonnées réglages comme Universal SSL
Suppression zone qui ne doit plus être publiée
Zone complète tout ce qui ne peut pas être prouvé plus petit

La règle : chaque clé écrite par un build ciblé doit être identique, octet pour octet, à celle d'un build complet. Sinon, build complet. Un événement sans détail, ou une mise à jour d'horodatage seule, reste donc un build complet : le planificateur ne transforme jamais l'incertitude en travail en moins.

Un ordonnanceur unique remplace les deux anciens : il fusionne les événements d'une même zone en attente (on ne fait que ajouter du travail), garde le décompte des messages Kafka à acquitter, et n'avance la position validée dans Kafka qu'une fois tous les messages précédents terminés. Avant l'exécution, le planificateur relit un état frais depuis des réplicas, qui peut transformer un build ciblé en complet ou en suppression.

Les résultats

Sur 24 h : 86,81 % des builds en « enregistrements seuls », 2,54 % en « enregistrements et métadonnées », 2,30 % en « apex et métadonnées », 1,30 % de suppressions ; 92,95 % évitent la zone complète, 7,04 % restent complets. Les builds complets passent d'environ 11,88 % à 7,04 %.

Limites et déploiement

Les builds complets ne disparaissent pas : première publication d'une zone, événement sans détail. Pour les plus grandes zones, au-delà d'un seuil d'enregistrements, le Zone Builder ne se replie jamais sur un build complet, qui ne finirait pas ; il reconstruit l'apex, les métadonnées et les noms signalés.

La mise en production a suivi une méthode que n'importe quelle équipe peut copier : des tests d'équivalence build complet / build ciblé, puis un Zone Builder miroir qui consomme le flux Kafka de production, écrit dans un Quicksilver séparé, et dont un comparateur contrôle 20 % des zones (taux de différence de 0,31 % sur 234 313 zones appariées, écarts surtout dus au décalage). Déploiement progressif par hachage du nom de zone, zones gratuites d'abord.

Source : blog Cloudflare. Source en anglais.