Le courriel s'est fait la malle
Par Nicolas le vendredi 26 mars 2010, 21:59 - Mail - Lien permanent
Okay, il fallait que je pousse un jeu de mots idiot comme d'habitude, mais c'est la meilleure traduction que j'ai trouvée pour introduire le post de Leland, que je recommande d'ailleurs dans sa version originale pour les anglophones, il est ici.
Comme beaucoup le savent maintenant, la plateforme de Mail Gandi a subi, ces deux dernières années, de récurrentes baisses de performance tous les deux mois en moyenne. Comme nous vous l'avons annoncé sur le Bar, nos équipes ont travaillé afin de vous offrir une nouvelle plateforme Mail bien plus robuste. Celle-ci est le résultat d'un investissement de ressource considérable sur plusieurs mois. Je suis aujourd'hui, heureux de vous dire que la nouvelle plateforme est totalement opérationnelle et que tous les clients Gandi Mail sont migrés dessus (la migration à elle toute seule a pris près de six semaines). Nous avons pris la décision de migrer les clients au fur et à mesure, en plusieurs semaines afin de minimiser l'éventuel impact sur nos clients, et pour la plupart (avec très peu d'exceptions), la migration complète s'est passée parfaitement sans même que personne ne s'en rende compte ;)
Bref, sans plus attendre, jetons rapidement un œil à cette nouvelle plateforme Mail et regardons ce qui a changé dans Gandi Mail V2. Oh, et juste avant de commencer, cet article va être (au grand désespoir du traducteur) quelque peu technique de temps en temps, avec l'utilisation (NDT: abusive) de quelques acronymes et autres expressions geeks. Ne vous inquiétez pas, vous saurez d'ici peu ce que nous autres, barbus technophiles, échangeons comme bavardage quotidien ! ;)
Au commencement, il y avait le Mot…
… et le Mot fut écrit… et avant même la naissance d'internet, le Mot est devenu une part critique de nos vies... Oui, c'est exact… E-mail. Bref, en tant que registrar, Gandi fournit des services email pour les noms de domaines enregistrés chez nous. Jusqu'ici, tout va bien… La plateforme originale a été conçue pour être dimensionnable horizontalement afin de supporter plusieurs dizaines, voire centaines de milliers de boites mails. L'un des défis rencontrés fût une architecture pourvue de capacités de stockage dimensionnables tout en permettant les utilisateurs d'accéder à leurs boites sans même vérifier sur quel système de stockage ou d'accès ceux-ci étaient raccordés. Ça ressemble bien à un boulot pour ce bon vieux Network File System (NFS). Du coup, la plateforme originale fut basée sur une infrastructure NFS pour les boites mail.
Les mails entrants étaient reçus sur n'importe lequel des nombreux serveurs entrants tournants sur Postfix. Une fois les mails reçus et passés aux moulinettes antispam et autres filtres, le spool s'occupait alors d'identifier quel filer de stockage contenait la boite mail en question, puis forwardait le mail en utilisant le SMTP au serveur de stockage de backend (lui-même utilisant aussi Postfix) pour la livraison locale.
Lorsque l'utilisateur souhaitait accéder à sa boite mail, il devait accéder à un serveur frontal faisant tourner Dovecot. Les serveurs d'accès devaient avoir un accès "local" à toutes les boites mails via l'utilisation des montages NFS. Le client souhaitait simplement utiliser un client POP ou IMAP pour se connecter au serveur, pour accéder à sa boite mail.
Le mail sortant est plus simple; basiquement, un relais SMTP utilisant une authentification SASL.
Le schéma suivant vous montre un très haut niveau de vue générale de la version originale de la plateforme Mail.

Et ? Qu'est-ce qui a changé ?
Okay – avant de savoir ce qui a changé, regardons d'abord pourquoi nous avions à le faire.
La plateforme originale était jolie et l'architecture fonctionnait très bien à un niveau de trafic modéré, indépendamment du nombre de boites mail. Le risque avec le fait de dimensionner une plateforme basée sur le nombre de boites mail, c'est que c'est très facile à surcharger ou, dans certains cas, mal interpréter les effets induits de ce dimensionnement. Alors que le trafic commençait à augmenter au fil des années, de temps à autre, les serveurs d'accès frontaux avaient à lutter pour accéder au système de fichiers NFS, qui lui, utilise un système de verrouillage pour éviter les corruptions pouvant intervenir dans le cas d'opérations de lecture/écriture multiples sur le même fichier (ou bloc).
Ce graphique représente les volumes moyens pour l'année dernière (notez que les courbes ne sont pas agrégées, donc les éléments sont cumulatifs). L'axe vertical représente le nombre de "messages par minute" (avec un indice max. à 24 000) alors que l'axe horizontal représente les mois (avril à mars).

Alors que les verrouillages augmentaient avec le temps (et rappelez-vous que tous les serveurs avaient un accès à travers tous les systèmes de fichiers), le résultat fut un effet boule de neige qui a engendré de sévères dégradations des performances de l'ensemble de la plateforme – et pas seulement des boites mails présentes sur le serveur de stockage concerné par le verrouillage en cours. Pendant ce temps, les utilisateurs essayaient de se connecter à leurs boites mail dont le serveur acceptait la connexion et attendait simplement que le verrouillage cesse pour les laisser accéder aux boites.
Donc, les défis étaient simples :
- Comment supprimer le besoin de NFS et continuer à permettre le dimensionnement horizontal.
- Comment éviter d'impacter la plateforme Mail complète en cas de problème sur un seul serveur de stockage, et comment minimiser l'impact sur les utilisateurs dans ce cas.
- Comment maximiser les performances de la plateforme pour permettre le dimensionnement vertical aussi bien qu'horizontal.
Comme il y a très peu de changement sur les éléments du spool SMTP entrant, et que la majorité de la charge était associée au NFS, regardons de plus près les éléments d'accès.
Où est ma boite mail ?
D'accord, donc l'utilisateur se connecte à sa boite mail avec son client préféré (Thunderbird, Outlook Express, Mail.App, Evolution, ou n'importe quoi d'autre dans ce cas…). La connexion du client arrive sur l'un des nombreux serveurs frontaux d'accès Mail sous Dovecot. Comment, du coup, le serveur sait où chercher pour trouver l'email ? À l'origine, le mail était en "local" puisque tout était monté en NFS. Dovecot fait une simple requête en base pour déterminer le chemin d'accès de la boite mail de l'utilisateur. Avec le nouveau système, il n'y a pas de NFS, donc pas de système de fichier "local" où Dovecot pourrait chercher.
C'est à cet instant qu'une option très utile de Dovecot entre en scène : la fonction proxy. En l'utilisant, le serveur frontal s'occupe de l'authentification de l'utilisateur, vérifie quel serveur de stockage héberge la boite mail, puis initie une connexion "client" proxyfiée directement avec le serveur de stockage qui tourne, lui-même, sous Dovecot. Si le client se connecte en utilisant l'IMAP, alors la connexion proxy sera aussi IMAP.
De la même manière, si le client utilise POP3, alors la connexion proxy sera POP3. Le serveur de stockage n'a pas besoin de re-authentifier la connexion.

Il y a plusieurs bénéfices avec cette architecture :
- La suppression du NFS supprime également l'effet de bord des locks NFS
- Puisque le serveur backend de stockage a la boite mail physiquement attachée en local, il n'y a pas de conflit dans le filesystem, et donc pas besoin de locks. De plus, maintenant que les baies de stockage sont en hautes performances, les accès aux boites mails sont beaucoup plus rapides.
- Les serveurs frontaux n'ont plus à faire d'opérations couteuses en I/O sur les disques locaux, et consomment donc considérablement moins de CPU (en fait, techniquement, il n'y a aucune vraie raison pour que les frontaux aient leurs propres disques. Cela pourrait même réduire les coûts de dimensionnement horizontal de pouvoir utiliser des serveurs sans disque…).
Et que se passe t'il si un Filer lache ?
Afin de répondre à l'autre partie du défi, et de limiter l'impact en cas de défaillance d'un composant pour le moins d'utilisateurs possible, le concept original de stockage dimensionnable pour tenir le maximum de boites mail possible a dû être abandonné. Après tout, si un filer tombe, toutes les boites mails associées seraient également hors ligne.Du coup, l'idée ici est d'augmenter le nombre de serveurs de stockage, et de répartir les boites mails plus finement entre eux. De cette manière, en cas de défaillance du serveur de stockage, beaucoup moins de boites mails sont affectées.
Le second aspect pour minimiser l'impact d'une défaillance d'un composant est lui aussi assez simple. Avec la version précédente de la plateforme (vous vous rappelez des locks NFS ?), une connexion d'un client mail à sa boite était juste répondu par le serveur d'accès et attendait simplement de pouvoir accéder au système de fichiers. L'effet pour l'utilisateur est que son client mail se plante là et éventuellement, se fait time out.
En utilisant l'arrangement proxy IMAP/POP3, si le serveur de stockage actuel est tombé, le serveur frontal répondra immédiatement au client mail avec un message "Temporarily Unavailable", et la connexion TCP sera fermée.
Les baies de disques sont elles-mêmes bien entendu redondantes. Le seul réel point de faiblesse (SPoF) potentiel est le serveur qui contrôle les baies de disque, car à cause d'une limitation technique des baies, il n'est pas possible d'avoir un double contrôleur si l'on utilise des volumes séparés et en miroir RAID via deux baies de disques. Cela serait possible si les volumes n'étaient pas en miroir entre baies, mais ce serait plus risqué puisqu'il n'y aurait pas de copie "backup" des données en cas de défaillance d'une baie… Nous considérons donc que le risque d'avoir un seul contrôleur de serveurs de disque est un risque acceptable, étant donné que nous en avons un autre de disponible, prêt à être monté. L'image ci-dessous illustre la solution de stockage des mails

Mais...on a rien vu en fait ?
Si vous êtes dans cette catégorie, c'est que le pari est réussi ! C'était le postulat absolu du début : tout changer sans impacter nos clients et sans perdre de données.Alors, comment s'est passée la migration ? Bon, bien sûr déjà, le processus a duré plusieurs semaines, pendant les périodes où l'activité était la plus faible. Nous avons opéré unité de stockage après unité de stockage, en migrant via plusieurs itérations de rsync. À la dernière, nous avons mis la base de données à jour pour indiquer à la boite son nouvel emplacement.
Au fur et à mesure des semaines, un effet secondaire appréciable a tout de suite été détecté avec le retrait du NFS de la plateforme, la charge sur les serveurs d'accès a graduellement diminué, ce que vous pouvez voir sur le graphique ci-dessous. Maintenant que NFS a disparu, la charge serveur est quasi nulle. Les 2 graphiques ont une échelle relative qui donne une moyenne sur la période. Le premier est sur 6 mois alors que le deuxième montre la moyenne sur les 5 dernières semaines.


Voilà, J'espère que ce (petit) article vous a donné une bonne idée de ce à quoi ressemble notre nouvelle plateforme Gandi Mail, ses nombreux avantages en terme de performance et de robustesse.













Commentaires
Sympa, l'article.
Je serais curieux de savoir comment faire cette sélectionner de chemin du stockage mais avec cyrus-imapd.
D'ailleurs, pourquoi avez-vous choisi dovecot particulièrement ? Je vois souvent dovecot et cyrus dans les config, mais je n'ai jamais pris le temps de les comparer...
Article très instructif !
Je connaissais le bar de Gandi, mais pas la cuisine !
Un mot à dire : Chapeau ! :)
Ps : le bouton "envoyer" à coté de prévisualisé n'as pas le style CSS correct (background gris, texte noir, bords non arrondis).
Je profite de la remarque CSS de Choiz pour en caler une deuxième : le "line-height" des listes n'est pas le même que pour les paragraphes ;)
Sinon merci pour ces explications très intéressantes :)
Article très bien fait. Très intéressant !!! Continuez !!!
Un atricle sur la connectique de vos datacenters m'interresserait beaucoup (fibres, ATM, SDSL, ...)
@PJD_BE
Un article sur l'architecture réseau viendra d'ici quelques semaines, car il y aura des changements plutôt excitants sur le réseau... "watch this space"
Leland
Agréable cette présentation. Si je comprends bien vos serveurs sont mono-attachés aux filers (DAS). Pas de SAN alors ?
Qu'est ce que vous avez comme baie de disque ?
@dus:
Exactement. La précédente architecture était basée sur un stockage SAN dont l'accès en NFS, d'ou les performances rencontrées. Nous sommes maintenant sur un stockage local, mais avec plus de filers. Les baies de disques sont des Dell MD1120 avec des disques SAS à 10000tr. Deux baies divisées entre deux serveurs de tête, comme dans le schéma :-)
Leland
@leland:
"Un article sur l'architecture réseau viendra d'ici quelques semaines, car il y aura des changements plutôt excitants sur le réseau... "watch this space" "
cool, j'ai hâte de voir cet article :)
Merci de votre transparence.
Bravo. Continuez !
Kilani
Bonjour,
@Leland Post #7
NFS=NAS, pas SAN
On peut avoir le backend SAN, et un Lun monté en utilisant le SAN (Block device), mais si le serveur exporte en NFS, ça reste un NAS.
Article intéressant mais qui ne semble pas être vraiment le souci des utilisateurs si on regarde ici: http://groups.gandi.net/fr/group/ga...
Franchement, je pensais aller chez Gandi, mais le webmail étant indispensable pour moi (habitude Gmail ...) ça donne pas envie. Malgrès les efforts et l'état d'esprit Gandi qui me plait.
Si vous aviez une vrai concurrence sur les hébergeurs avec un webmail correct, ça vous ferait bizarre ...
Gmail assure, mais bon, c'est pas gratuit, c'est un service en échange de notre vie...
Fred
@Fred R (#10)
Oui.. exacte.. (j'ai eu des doigts loués...) NAS, pas SAN...
En ce qui concerne le webmail, nous sommes actuellement en cours de test pour des autres solutions de webmail, ce qui nous allons bientôt ouvrir en "beta public" pour des tests plus approfondis. Dans un premier temps, nous allons mettre en place une version de RoundCube suivi eventuellement par une version de HastyMail afin de donne un choix aux clients.
Je pense qu'on aura au moins la version de RoundCube en "beta public" d'ici deux semaines.
Leland
Merci pour votre réponse (rapide).
Ce ne doit pas être évident de satisfaire tout le monde de toute façon, chacun voulant le webmail qui lui plait, et il n'y a que l'embarras du choix.
RoundCube me semble le minimum de nos jours (remplace avantageusement Horde).
Connait pas Hasty, je pensais à Atmail ou Zimbra (bien que la pérennité de ce dernier me semble compromise depuis leur rachat par Vmware, qui n'a rien à voir...)
En revanche, un point rédibitoire pour moi actuellement, c'est la saisie du mot de passe du webmail en clair !!!
La page http://mail.gandi.net/ n'est même pas en https !!! Délirant en 2010.
La wishlist n'étant ouverte qu'aux clients, je ne sais comment le suggérer, et m'étonne que cette proposition n'y figure pas.
Fred (Qui voudrait bien aller chez Gandi...)
@Fred R:
Le webmail actuel est bien Atmail (avec un peu d'intégration avec nos API mail etc.).
En ce qui concerne le SSL, mail.gandi.net marche toute à fait en SSL. (https://mail.gandi.net/)
Leland
Encore merci pour votre réponse.
Je vais bientôt tester le webmail, j'ai un pote qui va m'ouvrir provisoirement une boite sur un des domaines géré chez vous, pour que j'essaye.
Suggestions pour le webmail (facile, quasi rien à faire):
- faire que l'on tombe directement sur la page https quand on tape dans l'url du browser mail.gandi.net
En effet, quand on tape "webmail gandi" sur Gogole, le 1er lien est en http simple !
Eventuellement, supprimer le http simple ! Meme OVH y arrive...
- Rajouter un lien Webmail en haut de la page pricipale Gandi (la ligne noire où il y a l'état des services par exemple). En effet, on peut aller sur le site principal de Gandi à partir de la page du webmail, mais lorsque l'on va sur le site Gandi.net je cherche encore un lien vers le webmail !
D'où la recherche Gogole sus-nommé...
- Sur la page principale du webmail, dans le champ "Interface", peut-être faudrait-il préciser le logiciel utilisé pour l'interface (simple, ajax, Avancé). Ou alors le rajouter pour info à droite de la igne verticale (par ex.) ?
Suite à votre remarque, j'ai essayé https://www.gandi.net qui fonctionne aussi.
J'avoue que sur cette page d'accueil, il ne devrait même pas y avoir la possibilité de se connecter avec ses identifiants Gandi (Compte) sans être en https !!!
Certes, tout fonctionne en https, mais ces suggestions devrait être étudiées.
Cordialement
Fred (sans doute futur client)
Fred: Pour le https sur le webmail, oui je pense qu'on va (aurait dû) faire ça. On va changer aussi le comportement http/https sur le site gandi.net d'ici peu de temps.
Pour le lien vers le webmail, il a disparu au passage V2 vers V3, on va le remettre d'ici quelques semaines, avec l'ajout d'un 2ème webmail.
@Fred R
En ce qui concerne www.gandi.net, même si le formulaire est une sur page http, il sera toujours posté sur une page en https (et donc ne passera pas en clair).
@Romuald #16
Euh... je suis pas un spécialiste de la sécurité, mais il me semble quand même que:
- si je me connecte sur http://www.gandi.net (identifiant xxxx-GANDI)
le mot de passe sera transmis en clair à partir de mon PC
- si je me connect sur https://www.gandi.net (même champ)
Le mote passe transitera en crypté de mon PC vers votre serveur
J'avais compris que le cadenas en bas du navigateur permettait de savoir si la page était sécurisé.
Bizarre votre avis.
@Nicolas#15
Merci pour vos précisions. Vu les changements que vous faites en ce moment, c'est déjà bien si vous avez assez de post-its pour vous souvenir de tout :-)
@Leland#13
La seule info sur le "moteur" webmail Gandi que j'ai trouvé, c'est via Googe, la page:
http://www.gandi.net/static/images/...
Et je n'avais pas vu que c'était atmail...
Effectivement, la page Basic/simple/Advanced, c'est atmail v5, alors que les captures d'écran du site web d'atmail, c'est la v6...
Fred
Désolé de polluer le débat, mais j'aimerais résumer:
Actuellement, c'est Atmail V5 que vous utilisez.
Dans 2 semaine, une beta de Roundcube, et éventuellement Hastymail.
Mais pensez-vous conserver Atmail, en V6 ?
Si oui, yaura-t-il un Agenda de Atmail ?
Prévoyez-vous de proposer un jour Zimbra, ou bien est-ce au delà de ce que veut proposer Gandi (Agenda, Bloc notes) ?
Merci en tout cas pour vos réponses.
Fred