<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://lacuisinedegandi.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>La cuisine de Gandi</title>
  <link>http://lacuisinedegandi.net/</link>
  <atom:link href="http://www.lacuisinedegandi.net/feed/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Wed, 13 Feb 2013 13:01:43 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>De nouvelles images sur l'hébergement IaaS axées supervision</title>
    <link>http://lacuisinedegandi.net/post/2012/09/06/De-nouvelles-images-sur-l-hebergement-IaaS-axees-supervision</link>
    <guid isPermaLink="false">urn:md5:e952e1bff1c68ab8790c04184733b138</guid>
    <pubDate>Fri, 14 Sep 2012 17:02:00 +0200</pubDate>
    <dc:creator>mz</dc:creator>
        <category>Hébergement</category>
            
    <description>&lt;p&gt;Nous vous avons préparé quelques images de distribution spécialisées dans la supervision.&lt;/p&gt;


&lt;p&gt;Vous étiez nombreux à nous faire des demandes en ce sens, ou plus directement que Gandi propose un service de supervision à travers notre interface d'administration.&lt;/p&gt;


&lt;p&gt;Cela sort de notre périmètre, nous préférons donc que nos clients puissent gérer leur supervision eux mêmes, à savoir qu'il existe aussi des services payants de supervision sur Internet, ce qui peut être une alternative.&lt;/p&gt;    &lt;p&gt;Nous avons laissé les distributions telles qu'elles étaient, malgré l'envie de les compléter par des outils que nous connaissons et qui pourraient être aussi utiles, comme collectd pour les statistiques de performance par exemple :-)&lt;/p&gt;


&lt;h3&gt;OMD&lt;/h3&gt;


&lt;p&gt;&lt;a href=&quot;http://omdistro.org/&quot;&gt;OMD&lt;/a&gt; (Open Monitoring Distribution) est faite par les développeurs des principaux outils de supervision connus à ce jour qui ont le souhait d'intégrer/regrouper les meilleurs outils et leurs modules respectifs au sein d'un unique paquet.&lt;/p&gt;


&lt;p&gt;Ce paquet permet l'installation aisée de plusieurs outils tels que Nagios, Icinga, Shinken ... des interfaces multiples telles que Check_MK, Thruk ... ou encore des modules non inclus dans ces outils tels que MK livestatus, mod_gearman, Nagvis ...&lt;/p&gt;


&lt;p&gt;Grâce à un programme en ligne de commande, vous pouvez alors définir des 'sites' soit des instances de monitoring ayant leurs particularités propres, choisir l'interface graphique web pour chacun des sites gérés, agréger les sites entre eux, effectuer des maintenances par site sans éteindre tout le monitoring, mettre un site à jour par exemple.&lt;/p&gt;


&lt;p&gt;Nous nous sommes basés sur une image Debian 6 squeeze en version 64 bits avec OMD en version 0.54 sorti en Mars 2012.
Il est possible de l'installer facilement sur d'autres distributions (Ubuntu, ou basée sur le système de paquets RPM) ou d'utiliser une architecture 32 bits.&lt;/p&gt;


&lt;p&gt;Après avoir créé l'image, il vous suffit alors d'utiliser le programme 'omd' tel que décrit dans la documentation avec les attributs 'create', 'start', 'stop' ...&lt;/p&gt;


&lt;h3&gt;EON&lt;/h3&gt;


&lt;p&gt;&lt;a href=&quot;http://www.eyesofnetwork.com/&quot;&gt;EON&lt;/a&gt; pour Eyes Of Network est une solution dont les fonctionnalités ne sont pas tournés uniquement vers la supervision, mais aussi vers la gestion des événements, de la disponibilité, ou encore de la capacité.&lt;/p&gt;


&lt;p&gt;Elle permet de fournir des vues complètes du SI à des acteurs dépassant l'administrateur système/réseaux, comme par exemple le DSI, les techniciens, les opérateurs, ... À chaque métier peut correspondre une vue particulière.&lt;/p&gt;


&lt;p&gt;Cette distribution embarque le moteur GED pour la gestion des événements, Nagios et Thruk pour la supervision, Nagvis pour la disponibilité, NagiosBP pour la partie applicative, Cacti pour les performances, WeatherMap pour la cartographie, ainsi que Glpi/OCSInventory/Fusion pour la gestion des parcs et inventaires, et un Dokuwiki, le tout consolidé dans une base de données (MySQL ou Berkeley), nous fournissons la version 3 basée sur CentOS.&lt;/p&gt;


&lt;p&gt;À noter : l'équipe EON par le biais de la société APX Intégration propose des prestations de services (intégration, télé-service, support téléphonique ou encore TMA).&lt;/p&gt;


&lt;h3&gt;FAN&lt;/h3&gt;


&lt;p&gt;&lt;a href=&quot;http://www.fullyautomatednagios.org/&quot;&gt;FAN&lt;/a&gt; pour Fully Automated Nagios est une distribution beaucoup plus légère qu'EON avec une pile d'outils moins important : Nagios, une suite complète de modules pour Nagios (comme souvent sur les distributions orientées supervision), l'interface Centreon produite par la société française Merethis, Dokuwiki ... le tout aussi stocké dans une base de données MySQL.&lt;/p&gt;


&lt;p&gt;Nous nous sommes basés sur la dernière version 2.3 de FAN qui profite d'une distribution CentOS comme EON, certains modules sont à installer si vous le souhaitez comme NagiosBP ou MK livestatus, cela est expliqué dans la &lt;a href=&quot;http://www.fullyautomatednagios.org/wordpress/documentation/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;





&lt;p&gt;Pour finir, d'autres images sont en cours de préparation (sans spécialisation supervision, des images de distributions connues et demandées), n'hésitez pas à nous faire vos demandes au &lt;a href=&quot;https://www.gandi.net/support/contact&quot;&gt;support email&lt;/a&gt; ou sur la &lt;a href=&quot;https://www.gandi.net/hebergement/wishlist&quot;&gt;wishlist hébergement&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Plus il y a de demandes, plus nous accentuerons la priorité sur les distributions demandées !&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>La plate-forme PAAS du SimpleHosting</title>
    <link>http://lacuisinedegandi.net/post/2012/02/17/La-plate-forme-PAAS-du-SimpleHosting</link>
    <guid isPermaLink="false">urn:md5:b2be80255443753adfec057a17d8ec3b</guid>
    <pubDate>Mon, 20 Feb 2012 17:45:00 +0100</pubDate>
    <dc:creator>aegiap</dc:creator>
        <category>Hébergement</category>
            
    <description>&lt;p&gt;Nous sommes heureux de vous faire profiter de notre nouvelle plate-forme PaaS. Cela fait maintenant plus d'un an que nous travaillons dessus en intégrant au fur et à mesure les dernières évolutions logiciels tout en restant homogène avec notre infrastructure et la gestion de notre hébergement IaaS.&lt;/p&gt;
&lt;p&gt;Le but de la plateforme est de vous affranchir complètement de la partie système (en profitant de notre expertise) et de vous laisser libre sur la partie applicatif (dans les limites des paramétrages qui se veulent par défaut très ouvert).&lt;/p&gt;    &lt;h2&gt;Plus de détails&lt;/h2&gt;
&lt;p&gt;Rentrons en détail sur la première déclinaison : l'hébergement type LAMP. Apache/PHP/MySQL est le trio le plus largement utilisé, mais aussi le plus difficile à maîtriser au niveau sécurité et système.&lt;/p&gt;
&lt;p&gt;Simple Hosting répond à cette problématique à votre place grâce à son architecture robuste et la possibilité de monter en gamme avec les différents packs. L'architecture du produit Simple Hosting comporte des load-balancers en amont puis des caches de contenu et enfin votre instance personnelle. L'instance n'est accessible qu'en HTTP via les load-balancers et en SFTP pour déposer les fichiers, il n'est pas prévu de l'atteindre directement.&lt;/p&gt;
&lt;p&gt;Vous avez une instance personnelle avec un système Linux et des processus Apache2, PHP5 et MySQL. Les fichiers de cette instance et les ressources vous sont spécifiques. Les ressources de l'instance ne sont donc pas mutualisées entre les clients. Un autre site web gourmand en ressource sur une autre instance ne pénalisera pas la vôtre. Au niveau des load-balancers et des caches de contenu par contre, tous les virtualhosts sont servis par un ensemble de machines. Les données de chaque virtualhost (contenu dans le cache, sessions de visiteurs, ...) sont cependant cloisonnées. &lt;/p&gt;
&lt;p&gt;Votre instance n'a qu'un seul utilisateur :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pas de gestion de droits d'utilisateur à l'intérieur de votre instance,&lt;/li&gt;
&lt;li&gt;un disque dédié où toutes vos données et les logs d'erreurs des applications sont stockés et consultables.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous pouvez aussi l'utiliser pour sauvegarder des données privées uniquement accessibles en SFTP (par le répertoire /private).&lt;/p&gt;
&lt;p&gt;Votre instance a un serveur apache dédié:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;vous pouvez consulter, via l'interface d'administration, l'état de l'application, les requêtes en cours, les logs d'erreurs, …&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Votre instance a un démon PHP dédié :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;très peu de fonctions limitées comme dans le cas d'un mutualisé,&lt;/li&gt;
&lt;li&gt;changement de la configuration possible via ini_set(). L'interpréteur PHP5 fonctionne en tant que démon fastCGI, et donc beaucoup plus performant et permet le contrôle de ressources. Attention ! Du fait de l'utilisation en fastCGI, la configuration de php_value dans le .htaccess ne marche pas. &lt;/li&gt;
&lt;li&gt;il bénéficie d'APC un cache d'opcode PHP qui est de 64Mo pour le pack S et double à chaque augmentation de pack,&lt;/li&gt;
&lt;li&gt;les statistiques PHP et APC sont consultables via l'interface d’administration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Votre instance possède un serveur MySQL dédié qui :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;est un démon complet sur lequel vous êtes root,&lt;/li&gt;
&lt;li&gt;stocke les données directement sur votre disque,&lt;/li&gt;
&lt;li&gt;est configurable directement par l'interface de PHPMyAdmin disponible par votre interface d'administration,&lt;/li&gt;
&lt;li&gt;est non accessible depuis l'extérieur de votre instance Simple Hosting,&lt;/li&gt;
&lt;li&gt;dont la taille mémoire est adaptée à la configuration de chaque pack pour éviter tout phénomène de swap. Il n'y a aucune différence de fonctionnalité entre les tailles de pack PHP/MySQL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/paas/paas_schema.png&quot; alt=&quot;&quot; style=&quot;margin: 0 0 1em 1em;&quot; title=&quot;PAAS, fév 2012&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Détails sur PHP5 et le système&lt;/h2&gt;
&lt;p&gt;L'instance est basée sur la distribution Debian Linux avec des packages standards pour l'interpréteur PHP5 et ses modules. Pour une liste exacte des versions et des modules, vous pouvez consulter le &lt;a href=&quot;http://wiki.gandi.net/fr/simple/instance_phpmysql&quot;&gt;wiki&lt;/a&gt;, ou le résultat d'un &lt;a href=&quot;http://simple.gandi-test.fr/phpinfo.php&quot;&gt;PHPinfo()&lt;/a&gt;. Une instance Simple Hosting ressemble donc au serveur dédié que vous pouvez souscrire dans notre offre IaaS mais spécifique pour un type de site. La liste des modules choisis et la configuration restent ainsi du ressort de notre équipe technique; il n'est donc pas possible d'installer des modules spécifiques. Cependant, si une forte demande est faite pour un module donné (par la &lt;a href=&quot;https://www.gandi.net/hebergement/simple/wishlist/&quot;&gt;wishlist&lt;/a&gt;), nous pourrons décider de fournir le module souhaité lors de la mise à jour suivante de l'image de base de l'instance.&lt;/p&gt;
&lt;p&gt;Au niveau des mises à jour, notre équipe technique mettra à jour régulièrement les versions des librairies et interpréteurs pour chaque type d'instance de Simple Hosting; ainsi, la dernière mise à jour de sécurité de PHP5 est disponible dans les instances. Dans le cas des alertes de sécurité régulières sur PHP ou les applications en PHP livrées par Gandi, notre équipe sera réactive et appliquera le correctif dans les plus brefs délais. Nous surveillons ainsi les alertes sur l'interpréteur PHP, sur PHPMyAdmin qui est livré dans l'interface d'administration, sur apache2, sur MySQL et bien sûr, sur le système de base (noyau, libc6, ...). Attention ! Les alertes de sécurité concernant les applications que vous installez sont, par contre, de votre responsabilité.&lt;/p&gt;
&lt;h2&gt;Les performances&lt;/h2&gt;
&lt;p&gt;L'architecture de la plateforme est faite pour minimiser au maximum les temps de réponse à tous les niveaux :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Espace mémoire dédié: vos données restent cachées en mémoire ou dans votre MySQL.&lt;/li&gt;
&lt;li&gt;Cache PHP: principalement APC qui s’avère être très efficace et nous avons été généreux sur sa taille.&lt;/li&gt;
&lt;li&gt;Cache HTTP: Varnish apporte certainement le plus gros gain en temps de réponse : les pages/images pouvant être cachées seront directement servies par le cache.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;La montée en charge&lt;/h2&gt;
&lt;p&gt;C'est la partie la moins maîtrisable. En cas de succès, votre site risque de s'écrouler sous le nombre de requêtes.&lt;/p&gt;
&lt;p&gt;Il faut prendre en compte 2 paramètres majeurs.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Le flot de requêtes http : la ferme de Varnish régule ce flot pour éviter de surcharger votre instance. Si vos données peuvent être cachées, cela devrait être efficace. La quantité de données envoyées est soumise à un quota pour éviter les abus.&lt;/li&gt;
&lt;li&gt;La complexité de votre site web : attention Varnish ne pourra pas tout cacher. Par exemple, si votre site comporte beaucoup de pages PHP avec des cookies, il faudra prendre un pack de taille supérieure pour tenir la charge.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chaque taille d'instance Simple Hosting a un certain nombre de processus PHP en mémoire (2 pour la taille S par exemple). Chaque thread peut gérer le calcul d'une page de code dynamique et enverra ensuite la page au visiteur. Par exemple, vous pourrez servir des pages dynamiques à 2 visiteurs en parallèle sur une taille S. Les pages statiques HTML sont servies directement par apache2. La génération de la page dynamique utilisant les ressources CPU et RAM, un temps maximal d’exécution est configuré (voir dans le PHPinfo() ci-dessus). Le thread PHP sera alors terminé, indiquera l'information dans le log d'erreur et un message d'erreur sera retourné au visiteur. Si les pages de votre site contiennent des erreurs, vous pourrez consulter facilement l'information dans le log d'erreur de PHP par votre interface d'administration accessible par &lt;em&gt;http://&amp;lt;login&amp;gt;.dc0.gpaas.net&lt;/em&gt; (avec &amp;lt;login&amp;gt; l'identifiant SimpleHosting composé de chiffres). &lt;/p&gt;
&lt;h2&gt;La mise en cache&lt;/h2&gt;
&lt;p&gt;Les pages générées et servies par votre instance SimpleHosting sont mises en cache par un groupe de serveurs Varnish afin d'améliorer la réactivité de votre site pour les prochains visiteurs en servant la copie des pages dans le cache. Cela vous permet de tenir une forte affluence. Vous avez la possibilité de passer des ordres aux serveurs de cache depuis votre instance pour supprimer toute cette fonction de mise en cache ou vider le cache temporairement.&lt;/p&gt;
&lt;p&gt;Enfin, un groupe de load-balancers, en amont des serveurs de cache, vous donne une garantie supplémentaire d'accès à vos sites sur votre instance Simple Hosting. Ces load-balancers sont actuellement accessibles par un ensemble d'adresses en IPv4 (associées aux noms &lt;em&gt;gpaasX.dc0.gandi.net&lt;/em&gt;) . L’accès en IPv6 est retardé suite à une fonctionnalité oubliée par le constructeur du load-balancer : nous attendons avec impatience la nouvelle version du firmware.&lt;/p&gt;
&lt;p&gt;Quelques remarques pour finir : &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;le stockage est sur un système de fichiers compressés. Les 10Go de l'offre peuvent en réalité contenir bien plus.&lt;/li&gt;
&lt;li&gt;le pack PHP/MySQL est fait pour servir des pages web et n'est absolument pas prévu pour faire du streaming, ou du téléchargement de gros fichiers. Notre équipe abuse veille et sera efficace.&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Serveur miroir et CentOS</title>
    <link>http://lacuisinedegandi.net/post/2011/12/30/Serveur-miroir-et-CentOS</link>
    <guid isPermaLink="false">urn:md5:3e9d7ab3ba4d314204ff6a37a64e3a05</guid>
    <pubDate>Fri, 30 Dec 2011 11:31:00 +0100</pubDate>
    <dc:creator>aegiap</dc:creator>
        <category>Hébergement</category>
            
    <description>&lt;p&gt;Information sur l'arbre CentOS et le serveur de miroir.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Miroir local CentOS&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Dans le but de reconfigurer le miroir comme CentOS l'utilise en se basant sur
des mises à jour automatiques de version, la version par défaut '6' de CentOS
dans le repository pointe actuellement sur CentOS 6.1. Début janvier (sûrement
le 5 janvier), la version '6' passera en 6.2 et sera ainsi compatible avec les
miroirs de CentOS en amont.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Images CentOS 6&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Suite à la sortie de la &lt;ins&gt;version 6.2&lt;/ins&gt; de CentOS 6, les images 32 bits et 64 bits
sur les datacenters de Paris et Baltimore ont été mises à jour avec la nouvelle 
version.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;URL du miroir local&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;L'URL officielle du serveur miroir contenant les arbres de distributions est
http://mirrors.gandi.net. La page d'index indique les distributions et systèmes
disponible sur ce serveur.&lt;/p&gt;


&lt;p&gt;Dans le cas de Debian par exemple, l'URL principale à utiliser dans le fichier 
/etc/apt/sources.list est :&lt;/p&gt;

&lt;pre&gt;
deb http://mirrors.gandi.net/debian squeeze main experimental non-free
&lt;/pre&gt;


&lt;p&gt;Les anciennes URL du type http://centos.mirror.gandi.net/.../ ou
http://debian.mirror.gandi.net/.../ sont maintenant obsolètes et vont bientot
etre supprimées. Elles datent de la période de beta pour l'hébergement IAAS. &lt;/p&gt;


&lt;p&gt;Le miroir est disponible pour les machines virtuelles de l'hébergement IAAS, 
il n'est pas joignable depuis les machines en dehors du réseau de Gandi.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Penser architecture web - Aller plus loin avec plusieurs centres de données</title>
    <link>http://lacuisinedegandi.net/post/2011/07/08/Penser-architecture-web-Aller-plus-loin-avec-plusieurs-centres-de-donnees</link>
    <guid isPermaLink="false">urn:md5:aa7fa727a809b9525bb07aa130d61bfc</guid>
    <pubDate>Fri, 08 Jul 2011 13:33:00 +0200</pubDate>
    <dc:creator>Nicolas (Gandi)</dc:creator>
        <category>Hébergement</category>
            
    <description>Un peu dans l'esprit de l'article &lt;a href=&quot;http://lacuisinedegandi.net/post/2009/05/05/Penser-infrastructure-web&quot;&gt;Penser architecture web&lt;/a&gt; que nous avions publié il y a 2 ans, nous allons aborder dans cet article les problématiques que nous savons récurrentes pour nos clients hébergement ainsi que dans le monde du web en général : que faire quand mon serveur web est surchargé ou mes sites web sont lents ?&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;h3&gt;&lt;strong&gt;1. Vérifier d'abord votre code source, puis les configurations des services&lt;/strong&gt;&lt;/h3&gt;
Bien entendu, avant de se lancer dans les optimisations du serveur ou plus loin dans une architecture spécifique, il convient d'identifier les problèmes inhérents aux code source.&lt;br /&gt;&lt;br /&gt;
Puis il est nécessaire de vérifier si les services (serveur web, de bases de données, ...) sont bien configurés par rapport au serveur d'hébergement (ses ressources, notamment RAM et processeur).&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;2. Augmenter la puissance du serveur en adaptant les configurations des services&lt;/strong&gt;&lt;/h3&gt;
Une fois que vous avez optimisé le code source et que les configurations sont optimales, si le service manque toujours de réactivité, si le serveur ne parvient pas à honorer les requêtes de vos visiteurs (syndromes de la page blanche, de pages incomplètes ou encore expiration de la connexion), vous pourrez augmenter la puissance et reconfigurer les services en accord avec ces nouveaux paramètres.&lt;br /&gt;&lt;br /&gt;
Sur un serveur physique, il sera difficile d'augmenter les ressources sans changer d'offre.&lt;br /&gt;
Sur un serveur cloud Gandi, il vous suffit d'ajouter du processeur et de la mémoire vive, à chaud, sans redémarrage (dans une certaine limite)&lt;br /&gt;&lt;br /&gt;
Si vous avez déjà poussé tous les paramètres à fond, il va falloir aller plus loin...&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;3. Optimiser les services&lt;/strong&gt;&lt;/h3&gt;
Il y a plusieurs services qui peuvent être optimisés, prenons l'exemple d'un blog qui connaît un nombre important de connexions qui fonctionne sous PHP/MySQL, soit une grande partie des sites web aujourd'hui.&lt;br /&gt;&lt;h4&gt;Serveur web (Apache, Nginx, Cherokee, ...)&lt;/h4&gt;
Pour chacun d'entre eux, les gestionnaires de connexions diffèrent, il est préférable de vérifier les bonnes pratiques pour les configurer par rapport à la puissance du serveur, la consommation de ressources maximum par visite, ... Leurs documentations restent le bon point de départ pour les appréhender au mieux.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Module/interpréteur PHP&lt;/h4&gt;
&lt;br /&gt;
Apache est connu pour faire fonctionner l'interpréteur PHP à la volée, soit le démarrer lorsqu'il y a du code PHP à exécuter.
Démarrer l'interpréteur peut etre long à s'instancier, cela peut paraître infime, cependant, c'est une source majeure de ralentissements.
Pour éviter cela, on peux sortir PHP du serveur web en passant du mode module (mod_php) en FastCGI. L'interpréteur démarre donc au meme moment que le serveur web, reste en arriere plan et est disponible immédiatement. Il est donc recommandé de passer PHP en mode FastCGI. Notez que Cherokee ou Nginx sont paramétrés comme cela nativement.&lt;div&gt;&lt;br /&gt;&lt;h4&gt;Serveur de bases de données MySQL&lt;/h4&gt;
Il existe sur MySQL plusieurs optimisations comme sur &lt;a href=&quot;http://dev.mysql.com/tech-resources/presentations/presentation-oscon2000-20000719/&quot;&gt;cet article&lt;/a&gt; (qui date un peu).&lt;br /&gt;
La documentation à jour est disponible sur &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.5/en/optimization.html&quot;&gt;cette page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
Comme vous le verrez dans cet article provenant de MySQL, ils demandent bien de trouver les  goulots d'étranglement inhérents au code source, au serveur, aux liaisons entre les services, ... avant de se lancer dans les optimisations qui peuvent être :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;matérielles : comme adapter la version du système selon la taille des bases et de la mémoire vive (32/64bits), les disques (lire plusieurs blocs à la fois) ou le système d'exploitation (nombre de fichiers ouverts avec ulimit)&lt;/li&gt;
&lt;li&gt;la réplication pour avoir plus de serveurs permettant d'augmenter le nombre de requêtes possibles en simultané&lt;/li&gt;
&lt;li&gt;augmenter le nombre de threads et/ou de connexions sur chaque serveur&lt;/li&gt;
&lt;li&gt;optimiser les requêtes SQL et utiliser un moteur convenant à l'utilisation faite&lt;/li&gt;
&lt;li&gt;utiliser les caches (query, key myisam ou buffer innodb)&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Systèmes de caches&lt;/h4&gt;
Vous pouvez installer des systèmes de cache à plusieurs niveaux : nous l'avons vu pour MySQL rapidement, sachez qu'il existe des caches à placer devant le serveur web (cache HTTP tel que Varnish) qui garde une copie de la page web complète en mémoire. D'autres systèmes de cache pour les interpréteurs comme Xcache pour PHP. Ils consomment un peu de ressources mais évitent une charge supplémentaire sur les services principaux en limitant les appels que pour le recalcul de la page web et le remplaçement dans le cache.&lt;br /&gt;&lt;br /&gt;
Pour le cache Web/HTTP, il permet aussi d'éviter que le serveur web ne soit directement accessible depuis l'extérieur, offrant un protection légère mais non négligeable.&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;4. Opter pour une architecture répartie&lt;/strong&gt;&lt;/h3&gt;
Si, au terme de ces optimisations, le serveur ne supporte toujours pas la charge, il faudra donc &lt;strong&gt;penser architecture web&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
Cela implique de multiplier les serveurs où sont installés les services pour répartir la charge sur chacun d'eux, il est possible de dupliquer tout ou partie de l'infrastructure : web, caches, bases de données, ...
La répartition peut se faire au niveau du cache HTTP (Varnish), des DNS (Round Robin) ou d'un proxy (tel qu'Haproxy) selon les souhaits et la taille de la plateforme.&lt;br /&gt;&lt;br /&gt;
Avec des systèmes de vérification (de type &amp;quot;healthcheck&amp;quot; sur Haproxy, Heartbeat ou encore Varnish par exemple), nous pouvons éviter d'envoyer un visiteur sur un serveur dont les services ne fonctionnent pas.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;strong&gt;La géolocalisation des visiteurs ou l'exploitation de plusieurs centres de données pour le même service&lt;/strong&gt;&lt;br /&gt;
Avec l'architecture répartie, nous avons trouvé une solution qui permet d'honorer la charge en terme de visites simultanées en masse.
Cependant, certains visiteurs éloignés du pays de localisation des serveurs peuvent avoir une latence importante (depuis la Nouvelle Zélande ou le Chili vers la France par exemple).
Une solution est de mettre à disposition des serveurs plus proches d'eux, en géolocalisant par pays par exemple, le serveur DNS Bind avec le système de &amp;quot;vues&amp;quot; (views) allié à la base MaxMind qui contient les plages d'adresses IP par pays effectue bien cette opération.&lt;br /&gt;&lt;br /&gt;
&lt;h2&gt;&lt;strong&gt;Un exemple concret avec un blog Wordpress sur 2 centres de données&lt;/strong&gt;&lt;/h2&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://static.cdn.mz23.in/2011/06/CDN-global-definition-maitre1.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
Vous pourrez voir un exemple de cette solution réalisé par Emerick du support hébergement sur &lt;a href=&quot;http://cdn.mz23.in&quot;&gt;le site suivant&lt;/a&gt;. Le site est ouvert aux commentaires, sera agrémenté avec plus de solutions et d'explications dans les prochaines semaines.
Vous aurez une vue plus détaillée de l'utilisation de chaque service, voir des configurations (basiques) utilisées pour mettre en place cette petite plate-forme.&lt;br /&gt;
&lt;br /&gt;
A titre d'information, nous avons pris des serveurs d'une part chacun :
&lt;ul&gt;
&lt;li&gt;un DNS,&lt;/li&gt;
&lt;li&gt;deux serveurs Web,&lt;/li&gt;
&lt;li&gt;deux serveurs de bases de données.&lt;/li&gt;
&lt;/ul&gt;
Nous n'avons pas mis en place toutes les optimisations décrites, les serveurs web sont différents en France et aux USA, les caches Varnish sont situés sur les serveurs web directement.&lt;/div&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Quand Null0 et BGP peuvent causer problème</title>
    <link>http://lacuisinedegandi.net/post/2011/06/20/Quand-Null0-et-BGP-peuvent-causer-probleme</link>
    <guid isPermaLink="false">urn:md5:5b521a152df55f50fecaa2ce285158cb</guid>
    <pubDate>Mon, 20 Jun 2011 15:00:00 +0200</pubDate>
    <dc:creator>Leland Vandervort</dc:creator>
        <category>Réseaux</category>
        <category>BGP</category><category>Peering</category><category>Routage</category><category>Réseau</category>    
    <description>&lt;p class=&quot;p1&quot; style=&quot;margin: 0; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal;&quot;&gt;Si vous lisez des manuels ou des livres de réseau traitant de BGP et de la stabilité des routes, la plupart du temps vous trouverez mention ou même une suggestion de lier votre sommaire de préfixe (&lt;em&gt;aggregated prefix&lt;/em&gt;) à null0 pour assurer la présence permanente de ces préfixes dans la table de routage. De ce fait, augmenter la stabilité de vos annonces BGP.&lt;/p&gt;
&lt;p class=&quot;p1&quot; style=&quot;margin: 0; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal;&quot;&gt;Cette méthode est intéressante jusqu'à un certain point mais il y a des situations ou cette configuration peut provoquer une interruption de service dans le cas d'une panne. Ce bref article a pour sujet le routage sur Internet par BGP et certaines &amp;quot;pratiques répandues&amp;quot;.&lt;/p&gt;    &lt;p class=&quot;p1&quot;&gt;Prenons comme exemple une paire de système autonome (&lt;em&gt;AS : autonomous systems&lt;/em&gt;). Sur la gauche, AS1 et AS2 sur la droite; ces deux réseaux ont une connectivité vers Internet et en même temps une relation de peering directe entre-eux. Dans les circonstances normales, le trafic réseau entre les clients d'AS1 et les serveurs dans l'AS2 vont suivre le chemin le plus court (AS-Path) qui, dans ce cas, passera par la session de peering.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;a href=&quot;http://lacuisinedegandi.net/public/routing-null0/null0-1.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/routing-null0/.null0-1_m.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0 auto; display: block;&quot; title=&quot;Routing Image 1, juin 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;Dans cet exemple, les routeurs ont des routes statiques sur null0 pour 'fixer' les préfixes qu'ils annoncent en BGP par leurs ASNs respectifs. La seule différence significative dans cette exemple entre les deux réseaux vient de la connexion mono-lien entre R2 dans l'ASN1 et le reste du réseau de l'AS1. Après tout, cela est juste un routeur de peering et il est moins critique que les routeurs de coeur de réseau ou de transit Internet, non ? Prenons le temps de regarder la situation.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;Imaginons que la connectivité entre R2 et le reste du réseau derrière l'AS1 soit coupée. Les routes vers les réseaux dans l'AS2 ne seront alors vu sur Internet que par les connections de transit, comme indiqué dans les annonces BGP. Avec une configuration correcte, le trafic entre les deux réseaux devrait maintenant passé par Internet par leurs connections de transit respectifs comme indiqué par le schéma suivant :&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;a href=&quot;http://lacuisinedegandi.net/public/routing-null0/null0-2.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/routing-null0/.null0-2_m.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0 auto; display: block;&quot; title=&quot;Routing Image 2, juin 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;Dans cette exemple cependant, les connections de R2 vers la session de peering entre les deux ASNs sont encore actives et de ce fait, la session BGP est encore active entre les deux. Comme R2 a &amp;quot;fixé&amp;quot; statiquement les préfixes réseaux par une route vers null0, ces préfixes sont toujours annoncés à R3 dans l'AS2.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;Ainsi, le trafic des paquets de retour suivant le chemin le plus court (AS-Path) seront envoyés par R3 vers R2. Malheureusement, du fait de la coupure de connectivité entre R2 et le reste de son réseau, la destination du client est injoignable. Cela provoque donc un &amp;quot;trou noir&amp;quot; partiel causé par la coupure de connexion et amplifié par, ce qui semble semble être, un problème d'administration ou une mauvaise compréhension de la topologie du réseau au moment de la configuration.&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;a href=&quot;http://lacuisinedegandi.net/public/routing-null0/null0-3.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/routing-null0/.null0-3_m.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0 auto; display: block;&quot; title=&quot;Routing Image 3, juin 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;Comment peut-on corriger ce problème ?&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;Il y a trois façons de diminuer l'impact de ce problème. La première méthode demande d'ajouter une connexion redondante séparée depuis R2 au reste du réseau d' AS 1 (de la même façon  qu'avec R3 et AS 2 dans les schéma au dessus. Cela réduit le risque que R2 soit isolé complètement et du coup que l'on se trouve avec black hole partiel. En fonction de la distance cela peut ajouter des frais. &lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;Une autre alternative pourrait être de mettre les préfixes seulement sur le core (qui normalement devrait déjà avoir une connexion redondante), et annoncer ceux là avec un protocole de routage interne comme OSPF ou IS-IS au reste des équipements extérieurs.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;Si R2 perds  sa connectivité au reste du réseau de AS1, il ne reçoit plus les annonces interne pour l'ensemble des préfixes. Du fait que ces préfixes ne sont plus dans la table de routage de R2, ils ne seront plus annoncés a tout les  peers BGP. De ce fait le trafic retour de AS2 à AS1 passera par le dernier chemin restant dans l'internet en utilisant les connexions de transit.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;La troisième alternative implique une configuration plus compliqué et demande un protocole interne de routage dynamique au sein de l'AS. Avec ce scénario les annonces BGP seront fonction de l'existence (ou de la non existence selon les préférences) d'un autre préfixe dans les tables de routage. Cette autre préfixe sera reçu par  le protocol interne de routage. Cela est parfois appelé comme le &amp;quot;BGP Conditional Route Injection&amp;quot;. Sur les équipements Cisco, cela implique d'utiliser &amp;quot;advertise-maps&amp;quot; dans la configuration BGP et la documentation à ce sujet est disponible sur le &lt;a href=&quot;http://www.cisco.com/en/US/tech/tk365/technologies_configuration_example09186a0080094309.shtml&quot;&gt;site de Cisco&lt;/a&gt;.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;En complément de ces méthodes, une quatrième possibilité pourrait être de lier la route statique vers null0 à un objet de suivi associé avec un agent de surveillance de la disponibilité (SLA) IP. Par exemple, le routeur peut être configuré pour vérifier régulièrement une adresse IP située ailleurs mais dans le réseau en utilisant PING ou un autre protocole. En liant cette agent de surveillance et l'objet de suivi avec la route statique vers null0, cette route ne va rester dans la table de routage que si l'agent de surveillance à un code de retour valide. (Le seuil peut-être configuré par la même occasion pour éviter des faux négatifs issus de micro-coupure ...) Si l'agent de surveillance échoue, la route est alors retirée de la table de routage et ainsi le préfixe n'est plus annoncé dans les annonces BGP.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Le stockage fait sa migration</title>
    <link>http://lacuisinedegandi.net/post/2011/04/05/Le-stockage-fait-sa-migration</link>
    <guid isPermaLink="false">urn:md5:615f9a81e38e3897b3e631a1685b5914</guid>
    <pubDate>Wed, 06 Apr 2011 15:27:00 +0200</pubDate>
    <dc:creator>William</dc:creator>
        <category>Hébergement</category>
        <category>API</category><category>Hébergement</category><category>snapshot</category>    
    <description>&lt;p&gt;Depuis quelques mois, vous avez peut-être pu utiliser des serveurs aux États-Unis. &lt;a href=&quot;http://lacuisinedegandi.net/post/2010/12/14/Nouvelle-architecture-de-stockage&quot;&gt;Le changement de l’infrastructure de stockage&lt;/a&gt; était un des points forts dans l'infrastructure pour l'hébergement.&lt;br /&gt;
Avant ça, il a fallu adapter notre infrastructure afin qu'elle puisse comprendre &amp;quot;n&amp;quot; datacenters. La mise en place de la nouvelle plateforme de stockage n'a pas été si compliquée puisqu'elle était indépendante de celle existante en France. Le datacenter était nouveau, c'était donc assez simple à mettre en place : tous les nouveaux serveurs aux États-Unis ont bénéficié de cette nouvelle technologie.&lt;/p&gt;    &lt;p&gt;Côté France, la migration était inévitable afin d'avoir une infrastructure homogène bénéficiant de nouvelles fonctionnalités. Le problème est différent et un peu plus compliqué : faire cohabiter deux systèmes de stockage différents.
En effet, nous avons été confrontés à quelques problèmes pour que les machines hébergeant les serveurs puissent faire cohabiter les deux systèmes en même temps. La mise en production aux États-Unis date déjà de plus de trois mois, une grosse partie de notre temps a donc été consacrée à cette migration. Celle-ci suit son cours, elle prend du temps (&lt;strong&gt;beaucoup&lt;/strong&gt;) et sera disponible pour tout le monde dans les prochaines semaines ; nous serons alors capable de fournir du stockage sur deux technologies différentes.&lt;br /&gt;
Quand cela sera effectif, toutes les nouvelles créations de disques se feront sur la nouvelle plateforme : on entrera alors dans une nouvelle phase de migration, c'est à dire celle qui vous concerne directement, migrer vos disques.&lt;/p&gt;


&lt;p&gt;Il y aura plusieurs façons de migrer :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Créer un nouveau disque :&lt;br /&gt;&lt;br /&gt;la simple création d'un disque se fera sur la nouvelle plateforme&lt;br /&gt;&lt;br /&gt;Attachez ce disque à votre serveur actuel et copiez les données qui vous intéressent ; une très bonne occasion pour faire le ménage dans ce que vous n'utilisez pas. Les commandes comme &lt;code&gt;cp&lt;/code&gt;/&lt;code&gt;rsync&lt;/code&gt; seront tout à fait appropriées.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Créer un disque à partir d'un autre :&lt;br /&gt;&lt;br /&gt;Cette fonctionnalité est disponible depuis plusieurs mois dans l'&lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt; :&lt;br /&gt;&lt;code&gt;disk.create_from(apikey, disk_spec, src_disk_id)&lt;/code&gt;&lt;br /&gt;voir &lt;a href=&quot;http://doc.rpc.gandi.net/hosting/reference.html#disk.create_from&quot; hreflang=&quot;en&quot;&gt;http://doc.rpc.gandi.net/hosting/reference.html#disk.create_from&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La prochaine mise en production fera apparaître sur l'interface de gestion des disques, la possibilité de créer un disque à partir d'un autre afin de vous faciliter la tâche si vous n’êtes pas un utilisateur de l'&lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt;.&lt;br /&gt;Cela nécessitera que le serveur auquel est attaché le disque soit stoppé, ou alors que le disque source soit détaché.&lt;br /&gt;&lt;br /&gt;Il faut par ailleurs noter que la durée de la copie dépendra directement de la taille du disque ; il faudra donc s'armer d'un peu de patience si vous utilisez cette méthode pour copier un disque d'une taille importante.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si le nouveau disque est un disque système, il suffira alors de le passer en disque de &lt;em&gt;boot&lt;/em&gt; via l'interface (&amp;quot;Disque de boot&amp;quot; dans les détails de votre serveur), ou via l'API :&lt;br /&gt;&lt;code&gt;vm.disk_attach(apikey, vm_id, disk_id, {'position': 0})&lt;/code&gt;&lt;br /&gt;voir &lt;a href=&quot;http://doc.rpc.gandi.net/hosting/reference.html#vm.disk_attach&quot; hreflang=&quot;en&quot;&gt;http://doc.rpc.gandi.net/hosting/reference.html#vm.disk_attach&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Cette migration vous permettra, entre autres, de bénéficier de nouvelles fonctionnalités comme les &lt;em&gt;snapshots&lt;/em&gt;, &amp;quot;redimensionnements&amp;quot;, &amp;quot;copie rapide&amp;quot;... qui arriveront dans les semaines suivantes... Au delà d'une infrastructure qui s'améliore de mois en mois, on espère vous parler très vite de ces fonctionnalités qui pourraient changer la façon d'utiliser vos serveurs.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Opération Libellule - Un tout nouveau réseau Gandi</title>
    <link>http://lacuisinedegandi.net/post/2011/01/24/Operation-Libellule-Un-tout-nouveau-reseau-Gandi</link>
    <guid isPermaLink="false">urn:md5:125f6aa5cb08f494dd4b8ced0b02be9d</guid>
    <pubDate>Mon, 24 Jan 2011 14:07:00 +0100</pubDate>
    <dc:creator>Leland Vandervort</dc:creator>
            
    <description>&lt;p&gt;Comme vous avez probablement dû vous en apercevoir, sur les 18 derniers mois, nous avons effectué plusieurs maintenances sur le réseau Gandi. Certaines ont été visibles avec des interruptions de service, d'autres ont été effectuées sans que cela impacte le service. Beaucoup d'entre vous nous ont demandé plus de détails sur ces travaux en cours, j'ai donc décidé de faire ce petit billet pour vous en dire un peu plus concernant l'évolution du réseau sur les prochains mois.&lt;/p&gt;    &lt;p&gt;Tout d'abord pourquoi ce nom &amp;quot;Opération Libellule&amp;quot; ? (Dragonfly en anglais) Hmm...disons que je vais vous laisser y réfléchir un peu. D'ailleurs, les 5 premiers qui trouveront et m'enverront l'explication par email avant le 14 février sur libellule AT gandi DOT net gagnent un t-shirt Gandi. (précisez votre taille pour le t-shirt). Quelques indices sont disséminés dans ma présentation ci-dessous.&lt;/p&gt;



&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;Un peu d'histoire&lt;/h3&gt;


&lt;p&gt;Le réseau actuel de Gandi a grossi de manière organique sur les 10 dernières années sur une base relativement simple et &amp;quot;flat&amp;quot;. À chaque fois que nous avons ajouté un nouveau service, le réseau a été étendu pour soutenir l'innovation des produits. Une des plus notables a été l'expansion de notre réseau de l'autre côté de l'atlantique sur notre centre de données de Baltimore.&lt;/p&gt;


&lt;p&gt;Du fait de cette base originelle assez simple justement, et du désir d'avoir un réseau de niveau 2 adjacent entre plusieurs centres de données, une des façons les plus simples d'avoir une proximité entre nos salles était d'utiliser un système de &amp;quot;span&amp;quot; (ou d’agrégation (trunk)) pour diviser les différents réseaux locaux (LAN) sur les différents sites. Bien que ce système soit assez efficace pour un réseau de taille raisonnable, il est de plus en plus difficile à maintenir et de moins en moins efficace avec un réseau grandissant. C'est peut-être sur ce point que nous nous sommes égarés les années précédentes.&lt;/p&gt;


&lt;p&gt;En 2008, nous avons réalisé que même si de nombreux équipements (switchs, routeurs) du réseau avaient des &amp;quot;noms&amp;quot; spécifiques comme s’ils appartenaient à un modèle de réseau hiérarchique, en pratique, cela n'était pas le cas. Nous nous sommes retrouvés avec une infrastructure avec six switchs/routeurs de cœur de réseau et de nombreux équipements de distribution distribués sur quatre sites différents  -- tous dans le même segment de réseau spann-é/agrégé à travers le cœur à tous les niveaux du réseau. Le résultat était un cauchemar de gestion et de diagnostic des problèmes en relation avec les calculs de &lt;a href=&quot;http://fr.wikipedia.org/wiki/Spanning_Tree&quot; hreflang=&quot;fr&quot;&gt;spanning tree&lt;/a&gt; et autres comportements de routage étrange.&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;L'origine de l'opération Libellule&lt;/h3&gt;


&lt;p&gt;En plus de la simple architecture à revoir, les équipements, eux-mêmes, commençaient à être dépassés et ne pouvaient plus suivre les évolutions produits nécessaires. Du coup, dès 2009, nous avons commencé à moderniser et restructurer notre réseau en prenant en compte l'évolution de la société sur les 3 à 5 ans à venir, en France et à l'international.&lt;/p&gt;


&lt;p&gt;La première étape a été de consolider la connectivité entre nos sites, qui jusqu'alors utilisaient de multiples réseaux locaux virtuels (VLAN) agrégés (trunked) sur des connexions en fibre noire. Nous avons bien entendu gardé la fibre noire, mais migré/multiplexé la connectivité point à point sur plusieurs longueurs d'onde à travers la fibre.&lt;/p&gt;


&lt;p&gt;Le challenge était d'effectuer toutes ces modifications sans impacter en même temps tous les services Gandi. Certains de nos services (DNS, Hébergement, ..) requièrent 100% de disponibilité. Tout casser et tout réinstaller sur de nouveaux équipements était tout simplement inconcevable. Du fait de ces contraintes, le travail a pris près de 2 ans pour être finalisé.&lt;/p&gt;


&lt;p&gt;Cela étant dit, nous devons continuer de remettre à flot et maintenir les services tout en allant de l'avant à pleine vitesse vers les nouvelles fonctionnalités passionnantes qui seront implémentées pendant cette nouvelle année. Pour parler aux marins, il fallait mettre à jour les hors-bords !&lt;/p&gt;


&lt;p&gt;En septembre 2009, nous avons mis à jour nos switchs de cœur de réseau en passant d'une plate-forme Cisco sup32 vers une Cisco Sup720 3BXL.&lt;/p&gt;


&lt;p&gt;Ensuite, en novembre 2009, nous avons déployé la refonte de notre vielle plateforme de distribution à base de &lt;a href=&quot;http://en.wikipedia.org/wiki/Catalyst_6500&quot; hreflang=&quot;fr&quot;&gt;Cisco 6500&lt;/a&gt; et des anciennes cartes Supervisor-2A vers un système tout neuf en switch virtuel (VSS) à base de Cisco Virtual Switching System 1440 dans notre centre de donnée à Saint-Denis.  C'est à ce moment aussi que nous avons commencé à déployer la technologie &lt;a href=&quot;http://fr.wikipedia.org/wiki/MPLS&quot; hreflang=&quot;fr&quot;&gt;MPLS&lt;/a&gt; (MultiProtocol Label Switching) à travers notre réseau afin d'être capable de fournir de l'ingénierie sur le trafic et des systèmes innovants sur la façon d'interconnecter nos salles réseaux&lt;/p&gt;



&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;Objectifs à l'international&lt;/h3&gt;


&lt;p&gt;Avec l'extension du réseau Gandi, non seulement en France, mais aussi à l'international, nous avions comme objectif d'adapter la structure de notre réseau pour obtenir un système à la fois évolutif et capable de prendre en charge notre trafic international (nous vendons dans 192 pays) et l'ajout de centre de données dans d'autres pays.&lt;/p&gt;


&lt;p&gt;Tous les architectes réseau vous diront qu'un réseau évolutif est modulaire et hiérarchique. Ceci a été l'un des principes de base du design d'infrastructure réseau pendant des années et reste aujourd'hui vrai. Cisco appelle cela le &amp;quot;modèle de réseau en trois niveaux&amp;quot;. Cependant, durant les dernières années, la situation est devenue un peu plus complexe avec la montée de la virtualisation et des architectures orientées services où les services sont devenus, eux-mêmes, un élément du réseau.
Cela étant dit, pratiquement tous les larges réseaux évolutifs actuellement en fonctionnement utilisent un modèle d'architecture modulaire et hiérarchique.&lt;/p&gt;


&lt;p&gt;Avec l'expansion de Gandi sur le continent nord-américain, nous devons assurer une redondance entre les centres de données. Une simple règle s'applique ici :
chaque centre de données est connecté à au moins deux autres centres par divers moyens de connectivités.&lt;/p&gt;


&lt;p&gt;Pendant cette année écoulée, nous avons construit notre centre de données à Baltimore, actuellement complètement fonctionnel pour la plate-forme d'hébergement de Gandi. Pendant les prochains mois, un certain nombre de systèmes de Gandi seront aussi disponibles à Baltimore -- principalement le DNS et le site web de Gandi.&lt;/p&gt;


&lt;p&gt;À la fin de 2010, notre connectivité internationale passait par plus de capacité de peering à Londres, Amsterdam et Ashburn Virginia/Washington DC -- d'autres seront mis en place pendant les prochaines années..
&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;Et ensuite ?&lt;/h3&gt;


&lt;p&gt;Nous avons augmenté le nombre d'opérations par nos ingénieurs réseau depuis le début de l'année 2011 et sur la période des prochains mois à venir, un certain nombre d'opérations de maintenance hautement intrusives seront entreprises dans le but de finaliser l'Opération Libellule avant la fin de la première moitié de 2011.&lt;/p&gt;


&lt;p&gt;La première étape de cette phase finale a eu lieu le week-end dernier à Saint-Denis pendant lequel nous avons définitivement enlevé les réseaux locaux (LANs) spann-é et agrégés (trunked) entre la distribution/agrégation et le niveau du cœur du réseau à Saint-Denis. En résultat de cette maintenance, les incidents dans les niveaux de distributions ou d'accès du segment de réseau à Saint-Denis n'auront aucun impact sur le routage du cœur du réseau de Gandi dans ce centre de données. Nous avons ensuite à faire la même opération à Telehouse2 (Voltaire, Paris); cela est cependant un peu plus complexe.&lt;/p&gt;


&lt;p&gt;Pendant les prochaines semaines, vous allez voir un certain nombre de maintenances planifiées pendant lesquelles nous allons entreprendre le reste des modifications nécessaires pour permettre de mener à bien ce projet planifié sur trois ans :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fermeture de notre point de présence à Paris Telehouse 1 (Jeuneurs, Paris)&lt;/li&gt;
&lt;li&gt;Mettre à jour un certain nombre de services critiques de Gandi afin d'utiliser de nouveaux équipements et logiciels.&lt;/li&gt;
&lt;li&gt;Implémenter une solution Anycast et Content Delivery pour un certain nombre de services comme le DNS ou le site web de Gandi dans tous nos centres de données en Europe et aux USA.&lt;/li&gt;
&lt;li&gt;Ré-installation et mise à jour complète des services de Gandi à Telehouse 1 (Voltaire, Paris) avec une redondance et interopérabilité inter-site.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;A quoi cela va ressembler ?&lt;/h3&gt;


&lt;p&gt;La nouvelle infrastructure réseau de Gandi sera proche du schéma ci-dessous (schéma quelque peu simplifié). L'élément clé est l'architecture qui est prévue et construite dans une optique de disponibilité, modularité et surtout extensible. Tout cela reste assez élémentaire après tout ... Comme Mickey Mouse a dit un jour : &amp;quot;L'arithmétique, c'est être capable de compter jusqu'à vingt sans enlever ses chaussures.&amp;quot; ;)&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://lacuisinedegandi.net/public/dragonfly/dragonfly-architecture.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/dragonfly/.dragonfly-architecture_m.jpg&quot; alt=&quot;Dragonfly Architecture&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Dragonfly Architecture, jan 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Nouveaux noyaux disponibles pour votre  serveur.</title>
    <link>http://lacuisinedegandi.net/post/2011/01/17/Nouveaux-noyaux-disponibles-pour-votre-serveur</link>
    <guid isPermaLink="false">urn:md5:d7c971181061de85f6263dbf822b1f48</guid>
    <pubDate>Mon, 17 Jan 2011 14:07:00 +0100</pubDate>
    <dc:creator>aegiap</dc:creator>
        <category>Hébergement</category>
        <category>hebergement</category><category>kernel</category><category>noyau</category>    
    <description>&lt;p&gt;La liste des noyaux disponibles sur l’hébergement de Gandi s'allonge. Vous avez maintenant la possibilité d'utiliser un 2.6.36 ou un 2.6.32 avec le patch &lt;a href=&quot;http://grsecurity.net/&quot; hreflang=&quot;en&quot;&gt;grsecurity&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;L’hébergement Gandi dispose de noyaux compilés et préparés par l'équipe technique
de Gandi. Trois nouveaux éléments ont été récemment ajouté à la liste des
noyaux disponibles :&lt;/p&gt;


&lt;h2&gt;2.6.36 en version x86_32 et x86_64&lt;/h2&gt;


&lt;p&gt;Le noyau Linux est en développement continuel et de nouvelles versions contenant
des correctifs et des nouvelles fonctionnalités sont publiées régulièrement.
Nous avons donc préparé une version 32 et 64 bits du noyau 2.6.36 avec le patch de
D.Kipper qui améliore la gestion de la mémoire en option. De plus, la
fonctionnalité de redimensionnement directe d'un disque attaché à une machine
virtuelle est maintenant intégré dans le noyau. La fonctionnalité devrait
arriver bientôt dans l'interface d’hébergement de Gandi.&lt;/p&gt;


&lt;h2&gt;2.6.32 en version x86_64 avec le patch grsecurity.&lt;/h2&gt;


&lt;p&gt;Les noyaux précédents permettaient déjà de mettre en place des solutions de
sécurité sur le système de la machine virtuelle (au travers de SELinux par
exemple). En choisissant ce noyau, vous pourrez mettre en place une politique
de sécurité avancée grâce au patch &lt;a href=&quot;http://grsecurity.net/&quot; hreflang=&quot;en&quot;&gt;grsecurity&lt;/a&gt; en version 2.1.14-201005151340.
Le noyau contient aussi la réplication de disque &lt;a href=&quot;http://www.drbd.org/&quot; hreflang=&quot;en&quot;&gt;DRBD&lt;/a&gt; en version 8.3.8 qui
n'était pas encore intégrée officiellement dans le noyau (maintenant intégrée depuis la version 2.6.33).&lt;/p&gt;


&lt;p&gt;Vous pouvez consulter le &lt;a href=&quot;http://wiki.gandi.net/fr/hosting/kernel_changelog&quot; hreflang=&quot;fr&quot;&gt;changelog&lt;/a&gt; des noyaux de Gandi et la &lt;a href=&quot;http://wiki.gandi.net/fr/hosting/troubleshooting/update-kernel-modules&quot; hreflang=&quot;fr&quot;&gt;procédure&lt;/a&gt; de mise à jour des modules des noyaux.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Quota, parts et coeurs en option</title>
    <link>http://lacuisinedegandi.net/post/2010/12/27/Quota-parts-et-coeurs-en-option</link>
    <guid isPermaLink="false">urn:md5:63ab85ec4943acdb7ddf2746e6035c91</guid>
    <pubDate>Mon, 27 Dec 2010 17:39:00 +0100</pubDate>
    <dc:creator>zllak</dc:creator>
        <category>Hébergement</category>
        <category>API</category>    
    <description>&lt;p&gt;La prochaine version (3.0.8) va apporter un changement majeur dans la gestion du quota Hébergement, ainsi que dans l'utilisation de l'API associée. Notez bien que les modifications décrites ci-dessous n'arriveront que lors de la mise en production effective de la 3.0.8, dans les prochains jours.&lt;/p&gt;


&lt;p&gt;Le changement a principalement été motivé par l'envie de vous proposer des cœurs en options pour vos serveurs. Mais il s'est avéré que dans l'état actuel des choses, cette option n'était pas possible.&lt;/p&gt;


&lt;p&gt;Petite explication...&lt;/p&gt;    &lt;h2&gt;Existant&lt;/h2&gt;


&lt;p&gt;Lors de la création d'un serveur, le nombre de cœurs est déterminé en fonction du nombre de parts associées au serveur. Nous donnons un cœur CPU toutes les 4 parts, soit :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 cœur pour un serveur avec 1 à 4 parts&lt;/li&gt;
&lt;li&gt;2 cœurs pour un serveur de 5 à 8 parts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6 cœurs pour un serveur de 21 à 24 parts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le nombre total de cœurs utilisés dépend donc directement de l'utilisation des parts. Prenons l'exemple d'un client qui aurait 48 parts :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si il créé 48 serveurs, il aura donc un total de 48 cœurs utilisés.&lt;/li&gt;
&lt;li&gt;Si il créé deux serveurs de 24 parts, il aura donc un total de 12 cœurs utilisés (6 par serveur).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il devient évident qu'il est très difficile de déterminer le nombre de cœurs &amp;quot;disponibles&amp;quot; puisque cela dépend entièrement de l'utilisation qu'il est fait des parts. Et sans cette notion essentielle de &amp;quot;cœur disponible&amp;quot;, nous ne pouvions pas vous proposer d'acheter des cœurs supplémentaires.&lt;/p&gt;


&lt;h2&gt;Changements&lt;/h2&gt;


&lt;p&gt;Il a donc fallu trouver une solution pour palier ce problème.
Nous sommes arrivés à une solution qui permettait de rester cohérent avec l'existant, tout en ouvrant la possibilité de compter des cœurs en option.&lt;/p&gt;


&lt;p&gt;La solution qui nous est venue est tout simplement de supprimer les parts.
Les parts au sens technique bien-sûr. La part devient ce qu'elle aurait toujours du être : un bundle commercial, et non une notion technique.&lt;/p&gt;


&lt;p&gt;Pour rappel, la part apporte aujourd'hui :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;8192 Mo d'espace disque,&lt;/li&gt;
&lt;li&gt;5 Mbps de bande passante,&lt;/li&gt;
&lt;li&gt;256 Mo de mémoire.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le droit de créer un serveur ne s'appuyait que sur le fait d'avoir une part disponible.&lt;/p&gt;


&lt;p&gt;Pour supprimer cette notion technique de part, nous avons donc ajouté dans ce bundle &amp;quot;part&amp;quot; : 1 quota-serveur.
Pour créer un serveur, il faudra donc avoir 1 quota-serveur et des ressources disponibles (mémoire, disque, et cœur).&lt;/p&gt;


&lt;p&gt;En effet, pour les utilisateurs de l'API, la méthode vm.create prenait un paramètre &amp;quot;shares&amp;quot;. Ce paramètre disparait donc.
Il laisse sa place au paramètre &amp;quot;cores&amp;quot;, qui représente le nombre de cœurs qui seront utilisés par ce serveur.&lt;/p&gt;


&lt;p&gt;Maintenant, pour maintenir l'offre actuelle, nous avons dû ruser :)&lt;/p&gt;


&lt;p&gt;Le quota-serveur inclut 0.75 de quota de cœur et chaque bundle (le bundle &amp;quot;part&amp;quot;) inclut, lui, 0.25 de quota de cœur.
Si vous souhaitez créer un serveur avec 2 cœurs, 1 quota-serveur sera utilisé et fournira 0.75 de quota-cœur. Le premier bundle &amp;quot;part&amp;quot; fournira le 0.25 manquant pour compléter le 1er cœur et vous devrez disposer de 1 de quota-cœur (fournit avec les parts ou en option) supplémentaire pour avoir votre second cœur.&lt;/p&gt;


&lt;p&gt;Pour les utilisateurs de l'API, par exemple, si l'on veut créer un serveur avec 3 cœurs, on appelle la méthode 'vm.create' avec le paramètre &amp;quot;cores&amp;quot; qui vaut 3 directement. Vous consommerez de votre pool de ressources, 1 quota-serveur et 2.25 de quota-cœur.&lt;/p&gt;


&lt;p&gt;Autre note, quand un serveur est créé, les 0.75 quota-cœur fournit par le quota-serveur viendront s'ajouter à votre total de cœur. Il n'est donc pas bizarre de voir ce chiffre monter après chaque création de serveur.&lt;/p&gt;


&lt;h3&gt;Site web&lt;/h3&gt;


&lt;p&gt;Pour le site web, les deux nouveaux quotas ont fait leur apparition dans la barre de récapitulatif des ressources.
Sur la page de création de serveur, on ne choisit désormais plus le nombre de parts, mais le nombre de cœurs, ainsi que sur la page de mise à jour des serveurs.
Là, comme dans l'API, on ne parle que de cœurs entiers, pas de virgule.&lt;/p&gt;


&lt;p&gt;Il faut également choisir la bande passante désirée lors de la création de l'interface réseau, car c'était le nombre de parts qui déterminait la bande
passante. En attendant de vous fournir de la bande passante en option (cette année), nous la globalisons et vous permettons d'utiliser votre quota comme vous le souhaitez.&lt;/p&gt;


&lt;h3&gt;API&lt;/h3&gt;


&lt;p&gt;Les méthodes qui ont été impactées sont 'vm.create', 'vm.update' et 'account.info'.
Les paramètres &amp;quot;shares&amp;quot; des méthodes 'vm.create' et 'vm.update' disparaissent, et les paramètres &amp;quot;cores&amp;quot; et &amp;quot;bandwidth&amp;quot; font leur apparition :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cores : nombre de cœurs pour la création/mise à jour du serveur (entier de 1 à 6)&lt;/li&gt;
&lt;li&gt;bandwidth : la bande passante pour créer l'interface réseau (selon votre quota)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le paramètre &amp;quot;shares&amp;quot; reste disponible jusqu'à la fin de la période de beta de l'API.
Il disparaitra totalement après cette période.&lt;/p&gt;


&lt;p&gt;La méthode 'account.info' affiche désormais les ressources 'granted', 'used' et 'available' pour &amp;quot;cores&amp;quot; et &amp;quot;servers&amp;quot;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Ces changements interviendront dans les prochains jours, lors de la mise en production de l'API 3.0.8&lt;/strong&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Nouvelle architecture de stockage</title>
    <link>http://lacuisinedegandi.net/post/2010/12/14/Nouvelle-architecture-de-stockage</link>
    <guid isPermaLink="false">urn:md5:5adc3a994c0e03f571cd2dd324af5d95</guid>
    <pubDate>Tue, 14 Dec 2010 17:56:00 +0100</pubDate>
    <dc:creator>man</dc:creator>
        <category>Hébergement</category>
            
    <description>&lt;p&gt;Notre infrastructure de stockage nouvelle génération est en cours de déploiement.&lt;/p&gt;


&lt;p&gt;La gestion des disques, elle aussi, passe à la moulinette de la virtualisation... et nous sommes impatients de vous en faire profiter !&lt;/p&gt;    &lt;p&gt;Comme vous allez le voir, les fonctionnalités sont très intéressantes et nous allons les intégrer, au fur et à mesure, sur votre interface de gestion ainsi que sur la nouvelle API.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Améliorations&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Outre les disques, bien sûr toujours en RAID pour la redondance, et le cache en écriture résistant à une coupure de courant, les serveurs de stockage sont maintenant en cluster : en cas de panne d'un contrôleur, un contrôleur de secours est prêt à reprendre la gestion des disques.&lt;/p&gt;


&lt;p&gt;La capacité de stockage a été améliorée ainsi que les I/Os. Vous pourrez créer ainsi, très prochainement, des disques plus gros.&lt;/p&gt;


&lt;p&gt;La création, la copie et l'agrandissement de disques seront plus rapide et plus automatisés.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Snapshot&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Ce mécanisme permet de réaliser un cliché instantané de votre disque qu'il soit utilisé ou détaché.
Le Snapshot peut être utilisé pour réaliser une sauvegarde cohérente de votre disque.
D'ici quelques semaines, une gestion des Snapshots à la demande sera mise à votre disposition.
Nous travaillons également sur une gestion périodique des Snapshots. Par exemple, la possibilité de créer un Snapshot tous les jours et de ne garder que les 7 derniers.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Copie de disque&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Grâce aux Snapshots, il sera possible, dès la sortie, d'effectuer une copie rapide de votre disque à chaud, même en ayant de l'activité sur celui-ci.
Cette fonctionnalité facilitera le déploiement rapide (clone) de serveurs.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Restauration&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Vous pourrez, à partir d'un Snapshot, créer un disque, récupérer vos fichiers effacés ou encore effectuer un retour arrière (rollback).&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Sauvegarde automatique de disque&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Pour les plus exigeants, un système de sauvegarde disque à disque, vers un système de stockage indépendant, est à l'étude.
Pour la majorité des usages, le mécanisme des snapshots devrait largement répondre à vos besoins.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Disques et partitionnement&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Les disques Gandi sont des disques logiques, c'est à dire que nous fournissons accès à des disques déjà optimisés, sécurisés, et qu'il est facile d'en créer, de les agrandir, ou de les détruire à la volée.&lt;/p&gt;


&lt;p&gt;Les partitions, LVM, ou des algorithmes RAID représentent pour votre machine virtuelle au mieux une surcharge inutile, au pire une réorganisation des accès disques pouvant résulter en une dégradation des performances (voir ci-dessous). De plus, vous pouvez vous priver de fonctionnalités très pratiques : un snapshot effectué sur un disque faisant partie d'un RAID n'aurait aucun intérêt, le redimensionnement d'un disque partitionné (notre ancien système pour ceux qui ont pratiqué) est complexe voire dangereux si on ne fait pas attention.&lt;/p&gt;


&lt;p&gt;Comme pour les SSD et les nouveaux disques dur, les blocs en interne ne sont plus de 512 octets mais de 4k.
Si vous utilisez des partitions, ou LVM, les accès à vos données risquent de ne pas être alignés, et les performances divisées par trois.&lt;/p&gt;


&lt;p&gt;Les partitions n'ont de réelle utilité que pour les disques physiques. Cela complique la gestion de vos disques pour rien : regrouper vos données sur un seul disque de data ou créer plusieurs disques est la bonne solution.&lt;/p&gt;


&lt;p&gt;Les disques créés par Gandi n'utiliseront plus de partitions. Actuellement seuls les disques système possèdent une partition par défaut (système et swap) : elle va disparaitre. Le disque système sera alors géré comme n'importe quel autre disque, ce qui facilitera la gestion. Pour garder le même niveau de service, nous vous fournirons un disque temporaire pour le swap. Pour rester cohérents avec les configurations actuelles, nous émulerons des partitions virtuelles pour vous présenter le disque système et le swap : le système sera vu comme xvda1, le swap comme xvda2.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Comment créer une image pour ses serveurs ?</title>
    <link>http://lacuisinedegandi.net/post/2010/11/09/Comment-creer-une-image-pour-ses-serveurs</link>
    <guid isPermaLink="false">urn:md5:a9ef0a02487888c85dcd90950600dc6e</guid>
    <pubDate>Tue, 09 Nov 2010 16:27:00 +0100</pubDate>
    <dc:creator>aegiap</dc:creator>
        <category>Hébergement</category>
        <category>image os</category>    
    <description>Les applications pour une image système ne manquent pas : créer son propre système avec ses applications préférées pré-installées, préparer une image d'un serveur de jeux facilement remontable, dupliquer un serveur personnalisé facilement ou tout simplement sauvegarder son système...    &lt;p&gt;Le processus est assez simple et peut être réalisé par tout le monde. Il suffit
juste d'être rigoureux dans son déroulement.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;creer-un-disque-de-donnees&quot;&gt;
&lt;h1&gt;Créer un disque de données&lt;/h1&gt;
&lt;p&gt;Vous devez créer un disque de données à partir de l'interface de création de
disque de votre compte hébergement. Dans le cas d'une copie de disque existant,
le disque de données doit avoir une taille suffisante.&lt;/p&gt;
&lt;p&gt;Attachez simplement votre nouveau disque au serveur cible : le serveur
contenant le disque virtuel à copier ou le serveur pour faire l'installation de
base.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;creer-l-image-systeme&quot;&gt;
&lt;h1&gt;Créer l'image système&lt;/h1&gt;
&lt;div class=&quot;section&quot; id=&quot;en-faisant-une-copie-des-donnees-d-un-disque-virtuel&quot;&gt;
&lt;h2&gt;En faisant une copie des données d'un disque virtuel&lt;/h2&gt;
&lt;p&gt;Attention : il vous faudra suffisamment de place sur le disque destination.&lt;/p&gt;
&lt;p&gt;Copiez les données de votre disque source vers le disque de destination avec la
commande tar :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;tar cC /srv/disk1 . | tar xC /srv/disk2&lt;/pre&gt;
&lt;p&gt;si &lt;em&gt;/srv/disk1&lt;/em&gt; est le répertoire dans lequel est monté le disque source et
&lt;em&gt;/srv/disk2&lt;/em&gt; le répertoire du disque de destination. La copie par &lt;strong&gt;tar&lt;/strong&gt; ne copiant que les données et
non les blocs vides, l'opération est rapide.&lt;/p&gt;
&lt;p&gt;Attention : si vous voulez copier le disque système du système local, il faudra
ajouter des exclusions :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;tar --exclude=/proc --exclude=/sys --exclude=/srv/disk2 c / | tar xC /srv/disk2&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;en-installant-un-systeme-de-base&quot;&gt;
&lt;h2&gt;En installant un système de base&lt;/h2&gt;
&lt;div class=&quot;section&quot; id=&quot;preambule&quot;&gt;
&lt;h3&gt;Préambule&lt;/h3&gt;
&lt;p&gt;Votre nouveau disque attaché à un serveur est prêt à être utilisé. Vous pouvez
partitionner votre disque image pour éventuellement intégrer une partition de
swap dans l'image, mais nous vous &lt;em&gt;conseillons&lt;/em&gt; de ne pas créer de partition
et de créer le système de fichiers directement dans le disque.&lt;/p&gt;
&lt;p&gt;Cela représente l'avantage d'être plus souple si vous comptez redimensionner le
disque par la suite (plus de calcul de table de partition à faire), d'être
mieux aligné avec le stockage des blocs sur nos filers physiques et de pouvoir
décider ou non d'utiliser une partition de fichier d'échange (swap).&lt;/p&gt;
&lt;p&gt;Dans un futur proche, toutes les images d'OS fournies par Gandi n'auront plus
de partition et l'hébergement Gandi fournira un espace de swap supplémentaire
automatiquement.&lt;/p&gt;
&lt;p&gt;Cependant, les serveurs virtuels verront toujours le premier disque comme &amp;quot;xvda1&amp;quot;, et le disque de swap comme &amp;quot;xvda2&amp;quot;.&lt;/p&gt;
&lt;p&gt;Que vous choisissiez de partitionner ou non, l'hébergement Gandi saura démarrer
les disques systèmes ayant votre image comme source en détectant le début du
disque et en adaptant les options de démarrage du kernel.
Gandi fournit un serveur contenant une copie des distributions proposées en
images de système. Vous pourrez utiliser ce serveur pour accélérer
l'installation : &lt;a class=&quot;reference external&quot; href=&quot;http://mirrors.gandi.net/&quot;&gt;mirrors.gandi.net&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;preparation&quot;&gt;
&lt;h3&gt;Préparation&lt;/h3&gt;
&lt;p&gt;Dans un premier temps, vérifier que le disque virtuel n'est pas déja monté
(dans &lt;em&gt;/proc/mounts&lt;/em&gt; par exemple). Le démontez si il l'est. Partitionner
eventuellement le disque virtuel puis formatez le tout.&lt;/p&gt;
&lt;p&gt;Nous vous recommandons de formatter le disque directement et d'utiliser un
système de fichiers ext4. Dans le cas où votre disque serait xvdc :
&lt;em&gt;mkfs.ext4 -j -m0 /dev/xvdc&lt;/em&gt; puis montez le disque dans un répertoire de
votre système : &lt;em&gt;mount -o rw /dev/xvdc /var/tmp&lt;/em&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;installation-par-debootstrap-pour-les-distributions-en-package-deb&quot;&gt;
&lt;h3&gt;Installation par debootstrap pour les distributions en package .deb&lt;/h3&gt;
&lt;p&gt;L'installation d'un système de base peut se faire par &lt;strong&gt;debootstrap&lt;/strong&gt; qui
installe dans un répertoire. Une fois l'installation finie et quelques
modifications effectuées, le disque contiendra un système GNU/Linux bootable et
fonctionnel. Le système contiendra un minimum d'application et il vous faudra
adapter le système à vos besoins en installant les applications souhaitées avec
apt-get et configurer notamment les locales.&lt;/p&gt;
&lt;p&gt;Nous vous recommandons d'installer un système en architecture amd64/x86_64 qui
sera plus rapide sur l'hébergement Gandi. Au moment du choix du kernel, il
faudra choisir le kernel x86_64 qui convient (2.6.32-3831 par exemple).&lt;/p&gt;
&lt;p&gt;Exemple d'installation pour une Ubuntu Maverick 10.10 sur le disque monté
précédemment :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;debootstrap --arch=amd64 --verbose --components=main,universe,multiverse \&lt;br /&gt;--include=openssh-server,openssh-client maverick /var/tmp \&lt;br /&gt;http://mirrors.gandi.net/ubuntu/&lt;/pre&gt;
&lt;p&gt;Dans le cas où debootstrap vous indique qu'aucun fichier de config pour
maverick est accessible, il suffira de faire un lien dans
&lt;em&gt;/usr/share/debootstrap/scripts&lt;/em&gt; de lucid vers maverick.
L'étape suivante est de modifier le fichier contenant les sources vers les
médias des packages. Editez le fichier /etc/apt/sources.list &lt;strong&gt;dans le
répertoire&lt;/strong&gt; en ajoutant les médias de la distribution et le média contenant
les paquets faits par Gandi.&lt;/p&gt;
&lt;p&gt;Exemple :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;# cat /var/tmp/etc/apt/sources.list&lt;br /&gt;deb http://mirrors.gandi.net/ubuntu maverick main universe multiverse&lt;br /&gt;deb http://mirrors.gandi.net/ubuntu maverick-security main universe multiverse&lt;br /&gt;deb http://mirrors.gandi.net/ubuntu maverick-updates main universe multiverse&lt;br /&gt;deb http://mirrors.gandi.net/gandi/ubuntu maverick main&lt;/pre&gt;
&lt;p&gt;Copiez ensuite les fichiers &lt;em&gt;/etc/hosts&lt;/em&gt;, &lt;em&gt;/etc/resolv.conf&lt;/em&gt; et &lt;em&gt;/etc/fstab&lt;/em&gt; du
système du serveur vers le répertoire contenant le système nouvellement
installé (/var/tmp dans notre exemple). Modifiez les valeurs des fichiers
en effaçant le hostname de la machine courante dans /etc/hosts et en
adaptant le fichier /etc/fstab à votre disque image.&lt;/p&gt;
&lt;p&gt;Une fois la commande debootstrap et la configuration terminées, vous pourrez
accéder au système fraichement installé en chroot-ant le répertoire.&lt;/p&gt;
&lt;p&gt;Par exemple : &lt;em&gt;chroot /var/tmp&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Vous pourrez ainsi rafraichir les médias de package par : &lt;strong&gt;apt-get update&lt;/strong&gt; et
installer les applications nécessaires pour votre utilisation. Attention
cependant, l'installation de certains packages dans un chroot demande quelques
corrections. Il faudra notamment monter /proc et /dev/pts normalement
disponible dans votre /etc/fstab : &lt;strong&gt;mount -a&lt;/strong&gt; puis rejouer la configuration
des packages par : &lt;strong&gt;dpkg --configure -a&lt;/strong&gt;. Certains paquets cherchent à
démarrer automatiquement les démons et serveurs installés.&lt;/p&gt;
&lt;p&gt;Afin de finir l'installation de ces paquets, il faudra modifier les fichiers de
postinst installé dans /var/lib/dpkg/info/ en commentant les appels à
&lt;em&gt;invoke-rc.d&lt;/em&gt; ou &lt;em&gt;start&lt;/em&gt; comme dans le cas de procps : &lt;strong&gt;#start procps&lt;/strong&gt;
dans procps.postinst ou rsyslog : &lt;strong&gt;#invoke-rc.d&lt;/strong&gt; dans rsyslog.postinst.&lt;/p&gt;
&lt;p&gt;Pour les distributions Ubuntu récentes, il faudra ajouter une entrée pour /dev
dans le fichier /etc/fstab : &lt;strong&gt;dev  /dev  tmpfs  rw  0  0&lt;/strong&gt; afin de démarrer
correctement.&lt;/p&gt;
&lt;p&gt;Nous vous recommandons d'installer les packages &lt;strong&gt;gandi-hosting-agent&lt;/strong&gt; et
&lt;strong&gt;gandi-hosting-vm&lt;/strong&gt; disponibles dans le média Gandi. Pour ce faire, ajoutez la
clef de mainteneur Gandi par :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D8EAC2F4DAFE3FA5&lt;/pre&gt;
&lt;p&gt;puis :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;apt-get install gandi-hosting-agent gandi-hosting-vm&lt;/pre&gt;
&lt;p&gt;Les packages installeront les dépendances nécessaires. Pour
un description des fonctionnalités de ces packages, veuillez lire l'article
&lt;a class=&quot;reference external&quot; href=&quot;http://lacuisinedegandi.net/post/2010/10/28/Modification-des-OS-standards-par-Gandi&quot;&gt;précédent&lt;/a&gt; sur la Cuisine de Gandi.&lt;/p&gt;
&lt;p&gt;Si le système sur votre serveur virtuel utilise une version 2.6 de python, il faudra installer le package &lt;strong&gt;gandi-hosting-agent-py2.6 &lt;/strong&gt;à la place de gandi-hosting-agent.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;installation-de-base-pour-les-distributions-en-package-rpm&quot;&gt;
&lt;h3&gt;Installation de base pour les distributions en package .rpm&lt;/h3&gt;
&lt;p&gt;L'installation d'une distribution à base de package en .rpm utilise la même
méthode que l'installation d'une distribution à base de package .deb mais en
utilisant &lt;strong&gt;rinse&lt;/strong&gt; ou une application spécifique de la distribution que vous
avez choisie.&lt;/p&gt;
&lt;p&gt;Par exemple en utilisant le même répertoire :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;rinse --arch=amd64 --directory=/var/tmp --distribution=centos-5&lt;/pre&gt;
&lt;p&gt;Suivant votre système de gestion des packages, il faudra ensuite ajouter les
médias de paquets dans la configuration afin d'installer les applications
nécessaires.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;autres-moyens-d-installation-de-systeme-de-base&quot;&gt;
&lt;h2&gt;Autres moyens d'installation de système de base&lt;/h2&gt;
&lt;p&gt;D'autres distributions (souvent plus spécifiques) proposent d'autres méthodes
d'installation du système de base. Parfois une image est disponible, il suffira
alors de la monter en loop puis de copier les fichiers dans l'image&lt;/p&gt;
&lt;p&gt;En reprenant l'exemple ci-dessus :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;mkdir /srv/a&lt;br /&gt;mount -o loop,ro /mon/répertoire/image /srv/a&lt;br /&gt;cp -raf /srv/a/ /var/tmp/&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;une-methode-plus-radicale&quot;&gt;
&lt;h2&gt;Une méthode plus radicale&lt;/h2&gt;
&lt;p&gt;On peut aussi copier tout le disque; s'assurer que le disque virtuel de destination qui
vient d'être attaché au serveur ne soit pas monté puis vérifiez dans /proc/mounts
que le label du disque n'est pas présent.&lt;/p&gt;
&lt;p&gt;Attention : cette méthode marche pour un disque de destination de même taille
que le disque source.&lt;/p&gt;
&lt;p&gt;Pour créer l'image de votre système et la copier sur votre nouveau disque de
données, vous devez utiliser la commande dd. La syntaxe de la commande demande
un peu d'attention.&lt;/p&gt;
&lt;p&gt;voici un exemple explicité après :&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;dd if=/dev/xvda of=/dev/xvdc conv=sync&lt;/pre&gt;
&lt;p&gt;Le paramètre &lt;strong&gt;if=&lt;/strong&gt; correspond au disque source; &lt;strong&gt;of=&lt;/strong&gt; indique le disque de
destination dont les données existantes seront complètement effacées.
Pour distinguer vos disques, nous vous conseillons d'utiliser préalablement
&lt;strong&gt;df&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Notez cependant que le chemin à utiliser pour le paramètre &lt;em&gt;if&lt;/em&gt; sera toujours
&lt;em&gt;/dev/xvda&lt;/em&gt; directement, sans quoi votre image ne sera pas bootable.
Il est nécessaire de reconfigurer le réseau de votre machine en DHCP avant de
procéder à la création de l'image. La copie par &lt;strong&gt;dd&lt;/strong&gt; prend beaucoup de
ressources et du temps, puisqu'elle copie octet par octet le disque source sur
le disque destination sans distinction entre bloc de donnée et bloc vide.
.
Le kernel Linux pour l'hébergement Gandi démarre par défaut sur la première
partition (root=/dev/xvda1 sur la ligne de commande pour le démarrage). Si vous
copiez un disque système existant, la table de partition sera correcte.
Sinon, veuillez vous assurer que la première partition du disque contient les
fichiers du système et l'attribut bootable. Vous pouvez aussi ajouter une
deuxième partition contenant un espace de swap.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;imperatif-pour-le-demarrage&quot;&gt;
&lt;h1&gt;Impératif pour le démarrage&lt;/h1&gt;
&lt;p&gt;Dans le cas d'une copie de disque virtuel existant, le disque source ayant déjà
booté, il suffit de vérifier la configuration réseau en DHCP pour que l'image
produise des serveurs correctement bootable.
Dans le cas d'image créée par installation d'un système de base, certains
points sont à modifier/vérifier :&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Tous les services ou modules en relation avec les éléments physiques de
serveurs sont à désactiver (par exemple, le service lié à l'horloge physique
d'un serveur - hwclock).&lt;/li&gt;
&lt;li&gt;Certains services au démarrage comme ureadahead, console-setup, ondemand,
plymouth &lt;strong&gt;doivent&lt;/strong&gt; être désactivés. Déplacez les fichiers d'appel par init de ces services. Dans une image Ubuntu, les fichiers se trouvent dans &lt;em&gt;/etc/init.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Ajoutez les packages &lt;em&gt;gandi-hosting-agent&lt;/em&gt; et &lt;em&gt;gandi-hosting-vm&lt;/em&gt; : l'agent
permet de finir l'installation de votre serveur. Les scripts contenus dans le
package &lt;em&gt;gandi-hosting-vm&lt;/em&gt; permettent de gérer automatiquement les ressources
dynamiques de votre serveur. Pour un système avec une version 2.6 de python, il faudra installer &lt;em&gt;gandi-hosting-agent-py2.6&lt;/em&gt; à la place.&lt;/li&gt;
&lt;li&gt;Supprimez les fichiers relatifs aux clefs ssh générées à l'installation du
package de sshd pour éviter d'avoir les mêmes clefs de machines sur tous les
serveurs ayant votre image comme source.&lt;/li&gt;
&lt;li&gt;Vérifiez que xinetd/inetd soit bien démarré au boot sinon, activez-le.
L'agent de Gandi est lancé par xinetd/inetd et permettra la fin de la
configuration de votre serveur. Le package &lt;em&gt;gandi-hosting-agent&lt;/em&gt; installe le
fichier de configuration dans /etc/gandi/agent.yml.&lt;/li&gt;
&lt;li&gt;Vérifiez les permissions de la racine de votre répertoire d'installation
(/var/tmp dans l'exemple) et les répertoires lib/, root/ et tmp/ dans ce
répertoire d'installation. En cas de doute, appliquer les mêmes permissions que
les répertoires dans le système de votre serveur courant.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;literal-block&quot;&gt;chmod 0755 /var/tmp/lib&lt;br /&gt;chmod 1777 /var/tmp/tmp&lt;br /&gt;chmod 0750 /var/tmp/root&lt;br /&gt;chmod 0755 /var/tmp/&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Créez les fichiers de base dans le répertoire /dev de votre installation pour
les premières étapes du démarrage.&lt;/p&gt;
&lt;p&gt;Par exemple,&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;literal-block&quot;&gt;[ -e &amp;quot;$chroot&amp;quot;/dev/xvc0 ] || mknod &amp;quot;$chroot&amp;quot;/dev/xvc0 c 204 191&lt;br /&gt;[ -e &amp;quot;$chroot&amp;quot;/dev/console ] || mknod &amp;quot;$chroot&amp;quot;/dev/console c 5 1&lt;br /&gt;[ -e &amp;quot;$chroot&amp;quot;/dev/null ] || mknod &amp;quot;$chroot&amp;quot;/dev/null c 1 3&lt;br /&gt;[ -e &amp;quot;$chroot&amp;quot;/dev/ptmx ] || mknod &amp;quot;$chroot&amp;quot;/dev/ptmx c 5 2&lt;br /&gt;[ -e &amp;quot;$chroot&amp;quot;/dev/zero ] || mknod &amp;quot;$chroot&amp;quot;/dev/zero c 1 5&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;dl class=&quot;first docutils&quot;&gt;
&lt;dt&gt;Ajouter les modules pour le kernel choisi dans le répertoire /lib/modules du&lt;/dt&gt;
&lt;dd&gt;&lt;p class=&quot;first last&quot;&gt;répertoire contenant l'installation. Les modules sont disponibles sur
&lt;a class=&quot;reference external&quot; href=&quot;http://mirrors.gandi.net/kernel/&quot;&gt;mirrors.gandi.net/kernel/&lt;/a&gt;. Voir
&lt;a class=&quot;reference external&quot; href=&quot;http://wiki.gandi.net/fr/hosting/troubleshooting/update-kernel-modules&quot;&gt;l'article&lt;/a&gt; sur le wiki.&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A la fin de la configuration, quittez le chroot si vous êtes à l'intérieur par
&lt;strong&gt;exit&lt;/strong&gt; puis démonter les éléments concernant votre image dans /proc/mounts.
Tuez les processus et démons qui ont pu être lancés pendant l'installation de
package dans le chroot/répertoire contenant l'installation.
Par exemple : &lt;strong&gt;grep /var/tmp /proc/mounts&lt;/strong&gt; puis démonter &lt;strong&gt;umount
/var/tmp/proc&lt;/strong&gt; et les autres. Finir par &lt;strong&gt;umout /var/tmp&lt;/strong&gt; qui devrait se
dérouler sans erreur.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;detacher-le-disque&quot;&gt;
&lt;h1&gt;Détacher le disque&lt;/h1&gt;
&lt;p&gt;Retournez maintenant dans votre interface de gestion de disque, sur votre
compte hébergement, puis détachez le disque sur lequel vous avez copié le
disque ou préparé l'installation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;rendre-le-disque-bootable-en-associant-un-noyau&quot;&gt;
&lt;h1&gt;Rendre le disque bootable en associant un noyau&lt;/h1&gt;
&lt;p&gt;Dans l'interface d'administration, vous avez maintenant la possibilité de
définir un noyau (kernel) pour un disque, sélectionnez alors le disque de
données et associez-lui un noyau adapté à l'image que vous venez de créer.
Prenons un disque de type &amp;quot;données&amp;quot; que l'on souhaite transformer en disque
système/image :&lt;/p&gt;
&lt;a href=&quot;http://lacuisinedegandi.net/public/image-os/s_disk1_fr.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/image-os/s_disk1_fr.png&quot; alt=&quot;s_disk1_fr.png&quot; style=&quot;margin: 0 auto; display: block;&quot; title=&quot;s_disk1_fr.png, nov 2010&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Utilisez alors le lien pour changer les informations du disque, vous trouverez
en bas de page une option pour changer le type de disque :&lt;/p&gt;
&lt;a href=&quot;http://lacuisinedegandi.net/public/image-os/s2disk_fr.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/image-os/s2disk_fr.png&quot; alt=&quot;s2disk_fr.png&quot; style=&quot;margin: 0 auto; display: block;&quot; title=&quot;s2disk_fr.png, nov 2010&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Vous avez alors accès aux options avancées comme sur un disque système :&lt;/p&gt;
&lt;a href=&quot;http://lacuisinedegandi.net/public/image-os/s3disk_fr.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/image-os/s3disk_fr.png&quot; alt=&quot;s3disk_fr.png&quot; style=&quot;margin: 0 auto; display: block;&quot; title=&quot;s3disk_fr.png, nov 2010&quot; /&gt;&lt;/a&gt;
&lt;p&gt;En associant un noyau, le disque devient utilisable comme image perso et sera
dans la liste d'images comme les images Gandi AI ou Expert lorsque vous créez
un serveur sur l'interface d'administration.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;creer-un-serveur-a-partir-de-cette-image&quot;&gt;
&lt;h1&gt;Créer un serveur à partir de cette image&lt;/h1&gt;
&lt;p&gt;Lors de la création d'un serveur par votre interface sur le site, vous
trouverez votre nouvelle image perso dans la liste des images disponibles.
La création du serveur utilisera donc cette image comme source pour le disque
système. Le serveur démarrera normalement sur un disque copie de votre image.
Vous aurez donc la possibilité de créer plusieurs serveurs &amp;quot;identiques&amp;quot; à
partir de cette image perso.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;depanner-le-serveur-pendant-le-demarrage&quot;&gt;
&lt;h1&gt;Dépanner le serveur pendant le démarrage&lt;/h1&gt;
&lt;p&gt;L'hébergement Gandi vous donne la possibilité d'accéder au démarrage de votre
serveur en passant par la console d'urgence qui permet par une simple connexion
ssh d'avoir la sortie de la console par défaut de votre serveur.&lt;/p&gt;
&lt;p&gt;Si vous configurez un getty sur la console par défaut (tty1, xvc0, hvc0 suivant
la version de votre kernel), vous obtiendrez un shell de secours en cas
d'erreur de boot ou un prompt en cas de boot correct.&lt;/p&gt;
&lt;p&gt;Cette console d'urgence vous permet de voir les messages de démarrage et
notamment les erreurs et ainsi de debugguer votre image.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;corriger-l-image&quot;&gt;
&lt;h1&gt;Corriger l'image&lt;/h1&gt;
&lt;p&gt;Dans un second temps, si vous vous apercevez d'erreurs ou d'oublis dans votre
image perso, il suffira d'attacher de nouveau votre disque/image sur un de vos
serveurs virtuels (éventuellement un serveur dont la création du disque système
a utilisé cette même image comme source). Une rapide correction sur l'image
puis vous pourrez détacher le disque/image.&lt;/p&gt;
&lt;p&gt;L'image sera alors de nouveau disponible pour créer des serveurs sans l'erreur.&lt;/p&gt;
&lt;/div&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Modification des OS standards par Gandi</title>
    <link>http://lacuisinedegandi.net/post/2010/10/28/Modification-des-OS-standards-par-Gandi</link>
    <guid isPermaLink="false">urn:md5:571fbd819ca1a64238a0590e2d520dd7</guid>
    <pubDate>Thu, 28 Oct 2010 15:27:00 +0200</pubDate>
    <dc:creator>aegiap</dc:creator>
        <category>Hébergement</category>
            
    <description>&lt;p&gt;Quelles sont les modifications appliquées par l'équipe de Gandi sur les installations standard d'OS pour être utilisé avec l'hébergement Gandi ?&lt;/p&gt;    &lt;h2&gt;Modifications du système local&lt;/h2&gt;


&lt;p&gt;L'infrastructure de l'hébergement Gandi utilise la virtualisation Xen en mode paravirtualisation (pour le moment). Nous devons ainsi compiler un noyau Linux avec des options spécifiques pour lui permettre de démarrer votre serveur virtuel. De plus, comme nous offrons la possibilité aux clients d'ajouter ou retirer des ressources dynamiquement, le système hotplug du noyau a été patché par notre équipe pour rendre cette fonctionnalité efficace (principalement des appels à udev). Tous les modules noyaux sont disponible pour chaque nouvelle version du noyau sur &lt;a href=&quot;http://mirrors.gandi.net/kernel/&quot;&gt;http://mirrors.gandi.net/kernel/&lt;/a&gt;. A partir de Linux 2.6.32, nous compilons le noyau Linux xenU avec les sources disponibles sur noyau.org et vous pourrez trouver le fichier de config de la compilation dans &lt;em&gt;&lt;code&gt;/proc/config.gz&lt;/code&gt;&lt;/em&gt; sur votre serveur virtuel. Nous intégrons aussi des patches externes comme drbd (avant son intégration dans les sources officielles du noyau Linux).&lt;/p&gt;


&lt;p&gt;Chaque image de système d'exploitation que nous mettons à disposition sur l'hébergement Gandi contient des modifications par notre équipe. Nous désactivons par exemple le service d'horloge matériel (hwclock) car Xen ne permet pas d'y accéder. Sur certaines distributions nous désactivons des fonctionnalités du démarrage comme &lt;em&gt;ureadahead&lt;/em&gt; ou &lt;em&gt;plymouth&lt;/em&gt; pour obtenir un démarrage fluide du serveur virtuel. La plupart de la configuration système est effectué pendant le démarrage du serveur, notamment pendant le premier boot.&lt;/p&gt;


&lt;p&gt;Il faut noter que sur l'architecture x86_32 et afin d'utiliser la capacité matériel (hwcap) de Xen, la libc peut utiliser la capacité nosegneg avec le package libc-xen correct.&lt;/p&gt;



&lt;h2&gt;Le package gandi-hosting-vm&lt;/h2&gt;


&lt;p&gt;L'idée de cet article a été initiée par la mise à disposition d'une nouvelle version de gandi-hosting-vm. Le package contient une collection de scripts pour configurer le système de votre serveur virtuel à chaque boot et sur des événements spécifiques des ressources du serveur.&lt;/p&gt;



&lt;h3&gt;Changement dynamique des ressources du serveur&lt;/h3&gt;


&lt;p&gt;Lorsque vous ajoutez ou retirez des ressources dynamiquement à votre serveur, le noyau Linux reçoit des informations de la part de Xen - le système gérant la virtualisation. Chacun de ces événements est passé au démon &lt;em&gt;udevd&lt;/em&gt; qui les compare à ses règles définies. Sa fonction principale est de créer les fichiers dans le répertoire &lt;em&gt;&lt;code&gt;/dev/&lt;/code&gt;&lt;/em&gt; pour permettre aux applications d'accéder aux nouvelles ressources.&lt;/p&gt;


&lt;p&gt;Sur l'hébergement Gandi et afin de gérer les ressources dynamiques, notre équipe a écrit des règles udev (disponible dans &lt;em&gt;&lt;code&gt;/etc/udev/rules.d/86-gandi.rules&lt;/code&gt;&lt;/em&gt;) pour démarrer un script quand un disque virtuel, une interface réseau virtuel ou même un processeur virtuel est attaché (ou retiré) du serveur virtuel.&lt;/p&gt;


&lt;p&gt;À un niveau plus détaillé, quand une interface virtuelle est attachée au serveur, le script &lt;em&gt;&lt;code&gt;/etc/gandi/manage_iface.sh&lt;/code&gt;&lt;/em&gt; est appelé par le démon udev et une requête DHCP est envoyée sur l'interface. Plusieurs scripts traitent ensuite les données récupérées par la réponse DHCP et configurent la route par défaut (&lt;em&gt;&lt;code&gt;/etc/gandi/dhcp-postconf&lt;/code&gt;&lt;/em&gt;) et stockent les informations de configuration réseau (&lt;em&gt;&lt;code&gt;/etc/dchp-hostname&lt;/code&gt;&lt;/em&gt;) dans un répertoire en tmpfs pour une configuration complète pendant le démarrage. Quand l'interface réseau virtuel est détachée, le script enlève simplement l'interface.&lt;/p&gt;


&lt;p&gt;Quand un disque virtuel est attaché, un script (&lt;em&gt;&lt;code&gt;/etc/gandi/manage_data_disk.py&lt;/code&gt;&lt;/em&gt;) est appelé de manière similaire. Il essaie de vérifier le système de fichier sur le disque ou les partitions (seulement en mode &lt;strong&gt;GandiAI&lt;/strong&gt;) puis monte le tout dans un point de montage spécifique utilisant le label du système de fichier &lt;em&gt;&lt;code&gt;/srv/&amp;lt;FS label&amp;gt;&lt;/code&gt;&lt;/em&gt;. Si aucun label n'est configuré, le nom du disque ou de la partition est alors utilisé (par exemple &lt;em&gt;&lt;code&gt;/dev/xvdc&lt;/code&gt;&lt;/em&gt;). Pour changer les options de montage par défaut, vous pouvez éditer la variable &lt;em&gt;&lt;code&gt;mount_options&lt;/code&gt;&lt;/em&gt; au début du script Python.&lt;/p&gt;


&lt;h3&gt;Pendant le démarrage du serveur&lt;/h3&gt;


&lt;p&gt;Le package &lt;em&gt;gandi-hosting-vm&lt;/em&gt; installe deux services appelé au démarrage :
&lt;em&gt;gandi-mount&lt;/em&gt; et &lt;em&gt;gandi-config&lt;/em&gt;. Le premier monte les systèmes de fichiers des disques virtuels déjà attachés dans le répertoire &lt;em&gt;&lt;code&gt;/srv/&lt;/code&gt;&lt;/em&gt; du système d'exploitation (voir la description de &lt;em&gt;&lt;code&gt;/etc/gandi/manage_data_disk.py&lt;/code&gt;&lt;/em&gt; ci-dessus). Vous pouvez lancer le service manuellement ensuite une fois le serveur démarré complètement et il va essayer de monter les systèmes de fichiers de tout les disques virtuels attachés au serveur (dans le cas où vous désinstallez les packages udev par exemple).&lt;/p&gt;


&lt;p&gt;Le deuxième service démarre plusieurs 'plugin' spécifique pour configurer le système. Une partie des étapes de configuration est optionnelle et un fichier de configuration (&lt;em&gt;&lt;code&gt;/etc/default/gandi&lt;/code&gt;&lt;/em&gt;) est disponible pour choisir d'activer ou non ces étapes. Chaque variable de configuration contient une courte description. Ces 'plugins' configurent par exemple : la console locale pour accéder par la console d'urgence de l'hébergement Gandi, le nom de la machine et les serveurs DNS pour les requêtes, le fuseau horaire à Europe/Paris, la capacité matériel (hwcap) nosegneg en fonction du kernel choisi, modifie le message du jour (motd) avec un texte par défaut, etc.&lt;/p&gt;


&lt;p&gt;Par exemple, quand le 'plugin' &lt;em&gt;&lt;code&gt;11-config_ssh&lt;/code&gt;&lt;/em&gt; est appelé, il créé les clefs SSH pour la machine virtuelle si elles ne sont pas déjà présentes. Puis, en fonction de votre configuration, il peut ajouter la clef SSH de management par Gandi dans le trousseau de clef du compte root (variable &lt;code&gt;CONFIG_SSHMGMT&lt;/code&gt;). Il va ensuite modifier la configuration du serveur ssh pour désactiver les mots de passe vides, activer la compression et désactiver les accès en root (variable &lt;code&gt;CONFIG_SSHD&lt;/code&gt;).&lt;/p&gt;


&lt;h2&gt;Le package gandi-hosting-agent&lt;/h2&gt;


&lt;p&gt;L'agent Gandi est utilisé pour configurer le serveur virtuel en fonction des informations du client. Dans le cas de serveur en mode &lt;strong&gt;expert&lt;/strong&gt;, la configuration du système local est limitée au mot de passe root et à la création de l'utilisateur &lt;em&gt;administrateur&lt;/em&gt; (choisi par le client) pour éviter les accès en &lt;em&gt;root&lt;/em&gt; par ssh. Dans le cas de serveur en mode &lt;strong&gt;GandiAI&lt;/strong&gt;, l'agent utilise des modules spécifiques pour configurer les applications choisies sur le système.&lt;/p&gt;


&lt;p&gt;Lorsque votre serveur en mode &lt;strong&gt;expert&lt;/strong&gt; est configuré après la création, vous pouvez désinstaller les packages de gandi-hosting-agent. En utilisant par exemple : &lt;em&gt;&lt;code&gt;dpkg -P $(dpkg -l | awk '/gandi-hosting-agent/ { print $2 }' | xargs)&lt;/code&gt;&lt;/em&gt; pour une distribution à base de package .deb ou &lt;em&gt;&lt;code&gt;rpm -e gandi-hosting-agent&lt;/code&gt;&lt;/em&gt; pour une distribution à base de package .rpm.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>API Hosting 1.0 en bêta</title>
    <link>http://lacuisinedegandi.net/post/2010/08/24/API-Hosting-10</link>
    <guid isPermaLink="false">urn:md5:cc77984e16a17d21641b3ddc25e0edf3</guid>
    <pubDate>Wed, 01 Sep 2010 15:23:00 +0200</pubDate>
    <dc:creator>zllak</dc:creator>
        <category>Hébergement</category>
            
    <description>&lt;p&gt;Comme vous le savez peut être déjà, nous sommes en train de finaliser la gestion de notre &lt;a href=&quot;http://www.gandi.net/hebergement/serveur&quot;&gt;plateforme d'hébergement Cloud&lt;/a&gt; via une API publique.
Afin de vous faciliter le travail, beaucoup de choses ont été remaniées afin de vous permettre une utilisation plus simple, et une vraie maitrise de vos ressources hébergement chez Gandi.&lt;/p&gt;


&lt;p&gt;En guise d'introduction, ce billet sera volontairement peu technique, et ne présentera que succinctement des parties qui seront développées en détails lors de la sortie officielle de l'API.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;API ?&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Pour la plupart des humains, le terme API n'évoque pas forcément grand chose. Je vous propose donc une petite définition rapide de ce qu'est une &lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt;.&lt;/p&gt;


&lt;p&gt;Une interface de programmation (Application Programming Interface ou API) est une interface fournie par un programme informatique. Elle permet l'interaction des programmes les uns avec les autres de manière analogue à une interface homme-machine qui rend possible l'interaction entre un homme et une machine.
Du point de vue technique une API est un ensemble de fonctions, procédures ou classes mises à disposition par une bibliothèque logicielle, un système d'exploitation ou un service. La connaissance des API est indispensable à l'interopérabilité entre les composants logiciels.&lt;/p&gt;


&lt;p&gt;Voici &lt;a href=&quot;http://fr.wikipedia.org/wiki/Interface_de_programmation&quot;&gt;la définition complète&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Concrètement, l'API Hébergement permettra à la personne qui s'en sert de pouvoir manipuler ses diverses ressources hébergement de Gandi. Il pourra par exemple, créer de nouvelles machines virtuelles, créer de nouveaux disques, relâcher des adresses IP, etc...&lt;/p&gt;


&lt;p&gt;L'API a été pensée pour être la plus simple possible à utiliser.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Utilité de l'&lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;L'API va vous permettre de manipuler tous vos &lt;q&gt;objets&lt;/q&gt; hébergement, à savoir vos machines virtuelles, vos disques, vos interfaces réseaux, vos IPs, etc..., le tout de façon programmatique. Vous pourrez en créer, en supprimer, les modifier, les lister.&lt;br /&gt;
L'API fournit également la possibilité de gérer les attachements entre vos ressources.&lt;/p&gt;


&lt;p&gt;Mais l'un des buts essentiel est d'être utilisé par d'autres programmes afin de construire quelque chose en lien direct avec nous.&lt;/p&gt;


&lt;p&gt;Prenons 2 petits exemples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un valable pour tous, grâce à la commande vm.update par exemple, vous pourrez, si vous détectez dans les logs que votre serveur manque de RAM, lui en ajouter à la volée automatiquement.&lt;/li&gt;
&lt;li&gt;un exemple pour une société qui édite un logiciel, grâce à la commande vm.create, vous pourrez démarrer automatiquement et rapidement un serveur à partir d'un disque préparé avec votre applicatif et le proposer à vos clients&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Le premier jeu de méthode vous permettra de manipuler les objets suivants :&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;datacenter&lt;/strong&gt; list info&lt;br /&gt;
&lt;strong&gt;image&lt;/strong&gt; list info&lt;br /&gt;
&lt;strong&gt;vm&lt;/strong&gt; list info count create update delete start stop reboot disk_attach disk_detach iface_attach iface_detach&lt;br /&gt;
&lt;strong&gt;disk&lt;/strong&gt; list info count create create_from update delete&lt;br /&gt;
&lt;strong&gt;iface&lt;/strong&gt;  list info count create delete&lt;br /&gt;
&lt;br /&gt;
ainsi qu'une gestion des opérations&lt;br /&gt;
&lt;strong&gt;operation&lt;/strong&gt; list info count delete&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Nouveautés à venir&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Profitant de la sortie de l'API, plusieurs fonctionnalités vont voir le jour. Ce sont des choses qui nous ont été demandées pour la plupart, et qui sont pour l'instant gérées par nos équipes du support.
Certaines fonctionnalités ont été revues, et déplacées là où cela nous permettrait d'apporter quelque chose de nouveau.&lt;/p&gt;


&lt;p&gt;Le choix du kernel et de la ligne de commande se fait maintenant sur chaque disque. Les disques auront un rôle plus important que maintenant. Il sera également possible de détacher un disque anciennement &amp;quot;système&amp;quot;, pour l'attacher sur une autre machine virtuelle pour, par exemple, faire du recovery en cas de problème lors d'une mise à jour ou d'une installation ratée. On pourra également choisir sur quel disque une machine virtuelle démarrera.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Comment participer&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;La phase e bêta privée est en cours. Il vous suffit d'envoyer un e-mail à  beta-hosting@gandi.net avec votre identifiant et nous vous recontacterons pour vous donner les accès.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Tester notre solution ?&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Tous les clients inscrits à la lettre d'information disposent dans &lt;a href=&quot;https://www.gandi.net/admin/billing/promos&quot; hreflang=&quot;fr&quot;&gt;leur compte&lt;/a&gt; d'un coupon permettant de tester gratuitement notre solution pendant un mois.
Pour les autres, un &lt;a href=&quot;https://www.gandi.net/hebergement/essai/&quot; hreflang=&quot;fr&quot;&gt;formulaire de demande&lt;/a&gt; de parts de test est également disponible.&lt;/p&gt;


&lt;p&gt;Restez donc à l'affut, plus d'informations vont venir dans les jours qui viennent !&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Mandriva 2010, image en accès alpha [maj]</title>
    <link>http://lacuisinedegandi.net/post/2010/05/21/Mandriiva-2010-image-en-acces-alpha</link>
    <guid isPermaLink="false">urn:md5:3fc6ef99fb7000d42e11de9fd8954c76</guid>
    <pubDate>Mon, 16 Aug 2010 10:39:00 +0200</pubDate>
    <dc:creator>aegiap</dc:creator>
        <category>Hébergement</category>
        <category>alpha</category><category>hebergement</category><category>mandriva</category>    
    <description>    &lt;p&gt;L'hébergement sur des serveurs Gandi permet à ses clients de choisir parmi une sélection d'image d'OS disponible à la création de la machine. Après la préparation en interne de l'image et après une batterie de test, l'image est mise à disposition d'un groupe de client 'alpha' pour l'hébergement Gandi. Ces clients peuvent ainsi créer des serveurs utilisant ces images en 'release candidate'. De notre coté, cela nous permet d'élargir le champs des tests effectués sur les images et de dénicher les bugs et problèmes en touchant un plus petit groupe de client.&lt;/p&gt;


&lt;p&gt;Aujourd'hui - 21 Mai - sort donc l'image d'OS basée sur une Mandriva 2010.0. Cette nouvelle version de la distribution Mandriva démarre avec un kernel 2.6.27 par défaut. Cette image est pour le moment disponible pour le groupe de client hosting en 'alpha'. Cette image de système sera bientôt disponible pour tous. N'hésitez pas à nous contacter si vous souhaitez participer à nos phases de test alpha.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;16 aout 2010 : L'image est maintenant disponible pour tous&lt;/strong&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Kernel et cmdline</title>
    <link>http://lacuisinedegandi.net/post/2010/05/17/Quelques-options-avancees</link>
    <guid isPermaLink="false">urn:md5:137dc87bba8b90df1bef6535509b7f3b</guid>
    <pubDate>Tue, 18 May 2010 11:28:00 +0200</pubDate>
    <dc:creator>Kalou</dc:creator>
        <category>Hébergement</category>
            
    <description>    &lt;p&gt;Nous vous proposons (enfin!) de choisir la version de votre kernel (parmi une liste qui évoluera), et les options de démarrage associées (cmdline). Les 2.6.18 et 2.6.27 sont les versions &amp;quot;de base&amp;quot; fournies par Xen (backport des patches xen pour la 2.6.27). La 2.6.32 actuellement disponible utilise paravirt_ops et l'implémentation &amp;quot;linux&amp;quot; des patches de Xen.&lt;/p&gt;


&lt;p&gt;Nous vous annoncerons les nouveaux kernels disponibles ici même.&lt;/p&gt;


&lt;p&gt;Ça se trouve dans &amp;quot;Mode avancé&amp;quot;, dans l'interface d'administration du serveur :
&lt;a href=&quot;http://lacuisinedegandi.net/public/Opt_av.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/./.Opt_av_m.jpg&quot; alt=&quot;Options avancées&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Options avancées, mai 2010&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Et vous donne accès à ceci :
&lt;a href=&quot;http://lacuisinedegandi.net/public/opt_adv_in.png&quot;&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/./.opt_adv_in_m.jpg&quot; alt=&quot;Options avancées détail&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Options avancées détail, mai 2010&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Coté cmdline, vous pouvez maintenant désactiver selinux au boot, booter en single user, changer le disque et la partition de boot (pratique pour travailler avec des &amp;quot;images&amp;quot;), choisir la console la plus appropriée. Bref, de quoi gérer plus agréablement vos mises à jour ou réparer votre serveur de façon plus autonome.&lt;/p&gt;


&lt;p&gt;Si une option vous manque, n'hésitez pas à nous la suggérer.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Cherokee arrive chez Gandi.</title>
    <link>http://lacuisinedegandi.net/post/2010/04/29/Cherokee-arrive-chez-Gandi</link>
    <guid isPermaLink="false">urn:md5:cd86e1ca3d6a36d99605a63ac86afa0e</guid>
    <pubDate>Thu, 29 Apr 2010 00:08:00 +0200</pubDate>
    <dc:creator>hobbestigrou</dc:creator>
        <category>Hébergement</category>
            
    <description>    &lt;p&gt;Un ami m'expliquait qu'il venait de terminer l'installation d'un serveur web. Ayant décidé de changer et de ne pas utiliser le géant &lt;strong&gt;Apache&lt;/strong&gt; que tout le monde connait, mon ami semblait avoir trouvé une bonne alternative. Portant le doux nom de &lt;strong&gt;Cherokee&lt;/strong&gt;, il paraissait plus léger et plus performant qu'Apache.  Voir les benchmarks provenant du &lt;a href=&quot;http://www.cherokee-project.com/benchmarks.html&quot; hreflang=&quot;en&quot;&gt;site du projet&lt;/a&gt; à la fin de l'article. &lt;sup&gt;[&lt;a href=&quot;http://lacuisinedegandi.net/post/2010/04/29/Cherokee-arrive-chez-Gandi#pnote-1564-1&quot; id=&quot;rev-pnote-1564-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;


&lt;p&gt;Personnellement, je ne le connaissais pas du tout, j'avais certainement déjà entendu son nom une ou deux fois, mais je n'y avais pas prêté attention. Pour voir ce qu'il donnait, j'ai décidé de l'installer en local. Je fus agréablement surpris ! Sur une distribution Debian like, l'installation se fait très simplement avec un &lt;code&gt;apt-get install cherokee&lt;/code&gt; (ou aptitude).&lt;/p&gt;


&lt;p&gt;L'interface web qu'il fournit est claire et plutôt agréable. L'idée est intéressante. Il sera possible d'activer l'interpréteur PHP avec un simple clic, pareil pour l'activation de différents virtualhost ou autres options. Il y a un assistant qui permet d'installer des technologies comme Django, Rails, ou Wordpress, etc.&lt;/p&gt;


&lt;p&gt;Je me suis dit que présenter ce projet à une réunion devs chez Gandi pouvait être intéressant, notamment pour les personnes utilisant GandiAI. Le projet a bien été perçu. Après discussion et un coup d'œil rapide sur le code source, rien ne nous a choqués. Cela ne signifie pas qu'il n'y a pas de bugs, toutefois un code propre c'est plutôt bon signe ! Le cœur est écrit en C et l'interface d'administration en Python.&lt;/p&gt;


&lt;p&gt;C'est donc de cette manière que Cherokee a fait son apparition chez Gandi et qu'une image a été réalisée, vous permettant ainsi de le tester rapidement.&lt;/p&gt;


&lt;p&gt;Nous avons ajouté une distribution en mode expert avec Cherokee de préinstallé... il vous suffit de choisir cette distribution lors de la création de votre serveur. Je vous rappelle aussi que si vous n'avez pas encore essayé notre service, vous pouvez faire une demande sur &lt;a href=&quot;http://www.gandi.net/hebergement/essai/&quot; hreflang=&quot;fr&quot;&gt;notre formulaire de demande de test.&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Pour avoir plus d'informations sur Cherokee, vous pourrez vous rendre sur &lt;a href=&quot;http://www.cherokee-project.com/&quot; hreflang=&quot;en&quot;&gt;le site du projet&lt;/a&gt; . Un article lui a également été consacré dans Gnu/linux magazine France par Carl Chenet dans le &lt;a href=&quot;http://ed-diamond.com/produit.php?ref=lmag125&amp;amp;id_rubrique=1&amp;amp;caracteristique=1-2-&amp;amp;caracdisp=2-3-&quot; hreflang=&quot;fr&quot;&gt;numéro 125&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://lacuisinedegandi.net/post/2010/04/29/Cherokee-arrive-chez-Gandi#rev-pnote-1564-1&quot; id=&quot;pnote-1564-1&quot;&gt;1&lt;/a&gt;] &lt;img src=&quot;http://lacuisinedegandi.net/public/benchmark.jpg&quot; alt=&quot;benchmark.jpg&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Nb de clients vs Nb de requêtes par seconde&quot; /&gt; &lt;img src=&quot;http://lacuisinedegandi.net/public/web-servers-benchmark-20080819.jpg&quot; alt=&quot;benchmark-0.8&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;benchmark-0.8, avr 2010&quot; /&gt;&lt;/p&gt;&lt;/div&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Le courriel s'est fait la malle</title>
    <link>http://lacuisinedegandi.net/post/2010/03/26/Le-courriel-s-est-fait-la-malle</link>
    <guid isPermaLink="false">urn:md5:a8165d7eac32157fb27ea94e5abec907</guid>
    <pubDate>Fri, 26 Mar 2010 21:59:00 +0100</pubDate>
    <dc:creator>Nicolas (Gandi)</dc:creator>
        <category>Mail</category>
            
    <description>&lt;p&gt;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 &lt;a href=&quot;http://gandikitchen.net/post/2010/03/26/E-Mail-Goes-Postal-Gandi-Mail-Version-2&quot; hreflang=&quot;en&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;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 ;)&lt;/p&gt;
&lt;p&gt;
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 ! ;)&lt;/p&gt;    &lt;h2&gt;Au commencement, il y avait le Mot…&lt;/h2&gt;
&lt;p&gt;… 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 &amp;quot;local&amp;quot; à 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.&lt;br /&gt;&lt;br /&gt;Le mail sortant est plus simple; basiquement, un relais SMTP utilisant une authentification SASL. &lt;br /&gt;Le schéma suivant vous montre un très haut niveau de vue générale de la version originale de la plateforme Mail.&lt;/p&gt;
&lt;p&gt;&lt;img title=&quot;Gandi Mail Version 1, mar 2010&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://lacuisinedegandi.net/public/GandiMailV2/.gm-v1_m.jpg&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Et ? Qu'est-ce qui a changé ?&lt;/h2&gt;
&lt;p&gt;Okay – avant de savoir&lt;strong&gt; ce qui a changé&lt;/strong&gt;, regardons d'abord pourquoi nous avions à le faire. &lt;/p&gt;
&lt;p&gt;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).&lt;/p&gt;
&lt;p&gt;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 &amp;quot;messages par minute&amp;quot; (avec un indice max. à 24 000) alors que l'axe horizontal représente les mois (avril à mars).&lt;/p&gt;
&lt;p&gt;&lt;img title=&quot;Avg Msgs per Minute - year, mar 2010&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://lacuisinedegandi.net/public/GandiMailV2/.volume-msg-per-min-year_m.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Donc, les défis étaient simples :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Comment supprimer le besoin de NFS et continuer à permettre le dimensionnement horizontal.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Comment maximiser les performances de la plateforme pour permettre le dimensionnement vertical aussi bien qu'horizontal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2&gt;Où est ma boite mail ?&lt;/h2&gt;
&lt;p&gt;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 &amp;quot;local&amp;quot; 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 &amp;quot;local&amp;quot; où Dovecot pourrait chercher.&lt;/p&gt;
&lt;p&gt;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 &amp;quot;client&amp;quot; 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.&lt;br /&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;img title=&quot;Gandi Mail Version 2 - Access, mar 2010&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://lacuisinedegandi.net/public/GandiMailV2/.gm-v2-access_m.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Il y a plusieurs bénéfices avec cette architecture :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;La suppression du NFS supprime également l'effet de bord des locks NFS&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;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…).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Et que se passe t'il si un Filer lache ?&lt;/h2&gt;
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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &amp;quot;Temporarily Unavailable&amp;quot;, et la connexion TCP sera fermée.&lt;br /&gt;&lt;br /&gt;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 &amp;quot;backup&amp;quot; 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&lt;br /&gt;&lt;br /&gt;&lt;img title=&quot;Mail Filer, mar 2010&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://lacuisinedegandi.net/public/GandiMailV2/.filer_m.jpg&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h2&gt;Mais...on a rien vu en fait ?&lt;/h2&gt;
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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;img title=&quot;Access Server CPU Load - six months, mar 2010&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://lacuisinedegandi.net/public/GandiMailV2/server-cpu-6month.png&quot; /&gt;&lt;br /&gt;&lt;img title=&quot;Access Server CPU Load - One Month, mar 2010&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://lacuisinedegandi.net/public/GandiMailV2/.server-cpu-month_m.jpg&quot; /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>10 ans de Gandi: retour d'expérience</title>
    <link>http://lacuisinedegandi.net/post/2010/03/16/10-ans-de-Gandi%3A-retour-d-experience4</link>
    <guid isPermaLink="false">urn:md5:7b918885ed257a60bb9a9332aad38bff</guid>
    <pubDate>Tue, 16 Mar 2010 16:51:00 +0100</pubDate>
    <dc:creator>Kalou</dc:creator>
        <category>Hébergement</category>
            
    <description>    &lt;p&gt;À l'occasion des dix ans de Gandi, l'idée un peu folle de donner, sur dix jours, 55000 domaines, a posé une question pratique. Comment, en ouvrant les vannes d'une telle opération, maintenir une qualité irréprochable sur le site ? L'ambiance festive aurait aussi bien pu se transformer en cauchemar pour nos clients si ils avaient été privés d'accès à leurs interfaces de gestion.&lt;/p&gt;
&lt;p&gt;La décision fût donc prise d'héberger l'événement sur un site dédié. Occasion rêvée pour se mettre un peu à la place de nos clients, et utiliser notre infrastructure d'hébergement. Règles du jeu : on utilise exclusivement les outils fournis au client, on prépare une archi qui monte en charge facilement, ça ne doit pas coûter un bras, ça peut illustrer notre flexibilité légendaire.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;kiss&quot;&gt;Keep it simple, stupid&lt;/h3&gt;
&lt;p&gt;De la décision à l'implémentation, on avait une semaine. L'idée charmante de monter un site &amp;quot;cloudish&amp;quot; à base de technos modernes, et peu maîtrisées, est donc oubliée d'office. Pour être honnête, vu les délais, le développeur désigné d'office se voit choisir la techno : &amp;quot;là où t'es à l'aise, tu as une semaine&amp;quot;. Ça sera PHP/mysql, ce qui n'est pas du goût de tout le monde ! Mais permettra de sortir le site testé et dans les temps.&lt;/p&gt;
&lt;p&gt;Pour tenir une charge correcte, plusieurs serveurs seront nécessaires. 
Premier rappel de nos imperfections, Gandi ne fournit pas de load balancing ! Qu'importe, on ira donc sur un round robin DNS, à petit TTL pour pouvoir sortir facilement un frontal cassé de la production.&lt;/p&gt;
&lt;p&gt;Notre distribution pour l'occasion, sera une ubuntu 9.10 - parce qu'elle est assez à jour, et qu'elle utilise un kernel 2.6.27.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;servers&quot;&gt;Multiplier les petits serveurs&lt;/h3&gt;
&lt;p&gt;La meilleur façon de monter en charge sur notre infrastructure est d'isoler fonctionnellement l'architecture en nombreux petits serveurs. Là où nous assurons un minimum de &amp;quot;scalabilité&amp;quot; verticale (vous pouvez augmenter dynamiquement la RAM, le CPU alloués à un serveur), c'est à l'architecture de prévoir la scalabilité &amp;quot;horizontale&amp;quot;.&lt;/p&gt;
&lt;p&gt;Ainsi, on peut facilement monter les ressources là où les bottlenecks se font sentir, et ajouter/ou déplacer des parts d'un serveur vers l'autre lorsque la puissance allouée le demande. Les avantages des &amp;quot;nombreux petits serveurs&amp;quot; sont multiples :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;chaque serveur bénéficie au minimum d'un core CPU en burst (oui, un core entier, même sur une part : c'est nouveau)&lt;/li&gt;
&lt;li&gt;la redondance est assurée, et vos parts s'étalent un peu aléatoirement sur des centaine de serveurs physiques&lt;/li&gt;
&lt;li&gt;particulièrement en environnement virtualisé, la performance mémoire est meilleure sous 1G de RAM&lt;/li&gt;
&lt;li&gt;si vous avez 4 serveurs d'une part, au lieu d'un gros de 4 parts, ils montent à 8x4 parts dynamiquement, ou 24x4 parts en un reboot, tout ça sans toucher à l'archi - là ou le gros s'arrête à 8 sans reboot, ou 24&lt;/li&gt;
&lt;li&gt;les ressources sont faciles à déplacer vers les serveurs qui en ont besoin.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nous partons sur l'infrastructure simpliste :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;24 (!) serveurs d'une part, pour gérer le web et PHP : 10 en anglais, 10 en français, et 2 + 2 pour l'IPv6&lt;/li&gt;
&lt;li&gt;2 serveurs de 4 parts, des memcached répliqués pour soulager la DB et gérer les sessions&lt;/li&gt;
&lt;li&gt;1 serveur mysql de 4 parts, qui contiendra les coupons pré-générés (ils tiennent en RAM, la base doit théoriquement s'ennuyer)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Après quelques belles surcharges et un bout de code revu, la base de donnée sera finalement épargnée au maximum par memcached (voir chapitre « &lt;a href=&quot;http://lacuisinedegandi.net/post/2010/03/16/10-ans-de-Gandi%3A-retour-d-experience4#code&quot;&gt;un code léger…&lt;/a&gt; »)&lt;/p&gt;
&lt;p&gt;Soit 36 parts, pour une durée de dix jours : environ 140 euros.&lt;/p&gt;
&lt;p&gt;C'est un admin qui s'usera les doigts sur notre site pour créer, et configurer les 24 serveurs en parallèle. Visiblement, la sortie de l'API hosting ou une fonction dans l'interface web seraient les bienvenus. (Merci à &lt;a href=&quot;http://clusterssh.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;cssh&lt;/a&gt; pour l'occasion).&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;secure&quot;&gt;Sécuriser (un peu) les machines&lt;/h3&gt;
&lt;p&gt;Une distribution par défaut mérite toujours quelques retouches. Exporter mysql sur le réseau « public » du hosting gandi nous ennuyait un peu. À grands coups de netstat, fermer les services inutiles qui écoutent sur un port public. Avec l'aide de tcpwrappers (hosts.allow, hosts.deny), on ferme toutes les interfaces « privées » (sshd, mysql réservé aux machines frontales du web).&lt;/p&gt;
&lt;p&gt;Restera à bien faire attention au code php et à nos queries mysql : le meilleur moyen d'éviter les injections est encore de binder tous les params après un &lt;code&gt;prepare()&lt;/code&gt;. En plus, ça décharge la DB lorsqu'on effectue plusieurs execute.&lt;/p&gt;
&lt;p&gt;Un détail important : notre site autorisant l'envoi de mail à un destinataire « arbitraire », il était critique de limiter au maximum son exploitation potentielle par un spammer malin : restrictions du nombre d'envoi par coupon, au minimum, et monitoring.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;dev&quot;&gt;Prévoir l'environnement de dev et le déploiement&lt;/h3&gt;
&lt;p&gt;Partager les données entre les sites, c'est ajouter un &amp;quot;single point of failure&amp;quot; et un point de contention à l'archi. Nous optons donc pour un déploiement &amp;quot;local&amp;quot; à chaque serveur du contenu du site. Un site de développement et de &amp;quot;staging&amp;quot; sur une VM sert à tester et développer les mises à jour. Un script et quelques rsync permettent de déployer l'ensemble sur tous les frontaux de l'architecture. On a dit simple !&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;stats&quot;&gt;Surveiller ses ressources&lt;/h3&gt;
&lt;p&gt;Quelques minutes avant l'opération, pour prévenir plutôt que guérir, la totalité des machines virtuelles sont augmentées d'une à deux parts. En utilisant l'interface des stats, dès le premier jour, on peut constater l'ennui total qui habitait les machines virtuelles:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://lacuisinedegandi.net/public/./.console.gandi.net.cpu_m.jpg&quot; alt=&quot;Cpu sur un front FR&quot; title=&quot;Cpu sur un front FR, mar 2010&quot; /&gt; &lt;img src=&quot;http://lacuisinedegandi.net/public/./.console.gandi.net.vif_m.jpg&quot; alt=&quot;Interface réseau sur un front FR&quot; title=&quot;Interface réseau sur un front FR, mar 2010&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Il aurait été malin, à ce moment précis, de revenir à une part par machine. Ou d'exploiter gandi &amp;quot;autoflex&amp;quot;, ou encore, vu le type de charge observée, de préparer des flexs programmés pour les heures de lâcher des coupons ! Malheureusement, beaucoup de monde sur beaucoup de ponts, on a raté l'occasion de vous faire cette belle démonstration (écono-techno-(éco ?)logique).&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;code&quot;&gt;Un code léger vaut mieux que mille CPU costauds&lt;/h3&gt;
&lt;p&gt;Même si nous avions à notre disposition plusieurs milliers de CPU et beaucoup de teras de RAM, mardi fut suffisamment chaotique pour qu'on en reparle ici : après un lundi très bien tenu en charge, le plan d'exécution de notre unique SELECT COUNT changea brutalement et devint terriblement plus lent (300ms). Avec foi, nous avions pensé que ce query « unique », sur une table présente complètement en mémoire, ne poserait pas de problème : il était donc exécuté sur toutes les pages du site. La concurrence d'accès avec les UPDATEs des coupons finit par avoir raison de la base qui, malgré des stats systèmes proches de l'idle, entra discrètement en contention de lock.&lt;/p&gt;
&lt;p&gt;La réaction habituelle est d'ajouter des parts pour monter en charge.
C'est une solution temporaire acceptable, mais ça ne suffit pas !&lt;/p&gt;
&lt;p&gt;Un analyse système, une remise en question du code, et une utilisation salvatrice de memcached permit de retrouver des performances acceptables. Une modification des queries utilisés aurait peut-être pu faire l'affaire également.&lt;/p&gt;
&lt;p&gt;Une moralité à cet épisode: le code, les indexes, l'architecture, (…) sont les garants de votre montée en charge, et si ils sont « cpu friendly » vous épargneront, sinon une catastrophe, au moins un achat de parts inutiles.&lt;/p&gt;
&lt;p&gt;En plus, comme on dit ici en plaisantant, c'est écolo.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;numbers&quot;&gt;Quelques chiffres&lt;/h3&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;36 parts, mais on aurait pu tenir sur moins (snif)&lt;/li&gt;
&lt;li&gt;5% de CPU en peak&lt;/li&gt;
&lt;li&gt;4000 requêtes par frontal dans la première minute de chaque heure de pointe (environ 1400 req/seconde au total)&lt;/li&gt;
&lt;li&gt;un minimum de 11 secondes pour donner 1000 coupons&lt;/li&gt;
&lt;li&gt;pour le même nombre de coupons, un maximum de 40 minutes, pendant l'incident.&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Que faire si son serveur ne répond plus ?</title>
    <link>http://lacuisinedegandi.net/post/2010/01/06/Que-faire-si-son-serveur-ne-repond-plus</link>
    <guid isPermaLink="false">urn:md5:109e616e7e7acd98efcb0cf21f2b9c16</guid>
    <pubDate>Thu, 14 May 2009 12:00:00 +0200</pubDate>
    <dc:creator>Nicolas (Gandi)</dc:creator>
        <category>Hébergement</category>
        <category>Hébergement</category>    
    <description>Comme vous le savez probablement déjà, notre plateforme vous met à l'abri d'une panne matérielle sur votre serveur.&lt;br /&gt;
&lt;br /&gt;
En effet, en cas de soucis sur la machine ou si nous suspectons un
problème à venir (température anormale, mémoire corrompue...), votre
&amp;quot;serveur&amp;quot; sera migré automatiquement sur une autre machine. Par contre,
si vous avez un problème interne à celui-ci et qu'il ne
répond plus, c'est alors souvent à vous d'intervenir.    Dans tous les cas, vous devez préalablement vérifier que votre serveur est marqué comme 'Ok' sur votre interface Gandi, il peut être soit stoppé, soit en pause pour défaut de paiement par exemple.&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;&lt;ins&gt;On peut distinguer trois cas:&lt;/ins&gt;&lt;br /&gt;&lt;br /&gt;
1. Vous arrivez encore à vous connecter en ssh sur votre serveur&lt;/strong&gt;. Les commandes suivantes vous permettront alors d'analyser la situation :&lt;br /&gt;&lt;br /&gt;
- &amp;quot;&lt;em&gt;&lt;strong&gt;uptime&lt;/strong&gt;&lt;/em&gt;&amp;quot; vous donnera la charge instantanée de la machine,&lt;br /&gt;
- &amp;quot;&lt;em&gt;&lt;strong&gt;free&lt;/strong&gt;&lt;/em&gt;&amp;quot;, dont la colonne &amp;quot;used&amp;quot; vous indiquera la quantité de mémoire utilisée par vos applications&lt;br /&gt;
- &amp;quot;&lt;em&gt;&lt;strong&gt;top&lt;/strong&gt;&lt;/em&gt;&amp;quot; (nous vous conseillons d'installer &amp;quot;htop&amp;quot;) vous indiquera en temps presque réel le classement des applications (ou processus) qui consomment des ressources (mémoire, processeur),&lt;br /&gt;
- &amp;quot;&lt;em&gt;&lt;strong&gt;dmesg&lt;/strong&gt;&lt;/em&gt;&amp;quot; vous montre les messages issus du kernel linux de votre serveur,&lt;br /&gt;
- la lecture des fichiers de logs comme&lt;em&gt; /var/log/messages&lt;/em&gt; ou&lt;em&gt; /var/log/daemons&lt;/em&gt; avec la commande '&lt;em&gt;tail&lt;/em&gt;' par exemple (&lt;em&gt;tail /var/log/daemons&lt;/em&gt;) vous donnera également de précieuses informations.&lt;br /&gt;
- &amp;quot;&lt;em&gt;&lt;strong&gt;df –h&lt;/strong&gt;&lt;/em&gt;&amp;quot; vous indique le taux d'occupation de vos disques.&lt;br /&gt;
&lt;br /&gt;
Les&lt;strong&gt; pannes les plus courantes&lt;/strong&gt; sont les suivantes :&lt;br /&gt;&lt;br /&gt;  
&lt;strong&gt;-&lt;/strong&gt; plus d'espace disque sur votre disque système: la situation est souvent causée par une mauvaise gestion des logs sur le serveur ou par une base de données, par exemple, qui se remplirait trop rapidement. La solution consiste souvent à faire le ménage ou à agrandir le disque (&lt;a href=&quot;http://wiki.gandi.net/fr/hosting/manage-disk/resize-disk&quot; hreflang=&quot;fr&quot;&gt;voir le tutoriel&lt;/a&gt;)&lt;br /&gt;  
&lt;strong&gt;-&lt;/strong&gt; plus assez de mémoire vive sur le serveur ou trop de mémoire utilisée : la solution simple consiste à prendre plus de RAM en ajoutant des parts. Si vous êtes en mode expert, vous pouvez également essayer de modifier le comportement de Linux avec la mémoire disponible en utilisant la commande '&lt;em&gt;sysctl -w vm.overcommit_memory = 2&lt;/em&gt;'. &lt;br /&gt;&lt;strong&gt;Attention &lt;/strong&gt;: pour que la modification soit maintenue lors d'un redémarrage, vous devrez aussi ajouter la ligne &amp;quot;&lt;em&gt;vm.overcommit_memory = 2&lt;/em&gt;&amp;quot; aux fichiers &amp;quot;&lt;em&gt;/etc/sysctl.conf&lt;/em&gt;&amp;quot; et &amp;quot;&lt;em&gt;/etc/gandi/sysctl.conf&lt;/em&gt;&amp;quot;.&lt;br /&gt;  
&lt;strong&gt;-&lt;/strong&gt; trop de processus tournent en parallèle sur votre machine : il vous faudra alors diminuer les valeurs dans les fichiers de configuration de vos applications (le nombre de connexions simultanées sur Apache, par exemple) ou augmenter la puissance de votre serveur en lui ajoutant des parts.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2. Vous n'arrivez plus à vous connecter à votre serveur en &lt;/strong&gt;&lt;em&gt;&lt;strong&gt;ssh&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt;, qu'il ne répond plus au ping ou qu'il répond lentement&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;La &lt;strong&gt;console virtuelle&lt;/strong&gt;, activable à partir de votre compte (&lt;a hreflang=&quot;fr&quot; href=&quot;http://wiki.gandi.net/fr/hosting/using-linux/how_to_use_console&quot;&gt;tutoriel disponible&lt;/a&gt;), vous donne un accès direct à votre machine à la manière d'un écran et un clavier (toujours virtuel) branché en direct sur le serveur.&lt;br /&gt;
&lt;br /&gt;
Dans ce cas-là, il existe une méthode pour stopper tous les processus qui posent problème et avoir de nouveau accès au serveur.&lt;br /&gt;
&lt;br /&gt;
Les raccourcis '&lt;em&gt;sysreq&lt;/em&gt;' sont disponibles par la console sur votre serveur. Les commandes sont à donner en appuyant sur Ctrl et &amp;quot;o&amp;quot; (comme Oscar) pour entrer en &lt;strong&gt;mode sysreq&lt;/strong&gt;,  puis indiquez la commande. Vous pouvez ainsi stopper tous les processus par : &lt;strong&gt;Ctrl+o +i&lt;/strong&gt; (pour kill). &lt;br /&gt;&lt;strong&gt;Ctrl+o +h&lt;/strong&gt; vous permet d'avoir une aide succincte sur toutes les commandes sysreq disponibles.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;3. Une troisième situation existe : votre serveur peut être &amp;quot;injoignable&amp;quot; mais fonctionner tout de même sans aucun problème technique&lt;/strong&gt;.  &lt;br /&gt;&lt;br /&gt;Cela peut arriver dans le cas où votre serveur aurait été victime d'une &lt;strong&gt;attaque DDoS&lt;/strong&gt; par exemple. Votre serveur sera alors &lt;strong&gt;isolé du réseau&lt;/strong&gt; afin de protéger notre infrastructure et la qualité de service pour les autres clients. &lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier si votre serveur est dans cet état en effectuant une commande '&lt;em&gt;&lt;strong&gt;traceroute&lt;/strong&gt;&lt;/em&gt;' vers l'IP de votre serveur. Si ce dernier s'arrête à l'entrée de Gandi, sur un de nos routeurs par exemple ou même avant, il est bien probable que votre serveur ait été isolé du réseau. Vous pourrez alors vous connecter au serveur via la console, mais il faudra contacter le support pour régler la situation (il vous contactera souvent avant).
Ce cas de figure ne concerne que très peu de serveur.&lt;br /&gt;
&lt;br /&gt;&lt;strong&gt;
Maintenant si vous êtes toujours bloqué, c'est que vous êtes dans le 4ème cas : le votre&lt;/strong&gt;. Envoyez alors un email à notre équipe support indiquant bien que votre serveur est bloqué, vous recevrez alors une réponse le plus rapidement possible.</description>
    
    
    
      </item>
    
  <item>
    <title>Penser infrastructure web</title>
    <link>http://lacuisinedegandi.net/post/2009/05/05/Penser-infrastructure-web</link>
    <guid isPermaLink="false">urn:md5:5b7c77530160ac21d998815d6ed356dd</guid>
    <pubDate>Tue, 05 May 2009 13:31:00 +0200</pubDate>
    <dc:creator>Nicolas (Gandi)</dc:creator>
        <category>Hébergement</category>
            
    <description>    Comme vous le savez, notre système est flexible et vous permet de passer à n'importe quel moment et autant de fois que vous le souhaitez d'un serveur sur 1 part (1/64 de machine + 1/64 en &lt;a href=&quot;http://www.gandi.net/hebergement/offre/benchmark/&quot;&gt;boost&lt;/a&gt;, 256Mo de Ram) à un serveur de 16 parts (1/4 de machine + 1/4 en &lt;a href=&quot;http://www.gandi.net/hebergement/offre/benchmark/&quot;&gt;boost&lt;/a&gt;, 4Go de Ram), mais nous avons de plus en plus de clients qui après le lancement de leur service sont victimes de leur succès et se retrouvent en limite d'utilisation des 16 parts et viennent nous demander des serveurs de 24 ou 32 parts. &lt;br /&gt;
&lt;br /&gt;
Notre réponse est souvent la même, nous leur conseillons alors de &lt;strong&gt;penser infrastructure web plutôt que serveur web&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
En effet, notre solution vous permet de créer autant de serveurs que vous le souhaitez sur les ressources souscrites dans votre compte hébergement, la solution optimale consiste donc à séparer vos services pour une plus grande flexibilité et une plus grande robustesse.&lt;br /&gt;
&lt;br /&gt;
Mais le plus simple est de prendre un exemple concret : comme certains le savent déjà, nous soutenons l'association &lt;a href=&quot;http://www.millenium.org&quot; hreflang=&quot;fr&quot;&gt;Millenium&lt;/a&gt; pour la promotion des jeux et loisirs numériques en ligne. &lt;br /&gt;
&lt;br /&gt;
Le succès grandissant du site &lt;a href=&quot;http://www.millenium.org&quot; hreflang=&quot;fr&quot;&gt;millenium.org&lt;/a&gt; nous poussait à rapidement repenser l'architecture du site pour tenir la charge (de nombreuses vidéos, 17 000 visiteurs uniques/jours). Pour ne rien vous cacher, nous avons quelques priorités et projets Gandi à régler avant de nous occuper du site.&lt;br /&gt;
&lt;br /&gt;
Suite à une importante mise à jour d'un des jeux suivis par Millenium (NDLR: WOW patch 3.1), et même si nous avions anticipé une charge importante en passant le serveur sur 16 parts, celle-ci a vite dépassé nos estimations avec &lt;strong&gt;plus de 50 000 visiteurs uniques le premier jour&lt;/strong&gt; et surtout presque autant les jours suivants. &lt;br /&gt;
&lt;br /&gt;
Le site recevait alors entre 500 et 1000 visiteurs en simultané, ce qui n'est pas viable pour un serveur unique de type LAMP avec, de plus, de très nombreuses vidéos. Nous avons donc changé l'infrastructure immédiatement, pour passer d'un modèle sur un serveur unique (qui est souvent le choix au démarrage) à un modèle en infrastructure. Nous sommes passés d'une &lt;strong&gt;extension verticale&lt;/strong&gt; (plus de puissance) vers une &lt;strong&gt;extension horizontale&lt;/strong&gt; (plus de serveurs) :&lt;br /&gt;
&lt;br /&gt;
&lt;img title=&quot;archidnsrobin.gif, avr 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://lacuisinedegandi.net/public/images/archidnsrobin.gif&quot; /&gt;
&lt;br /&gt;
Comme le montre ce schéma, nous avons donc sorti la base de données sur un serveur à part et dupliqué le serveur web sur 2 machines, la répartition de charge se faisant via la zone DNS du domaine. Nous pouvions aussi envisager de dédier un serveur d'une part à la répartition de charge, mais cette solution était un peu plus longue à mettre en place. Dans notre cas, il a fallu 2 minutes pour ajouter des parts sur le compte, 6 minutes pour créer les 2 serveurs, 10 minutes pour transférer les données et 2 heures environ pour configurer les services.&lt;br /&gt;
&lt;br /&gt;
Aujourd'hui, la plateforme tient 1 million de visiteurs uniques par mois pour plus de 3 millions de pages vues, ce qui est une bonne chose. Mais le mieux c'est que maintenant &lt;strong&gt;la plateforme est évolutive&lt;/strong&gt;. Si la base de données souffre, il nous suffira d'augmenter le nombre de parts allouées au serveur, et si les frontaux web arrivent à saturation, il nous suffira d'en ajouter un.&lt;br /&gt;
&lt;br /&gt;
Si vous vous trouvez confronté à ce genre de problématique, n'hésitez pas à nous consulter, nous nous ferons un plaisir de vous conseiller.</description>
    
    
    
      </item>
    
</channel>
</rss>