Dans le monde d’Internet, il y a toujours mille bonnes raisons qu’un service plante. et aujourd’hui, le service Push Notification d’Apple est HS, et voici où et pourquoi je vais vous en parler …

Dans mon métier, je me dois d’assurer une disponibilité maximale et donc, de faire constamment attention à tous les SPOF présents dans notre infrastructure.
breakdown.png
un SPOF, ou « Single Point Of Failure », est un endroit physique (cable, carte réseau, serveur etc.) ou logique (un service, un programme, une donnée) qui, s’il tombait en panne, rendrait un service inutilisable.

Ainsi, un site web qui ne serait que sur un seul serveur a pour SPOF ce serveur web : si le serveur tombe, le site est inaccessible.

Le problème qui nous préoccupe aujourd’hui est que souvent, nous dépendons de la qualité de service d’un tiers, et cela peut s’avérer parfois compliqué de montrer que la faute n’est pas de notre côté …

Ce jour donc, un client (Fabien, auteur de l’application iPhone Notifications, que je vous recommande chaudement) m’appelle pour me signaler un problème avec nos serveurs récursifs DNS (appelés resolvers en anglais), à savoir les serveurs chargés de résoudre les adresses des sites web et IP pour nos clients.

Voici le problème constaté : gateway.push.apple.com n’a pas d’IP pour nos resolvers, alors que depuis chez Fabien, cela marche …

J’ai donc pu, ce jour, constater que même lorsque l’on s’appelle Apple, on n’est pas à l’abri d’un SPOF, à savoir ici le DNS.

Étonnamment, le DNS est censé être un service exempt de SPOF : lorsqu’un serveur ne répond pas, on s’adresse logiquement au suivant. Sauf qu’ici, le serveur répond bien, il répond juste qu’il est cassé (SERVFAIL) … et dans ce cas, ok l’ami, on n’insiste pas, tu es cassé, on reviendra plus tard …

Voici donc comment nous avons pu constater cette panne (encore valable quelques heures après, d’où cet article 🙂 )


benjamin@mg:~$ dig +trace gateway.push.apple.com
(je vous passe les détails, mais on obtient finalement ...)
push.apple.com. 86400 IN NS nserver2.apple.com.
push.apple.com. 86400 IN NS nserver4.apple.com.
push.apple.com. 86400 IN NS nserver3.apple.com.
push.apple.com. 86400 IN NS nserver.apple.com.

et donc, pas de réponse (ni A ni CNAME) …
Et l’on voit que l’on est bloqué à push.apple.com.

J’investigue donc « à la main » en interrogeant directement les serveurs DNS concernés :


benjamin@mg:~$ dig +short gateway.push.apple.com @nserver.apple.com
gateway.push-apple.com.akadns.net.
et les 3 autres :
benjamin@mg:~$ dig gateway.push.apple.com @nserver2.apple.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 62966 benjamin@mg:~$ dig gateway.push.apple.com @nserver3.apple.com ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 40492 benjamin@mg:~$ dig gateway.push.apple.com @nserver4.apple.com ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 56660

C'est assez explicite, SERVFAIL signifie que la zone sur ce serveur est cassée ...

Conséquence de cela : si votre serveur dns a interrogé nserver.apple.com, cela marchera (le temps du cache) sinon vous garderez en mémoire que ce nom de domaine est cassé ...

PS: ce petit article vise aussi à vous recommander très chaudement dig, le couteau suisse du DNS !

Catégories : français