Offre d’hébergement gandi.net : résultat du test

Je vous expliquais récemment que j’avais eu la possibilité de tester la nouvelle offre d’hébergement de gandi.net. Mais que comme l’offre n’était pas encore publique, j’avais du signer une clause de confidentialité sur de ce que j’avais entre les mains. Je n’avais pas pu vous expliquer en quoi correspondait cette offre. Maintenant, ça y est. Le service étant ouvert au public, je vais enfin pouvoir vous dévoiler la partie technique et financière de ce produit, qui intéresse principalement ceux qui sont à la recherche d’un hébergement.

Les lecteurs qui avaient parcouru mon précédent article avaient pu deviner qu’il s’agissait d’une offre de serveur dédié "virtuel". Je traduis pour les néophytes.

La virtualisation : Assumer tous les coûts d’un serveur connecté à Internet (contrat de maintenance, backups, salle blanche, climatisation, consommation électrique, etc.) est important au regard de certains besoins (comme ceux d’un particulier ou d’une petite entreprise pour laquelle Internet n’est pas le coeur de métier). Pour que ces coûts restent modestes, certains fournisseurs proposent de tous petits serveurs, ayant des frais d’exploitation restreints (exemple : offre dédibox). La nouvelle voie, proposée entre autre par gandi : mettre en place un gros serveur, qui « simule » plusieurs serveurs plus petits (on parle de virtualisation). Il n’est pas nouveau de mutualiser une machine pour qu’elle soit utilisée par plusieurs utilisateurs. Mais jusqu’à ce jour, les offres d’hébergement mutualisées visaient à faire tourner plusieurs sites web sur un même serveur http (souvent apache), le même système de gestion de base de données (souvent MySQL). Inconvénients de cette solution : le nombre de services est restreint (un client ne peut ajouter des services qui ne sont pas livrés en standard), mais surtout, la puissance et la bande passante est partagée entre tous les utilisateurs, sans qu’il soit possible de les isoler. Ainsi, si un utilisateur fait tourner un site basé sur des programmes lourds, ou si le site est populaire, il absorbe les ressources du serveur, au détriment des autres utilisateurs. Avec la virtualisation, chaque utilisateur est isolé dans son serveur virtuel, et en cas de charge importante, il ne peut consommer plus de RAM, de CPU, de bande passante que le quota qui lui est attribué. De plus, l’hébergeur peut se permettre de donner les droits « super utilisateur » à ses clients : ces derniers peuvent ainsi installer les outils qu’ils veulent. S’ils font une fausse manipulation, qui fait « planter » tout le serveur, c’est juste ce serveur virtuel qui est HS. Les autres serveurs virtuels des autres clients ne sont pas impactés.

L’offre : Ce petit rappel étant fait, passons à l’offre gandi.net (la description est maintenant disponible ici). Chaque serveur (un quadri coeur AMD avec 16 Go de RAM DDR, 320 Go de disque en RAID 6, et 2×1 Go de bande passante vers le net) est virtualité avec Xen. La puissance de chaque machine est découpée avec Xen en 64 unités – gandi parle de « parts » – (chaque part représente donc 1/64 de la RAM totale, 1/64 de la puissance CPU, etc). Deux parts sont dédiées au système (Xen et outils d’administration). Les 62 restantes sont louées aux utilisateurs. A la façon d’un jeu de légo, chaque utilisateur peut acheter des parts, afin de créer un ou plusieurs serveurs virtuels. A tout moment, un utilisateur peut ajouter ou retirer à chaud des parts à son serveur (avec les puissances de 2 comme granulation, ce qui veut dire que chaque serveur peut avoir 1, 2, 4 8, 16, ou 32 parts), suivant les besoins. Avec une part, on se retrouve avec l’équivalent d’un vieux Celeron, 256 Mo de RAM et 512 Mo de swap. Deux parts représentent environ un Pentium 3 avec 512 Mo de RAM et 1 Go de swap. Avec 4 parts, on a un Pentium 4, 1 Go de RAM et 2 Go de swap, etc.

L’espace disque est géré légèrement différemment. Chaque serveur créé (quelque soit son nombre de parts) se voit allouer 2 Go pour le système (ce qui est largement suffisant : rappelons que nous n’avons pas besoin des outils graphiques). Chaque part achetée vous donne droit à 5 Go d’espace disque supplémentaire. Si vous faites une installation en « mode expert » (voir ci-dessous ce que ça signifie), vous pourrez partitionner cette espace disque à votre convenance. Par exemple, si vous possédez deux parts, cela vous donne 2 x 5 Go de disque, soit 10 Go au total. Si vous créez deux serveurs d’une part, vous pouvez assigner 1 partition de 1 Go à un serveur, et une partition de 9 Go à l’autre (vous avez toute liberté pour le saucissonnage de l’espace disque – avec une granularité de 1 Go, et un max. de 250 Go –, et de le montage de la partition à un de vos serveurs). Quelques restrictions tout de même : il n’est pas encore possible de changer la taille d’une partition sans la formater (c’est sur la roadmap des développeurs de chez gandi). Ensuite, en plus de ces 5 Go par part, vous pouvez acheter des Go d’espace disque supplémentaires, selon vos besoins.

Passé les principes de base, voyons comment ça marche. Tout d’abord, veuillez noter que pour commander des parts, il faut impérativement être client de gandi, c’est à dire, posséder un domaine chez gandi. C’est pourquoi j’ai du acheter le domaine desvigne.eu pour faire les tests. En temps que beta testeur, gandi.net a mis gracieusement 2 parts à ma disposition pour m’amuser.

Il faut commencer par se connecter au site de gandi.net avec ses identifiants obtenus lors de l’achat d’un ou de plusieurs noms de domaines. On aède alors à la console d’administration de l’offre d’hébergement. De là, un bouton « créer votre serveur » vous permet de… ben oui, créer un serveur virutuel. On choisit alors de nombre de parts qu’on souhaite attribuer à ce serveur (nombre qu’il sera possible plus tard d’augmenter ou de diminuer « à chaud » selon les besoins).

La création d’un serveur se fait selon 3 modes :

  • « Gandi AI en mode pré-packagé » (AI signifiant « auto install ») : permet d’installer un serveur clé en main, même si on ne connaît quasiment rien en système. Ce choix permet d’installer une machine (avec un OS Linux basé sur une Ubuntu) avec : le serveur web Apache 2.0, PHP 5.2, MySQL 5.0, le serveur proFTPd, et phpMyAdmin pour administrer tout ça. Dans ce mode, il suffit d’indiquer le nom du futur serveur, un mot de passe administrateur, de créer un compte utilisateur, une base de donnée… et vous avez un serveur web en production en 3 clics de souris ;
  • « Gandi AI et choisir dans le détail les applications à installer » : ce mode ressemble au précédent, sauf que maintenant, vous avez la possibilité d’installer (ou pas) les diverses composantes qui étaient installées par défaut dans le mode pré-packagé. Par exemple, vous pouvez installer ou choisir de ne pas installer le serveur d’emails PostFix. Idem pour ProFTPd, pour MySQL5, phpMyAdmin, Apache2, PHP 5, Perl, Python, Ruby, Django, Ruby on Rails, et Awstats pour faire des stats avec Apache. Dans ces deux modes « Gandi AI », un disque est automatiquement créé et monté sous « /srv » (en l’état actuel des outils d’administration, notez qu’il sera impossible de changer les caractéristiques de ce disque par la suite). Le SGBD, le serveur web, le home directory des utilisateurs créés sont placés automatiquement sur ce disque (dont la taille est fonction du nombre de parts liées à votre serveur) ;
  • enfin, le mode « expert ». Dans ce mode, réservé aux… experts évidemment, vous pouvez installer votre propre serveur depuis les distributions suivantes : « Debian 4 », « Fedora Core 7 », « CentOS 5 », « Ubuntu 7.10 », ou « Mandriva 2008.0 ». L’interface vous demandera juste un nom de machine, d’utilisateur, et un mot de passe. Ce mode vous donnera un serveur minimum, avec quasiment aucun service d’installé. A vous ensuite de vous connecter root (« ssh user@Adresse_IP_serveur », puis « sudo su – »), et d’installer les composants dont vous avez besoin (ayant fait le choix d’installer une « Debian 4 », pour moi, ça s’est fait à coup de « apt-get install xxx »).

Quoi qu’il en soit, la création du serveur se fait en 10 minutes environ (on reçoit un e-mails une fois l’opération terminée). A noter que chaque serveur virtuel possède une adresse IP. Vous pouvez ainsi, si vous le désirez, aller dans la page d’administration de votre domaine, afin de rediriger au choix des serveurs web (A, CNAME), votre DNS (NS), vos e-mails (MX) vers cette adresse IP.

Si l’installation a été fait à l’aide d’un mode « Gandi AI » : de base, il est possible de faire un « ssh admin@Adresse_IP_serveur », avec le mot de passe administrateur choisi lors de la création du serveur. Mais cet accès ne vous permettra pas de devenir root ; il est donc peu utile. L’administration des différents services se fait par une interface web (simple mais suffisante) :

Il est possible, depuis l’interface web, d’activer la possibilité de devenir root avec un « su – ». Dès lors, l’interface d’administration du serveur par le web ne sera plu accessible. L’administration se fera alors en se loguant "root" sur la machine. A noter que pour l’heure, cette opération semble irréversible. Et comme le mode « Gandi AI » ne permet pas de jouer avec le disque installé à l’origine, activer un mode « root » depuis une installation « Gandi AI » vous place dans un mode « expert », sans pouvoir jouer avec le premier disque créé, ce qui n’est pas judicieux.

Détails pour hackers d’un serveur virtuel : je me suis pas mal amusé avec le mode expert (une « Debian 4 » ayant « 2 parts »), et voici quelques informations utiles obtenues dans un système tout beau tout neuf qui vient d’être installé (veuillez noter que j’ai masqué mes identifiants).

Quelques informations (sans surprise) sur l’OS :

# uname -a Linux nom_serveur 2.6.18-xenU #6 SMP
Wed Dec 19 17:19:39 CET 2007 i686 GNU/Linux

Coté réseau :

# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:16:3E:xx:xx:xx
inet addr:217.70.xxx.xxx Bcast:217.70.xxx.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:567 errors:0 dropped:0 overruns:0 frame:0
TX packets:432 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:344757 (336.6 KiB) TX bytes:62992 (61.5 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Coté disque (avant la création d’un disque à partir des 5 Go fournis pour chaque part) :

# mount
/dev/xvda1 on / type ext3 (rw,noatime,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)

# df -P
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/xvda1 2466700 315268 2026128 14% /
tmpfs 131144 0 131144 0% /lib/init/rw
udev 10240 20 10220 1% /dev
tmpfs 131144 4 131140 1% /dev/shm

Coté mémoire :

# cat /proc/meminfo
MemTotal: 262288 kB
MemFree: 167944 kB
Buffers: 2220 kB
Cached: 52024 kB
SwapCached: 0 kB
Active: 25012 kB
Inactive: 33344 kB
HighTotal: 1359880 kB
HighFree: 0 kB
LowTotal: 4293869704 kB
LowFree: 167944 kB
SwapTotal: 634556 kB
SwapFree: 634556 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 4116 kB
Mapped: 3172 kB
Slab: 5056 kB
PageTables: 256 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 765700 kB
Committed_AS: 10928 kB
VmallocTotal: 118776 kB
VmallocUsed: 544 kB
VmallocChunk: 118232 kB

Coté processeur :

# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 65
model name : Dual-Core AMD Opteron(tm) Processor 8218
stepping : 2
cpu MHz : 2600.090
cache size : 1024 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush mmx fxsr sse sse2 ht nx mmxext fxsr_opt lm 3dnowext 3dnow up pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc
bogomips : 5190.45

Les périphériques reconnus :

# cat /proc/devices
Character devices:
1 mem
2 pty
3 ttyp
5 /dev/tty
5 /dev/console
5 /dev/ptmx
10 misc
13 input
128 ptm
136 pts
203 cpu/cpuid
204 xvc
254 gntdev
Block devices:
1 ramdisk
202 xvd

Voyons voir maintenant ce que nous indique le noyau au démarrage :

# dmesg
Linux version 2.6.18-xenU (pb@xen-kalou) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #6 SMP Wed Dec 19 17:19:39 CET 2007
BIOS-provided physical RAM map:
Xen: 0000000000000000 – 0000000080800000 (usable)
1328MB HIGHMEM available.
727MB LOWMEM available.
NX (Execute Disable) protection: active
On node 0 totalpages: 526336
DMA zone: 186366 pages, LIFO batch:31
HighMem zone: 339970 pages, LIFO batch:31
Allocating PCI resources starting at 88000000 (gap: 80800000:7f800000)
Detected 10400.634 MHz processor.
Built 1 zonelists. Total pages: 526336
Kernel command line: root=/dev/xvda1 ro console=xvc0
Enabling fast FPU save and restore… done.
Enabling unmasked SIMD FPU exception support… done.
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 16384 bytes)
Xen reported: 2600.090 MHz processor.
Console: colour dummy device 80×25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Software IO TLB disabled
vmalloc area: ee000000-f53fe000, maxmem 2d7fe000
Memory: 237312k/2105344k available (2315k kernel code, 24436k reserved, 592k data, 144k init, 1359880k highmem)
Checking if this processor honours the WP bit even in supervisor mode… Ok.
calibrate_delay_direct() failed to get a good estimate for loops_per_jiffy.
Probably due to long platform interrupts. Consider using "lpj=" boot option.
Calibrating delay loop… 5190.45 BogoMIPS (lpj=25952256)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 178bc3f1 e3d3f3ff 00000000 00000000 00002001 00000000 0000001f
CPU: After vendor identify, caps: 178bc3f1 e3d3f3ff 00000000 00000000 00002001 00000000 0000001f
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
CPU: After all inits, caps: 178bc3f1 e3d3f3ff 00000000 00000410 00002001 00000000 0000001f
Checking ‘hlt’ instruction… OK.
SMP alternatives: switching to UP code
Brought up 1 CPUs
migration_cost=0
NET: Registered protocol family 16
Brought up 1 CPUs
xen_mem: Initialising balloon driver.
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 524288 (order: 10, 4194304 bytes)
TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
TCP: Hash tables configured (established 524288 bind 65536)
TCP reno registered
audit: initializing netlink socket (disabled)
audit(1198319979.427:1): initialized
highmem bounce pool size: 64 pages
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
Initializing Cryptographic API
io scheduler noop registered (default)
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Xen virtual console successfully installed as xvc0
Event-channel device installed.
netfront: Initialising virtual ethernet driver.
i8042.c: No controller found.
mice: PS/2 mouse device common for all mice
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Using IPI No-Shortcut mode
xen-vbd: registered block device major 202
blkfront: xvda: barriers enabled
xvda: xvda1 xvda2
XENBUS: Device with no driver: device/console/0
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 144k freed
Adding 634556k swap on /dev/xvda2. Priority:-1 extents:1 across:634556k
EXT3 FS on xvda1, internal journal

Coté virtualisation :

# cat /proc/xen/balloon
Current allocation: 262144 kB
Requested target: 262144 kB
Low-mem balloon: 483320 kB
High-mem balloon: 1359880 kB
Driver pages: 0 kB
Xen hard limit: ??? kB

Regardons ce qui tourne avant d’installer nos propres services :

# ps -aef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Dec22 ? 00:00:00 init [2]
root 2 1 0 Dec22 ? 00:00:00 [migration/0]
root 3 1 0 Dec22 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 Dec22 ? 00:00:00 [watchdog/0]
root 5 1 0 Dec22 ? 00:00:00 [events/0]
root 6 1 0 Dec22 ? 00:00:00 [khelper]
root 7 1 0 Dec22 ? 00:00:00 [kthread]
root 9 7 0 Dec22 ? 00:00:00 [xenwatch]
root 10 7 0 Dec22 ? 00:00:00 [xenbus]
root 23 7 0 Dec22 ? 00:00:00 [kblockd/0]
root 25 7 0 Dec22 ? 00:00:00 [kseriod]
root 57 7 0 Dec22 ? 00:00:00 [pdflush]
root 58 7 0 Dec22 ? 00:00:00 [pdflush]
root 59 7 0 Dec22 ? 00:00:00 [kswapd0]
root 60 7 0 Dec22 ? 00:00:00 [aio/0]
root 606 7 0 Dec22 ? 00:00:00 [kjournald]
root 686 1 0 Dec22 ? 00:00:00 udevd –daemon
root 1505 1 0 Dec22 ? 00:00:00 dhclient3 -pf /var/run/dhclient.
root 1588 1 0 Dec22 ? 00:00:00 /sbin/syslogd
root 1594 1 0 Dec22 ? 00:00:00 /sbin/klogd -x
root 1604 1 0 Dec22 ? 00:00:00 /usr/sbin/inetd
root 1616 1 0 Dec22 ? 00:00:00 /usr/sbin/sshd
root 1630 1 0 Dec22 ? 00:00:00 /usr/sbin/cron
root 1682 1 0 Dec22 xvc0 00:00:00 /sbin/getty 38400 xvc0
root 2914 1616 0 18:10 ? 00:00:00 sshd: manu [priv]
manu 2918 2914 0 18:10 ? 00:00:00 sshd: manu@pts/0
manu 2919 2918 0 18:10 pts/0 00:00:00 -bash
root 2938 2919 0 18:10 pts/0 00:00:00 su –
root 2939 2938 0 18:10 pts/0 00:00:00 -su
root 2946 2939 0 18:10 pts/0 00:00:00 ps -aef

Le système Debian est configuré pour aller chercher les paquetages sur un mirroir propre à gandi.net. C’est certainement une solution pour gandi pour maîtriser la bande passante, mais aussi, les paquets qui peuvent être mis à jour :

# cat /etc/apt/sources.list
deb http://debian.mirror.gandi.net/debian/ etch main contrib non-free
deb http://security.debian.org/debian-security etch/updates main contrib non-free
deb http://gandistrib.mirror.gandi.net/debian etch main

Voici la liste des paquetages installés de base, avant qu’on commence à s’amuser :

# dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-==============-==============-============================================
ii adduser 3.102 Add and remove users and groups
ii apt 0.6.46.4-0.1 Advanced front-end for dpkg
ii apt-file 2.0.8.2 APT package searching utility — command-lin
ii apt-utils 0.6.46.4-0.1 APT utility programs
ii aptitude 0.4.4-4 terminal-based apt frontend
ii base-files 4 Debian base system miscellaneous files
ii base-passwd 3.5.11 Debian base system master password and group
ii bash 3.1dfsg-8 The GNU Bourne Again SHell
ii bsdmainutils 6.1.6 collection of more utilities from FreeBSD
ii bsdutils 2.12r-19 Basic utilities from 4.4BSD-Lite
ii coreutils 5.97-5.3 The GNU core utilities
ii cpio 2.6-17 GNU cpio — a program to manage archives of
ii cron 3.0pl1-100 management of regular background processing
ii debconf 1.5.11 Debian configuration management system
ii debconf-i18n 1.5.11 full internationalization support for debcon
ii debian-archive 2007.07.31~etc GnuPG archive keys of the Debian archive
ii debianutils 2.17 Miscellaneous utilities specific to Debian
ii dhcp3-client 3.0.4-13 DHCP Client
ii dhcp3-common 3.0.4-13 Common files used by all the dhcp3* packages
ii diff 2.8.1-11 File comparison utilities
ii dmidecode 2.8-4 Dump Desktop Management Interface data
ii dpkg 1.13.25 package maintenance system for Debian
ii dselect 1.13.25 user tool to manage Debian packages
ii e2fslibs 1.39+1.40-WIP- ext2 filesystem libraries
ii e2fsprogs 1.39+1.40-WIP- ext2 file system utilities and libraries
ii ed 0.2-20 The classic unix line editor
ii file 4.17-5etch3 Determines file type using "magic" numbers
ii findutils 4.2.28-1 utilities for finding files–find, xargs, an
ii gandi-hosting- 1.0.0-r740 Agent for Gandi auto-install
ii gandi-hosting- 1.0.0-r740 Plugins for Gandi agent auto-install
ii gandi-hosting- 1.0.0-r740 Plugins for Gandi agent auto-install
ii gandi-hosting- 1.0.0-r740 XML schemes for the agent of GandiAI
ii gcc-4.1-base 4.1.1-21 The GNU Compiler Collection (base package)
ii gnupg 1.4.6-2 GNU privacy guard – a free PGP replacement
ii gpgv 1.4.6-2 GNU privacy guard – signature verification t
ii grep 2.5.1.ds2-6 GNU grep, egrep and fgrep
ii groff-base 1.18.1.1-12 GNU troff text-formatting system (base syste
ii gzip 1.3.5-15 The GNU compression utility
ii hostname 2.93 utility to set/show the host name or domain
ii ifupdown 0.6.8 high level tools to configure network interf
ii info 4.8.dfsg.1-4 Standalone GNU Info documentation browser
ii initscripts 2.86.ds1-38 Scripts for initializing and shutting down t
ii iptables 1.3.6.0debian1 administration tools for packet filtering an
ii iputils-ping 20020927-6 Tools to test the reachability of network ho
ii klogd 1.4.1-18 Kernel Logging Daemon
ii laptop-detect 0.12.1 attempt to detect a laptop
ii less 394-4 Pager program similar to more
ii libacl1 2.2.41-1 Access control list shared library
ii libapt-pkg-per 0.1.20 Perl interface to libapt-pkg
ii libattr1 2.4.32-1 Extended attribute shared library
ii libblkid1 1.39+1.40-WIP- block device id library
ii libbz2-1.0 1.0.3-6 high-quality block-sorting file compressor l
ii libc6 2.3.6.ds1-13et GNU C Library: Shared libraries
ii libc6-xen 2.3.6.ds1-13et GNU C Library: Shared libraries [Xen version
ii libcap1 1.10-14 support for getting/setting POSIX.1e capabil
ii libcomerr2 1.39+1.40-WIP- common error description library
ii libconfig-file 1.4-2 Parses simple configuration files
ii libconsole 0.2.3dbs-65 Shared libraries for Linux console and font
ii libdb4.2 4.2.52+dfsg-2 Berkeley v4.2 Database Libraries [runtime]
ii libdb4.3 4.3.29-8 Berkeley v4.3 Database Libraries [runtime]
ii libdb4.4 4.4.20-8 Berkeley v4.4 Database Libraries [runtime]
ii libdevmapper1. 1.02.08-1 The Linux Kernel Device Mapper userspace lib
ii libedit2 2.9.cvs.200505 BSD editline and history libraries
ii libgcc1 4.1.1-21 GCC support library
ii libgcrypt11 1.2.3-2 LGPL Crypto library – runtime library
ii libgdbm3 1.8.3-3 GNU dbm database routines (runtime version)
ii libgnutls13 1.4.4-3 the GNU TLS library – runtime library
ii libgpg-error0 1.4-1 library for common error values and messages
ii libgpmg1 1.19.6-25 General Purpose Mouse – shared library
ii libkrb53 1.4.4-7etch4 MIT Kerberos runtime libraries
ii libldap2 2.1.30-13.3 OpenLDAP libraries
ii liblocale-gett 1.05-1 Using libc functions for internationalizatio
ii liblzo1 1.08-3 data compression library (old version)
ii libmagic1 4.17-5etch3 File type determination library using "magic
ii libncurses5 5.5-5 Shared libraries for terminal handling
ii libncursesw5 5.5-5 Shared libraries for terminal handling (wide
ii libnewt0.52 0.52.2-10 Not Erik’s Windowing Toolkit – text mode win
ii libopencdk8 0.5.9-2 Open Crypto Development Kit (OpenCDK) (runti
ii libpam-modules 0.79-4 Pluggable Authentication Modules for PAM
ii libpam-runtime 0.79-4 Runtime support for the PAM library
ii libpam0g 0.79-4 Pluggable Authentication Modules library
ii libpopt0 1.10-3 lib for parsing cmdline parameters
ii libreadline5 5.2-2 GNU readline and history libraries, run-time
ii libsasl2 2.1.22.dfsg1-8 Authentication abstraction library
ii libsasl2-2 2.1.22.dfsg1-8 Authentication abstraction library
ii libselinux1 1.32-3 SELinux shared libraries
ii libsepol1 1.14-2 Security Enhanced Linux policy library for c
ii libsigc++-2.0- 2.0.17-2 type-safe Signal Framework for C++ – runtime
ii libslang2 2.0.6-4 The S-Lang programming library – runtime ver
ii libss2 1.39+1.40-WIP- command-line interface parsing library
ii libssl0.9.8 0.9.8c-4etch1 SSL shared libraries
ii libstdc++6 4.1.1-21 The GNU Standard C++ Library v3
ii libtasn1-3 0.3.6-2 Manage ASN.1 structures (runtime)
ii libtext-charwi 0.04-4 get display widths of characters on the term
ii libtext-iconv- 1.4-3 converts between character sets in Perl
ii libtext-wrapi1 0.06-5 internationalized substitute of Text::Wrap
ii libusb-0.1-4 0.1.12-5 userspace USB programming library
ii libuuid1 1.39+1.40-WIP- universally unique id library
ii libvolume-id0 0.105-4 libvolume_id shared library
ii libwrap0 7.6.dbs-13 Wietse Venema’s TCP wrappers library
ii libxml2 2.6.27.dfsg-1 GNOME XML library
ii libxslt1.1 1.1.19-1 XSLT processing library – runtime library
ii locales 2.3.6.ds1-13et GNU C Library: National Language (locale) da
ii login 4.0.18.1-7 system login tools
ii logrotate 3.7.1-3 Log rotation utility
ii lsb-base 3.1-23.2etch1 Linux Standard Base 3.1 init script function
ii makedev 2.3.1-83 creates device files in /dev
ii man-db 2.4.3-6 The on-line manual pager
ii manpages 2.39-1 Manual pages about using a GNU/Linux system
ii mawk 1.3.3-11 a pattern scanning and text processing langu
ii mime-support 3.39-1 MIME files ‘mime.types’ & ‘mailcap’, and sup
ii mktemp 1.5-2 Makes unique filenames for temporary files
ii module-init-to 3.3-pre4-2 tools for managing Linux kernel modules
ii mount 2.12r-19 Tools for mounting and manipulating filesyst
ii nano 2.0.2-1etch1 free Pico clone with some new features
ii ncurses-base 5.5-5 Descriptions of common terminal types
ii ncurses-bin 5.5-5 Terminal-related programs and man pages
ii net-tools 1.60-17 The NET-3 networking toolkit
ii netbase 4.29 Basic TCP/IP networking system
ii netcat 1.10-32 TCP/IP swiss army knife
ii openbsd-inetd 0.20050402-6 The OpenBSD Internet Superserver
ii openssh-client 4.3p2-9 Secure shell client, an rlogin/rsh/rcp repla
ii openssh-server 4.3p2-9 Secure shell server, an rshd replacement
ii openssl 0.9.8c-4etch1 Secure Socket Layer (SSL) binary and related
ii passwd 4.0.18.1-7 change and administer password and group dat
ii patch 2.5.9-4 Apply a diff file to an original
ii perl 5.8.8-7etch1 Larry Wall’s Practical Extraction and Report
ii perl-base 5.8.8-7etch1 The Pathologically Eclectic Rubbish Lister
ii perl-modules 5.8.8-7etch1 Core Perl modules
ii procps 3.2.7-3 /proc file system utilities
ii python 2.4.4-2 An interactive high-level object-oriented la
ii python-central 0.5.12 register and build utility for Python packag
ii python-lxml 1.1.1-1 pythonic binding for the libxml2 and libxslt
ii python-minimal 2.4.4-2 A minimal subset of the Python language (def
ii python-pyopens 0.6-2.3 Python wrapper around the OpenSSL library (d
ii python-support 0.5.6 automated rebuilding support for python modu
ii python-syck 0.55-3.3+b1 YAML parser kit — python bindings (default
ii python-yaml 3.05-1 PyYAML is a YAML parser and emitter for Pyth
ii python2.4 2.4.4-3 An interactive high-level object-oriented la
ii python2.4-mini 2.4.4-3 A minimal subset of the Python language (ver
ii readline-commo 5.2-2 GNU readline and history libraries, common f
ii screen 4.0.3-0.3+b1 a terminal multiplexor with VT100/ANSI termi
ii sed 4.1.5-1 The GNU sed stream editor
ii sysklogd 1.4.1-18 System Logging Daemon
ii sysv-rc 2.86.ds1-38 System-V-like runlevel change mechanism
ii sysvinit 2.86.ds1-38 System-V-like init utilities
ii sysvinit-utils 2.86.ds1-38 System-V-like utilities
ii tar 1.16-2 GNU tar
ii tasksel 2.66 Tool for selecting tasks for installation on
ii tasksel-data 2.66 Official tasks used for installation of Debi
ii tcpd 7.6.dbs-13 Wietse Venema’s TCP wrapper utilities
ii traceroute 1.4a12-21 traces the route taken by packets over a TCP
ii tzdata 2007b-1 Time Zone and Daylight Saving Time Data
ii udev 0.105-4 /dev/ and hotplug management daemon
ii update-inetd 4.27-0.5 inetd.conf updater
ii util-linux 2.12r-19 Miscellaneous system utilities
ii vim 7.0-122+1etch3 Vi IMproved – enhanced vi editor
ii vim-common 7.0-122+1etch3 Vi IMproved – Common files
ii vim-runtime 7.0-122+1etch3 Vi IMproved – Runtime files
ii vim-tiny 7.0-122+1etch3 Vi IMproved – enhanced vi editor – compact v
ii wget 1.10.2-2 retrieves files from the web
ii whiptail 0.52.2-10 Displays user-friendly dialog boxes from she
ii zlib1g 1.2.3-13 compression library – runtime

Voici la configuration de base pour le DNS :

# cat /etc/resolv.conf
nameserver 217.70.184.225
nameserver 217.70.184.226

Etant d’un naturel curieux, au delà des services officiellement listés dans ce qu’on peut voir ci-dessus, j’ai scanné les ports ouverts sur le serveur virtuel avec un petit nmap. Sans surprise :

Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-23 17:58 CET
Interesting ports on xxx.ghst.net (217.70.xxx.xxx):
Not shown: 65533 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0)
842/tcp open unknown
No exact OS matches for host (If you know what OS is running on it, see http://insecure.org/nmap/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=4.20%D=12/23%OT=22%CT=1%CU=37955%PV=N%DS=10%G=Y%TM=476E946E%P=i68
OS:6-pc-linux-gnu)SEQ(SP=D1%GCD=1%ISR=D1%TI=Z%II=I%TS=7)OPS(O1=M5B4ST11NW7%
OS:O2=M5B4ST11NW7%O3=M5B4NNT11NW7%O4=M5B4ST11NW7%O5=M5B4ST11NW7%O6=M5B4ST11
OS:)WIN(W1=16A0%W2=16A0%W3=16A0%W4=16A0%W5=16A0%W6=16A0)ECN(R=Y%DF=Y%T=3F%W
OS:=16D0%O=M5B4NNSNW7%CC=N%Q=)T1(R=Y%DF=Y%T=3F%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N
OS:)T3(R=N)T4(R=Y%DF=Y%T=3F%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=3F%W=0
OS:%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=3F%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7
OS:(R=N)U1(R=Y%DF=N%T=3F%TOS=0%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUL
OS:=G%RUD=G)IE(R=Y%DFI=N%T=3F%TOSI=Z%CD=S%SI=S%DLI=S)
Uptime: 1.262 days (since Sat Dec 22 11:44:41 2007)
Network Distance: 10 hops
Service Info: OS: Linux
OS and Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 175.324 seconds

Pour terminer l’aspect test technique de ce test, voici ce qu’il se passe lorsqu’on ajoute un disque . Dans l’interface d’administration, je crée un disque de 9 Go sur les 10 disponibles avec deux parts. Il me faut donner un nom à ce disque : je l’appellerai « disk1 ». Ensuite, j’assigne ce nouveau disque à un serveur. A noter que dans l’interface d’administration web, rien n’indique le nom du device que portera ce disque. Après quelques temps, le disque semble se monter automatiquement. En effet, les commandes « mount » et « df » nous donnent de nouvelles lignes :

/dev/xvdb on /srv/disk1 type ext3 (rw,noatime,data=ordered)
/dev/xvdb 10321208 154236 9642684 2% /srv/disk1

Les prix : dernier point de ce test :

  • Prix d’une tranche (~1 celeron, 256 Mo RAM, 512 Mo swap, 5 Go disque, 1,5 Mb/s) :
6,00 €HT/mois
  • Prix du Go de disque supplémentaire au delà des 5 Go offerts par tranche :
0,20 €HT/mois

Conclusion : l’offre gandi.net est tout à fait innovante avec la mise en place de la virtualisation, qui offre le double avantage de mutualiser les coûts d’hébergement, tout en assurant une qualité de service (puissance, bande passante) aux utilisateurs, qui ont alors toute liberté de pouvoir activer ou supprimer les services qu’ils veulent.

Le système "Gandi AI" permet à un néophyte de créer et d’administrer simplement un serveur de type web. La création d’un serveur en mode expert permet au spécialiste de créer et administrer un serveur aux p’tits oignons, comme s’il s’agissait d’un serveur réel, et d’installer des services au delà du simple LAMP (Linux/Apache/MySQL/PHP).

Reste que coté prix… Avec le nom de domaine, un serveur d’une part revient à 100 €TTC par an. C’est 3 fois plus cher qu’une offre d’hébergement mutualisée de type 1&1, mais 5 fois moins qu’une offre dédiée light genre dédibox. De plus, coté confort, une seule tranche est "border line" dans certain cas, en particulier coté CPU (mon NPDS s’affiche "assez vite", mais phpMyAdmin rame beaucoup, du genre 15 sec. pour afficher une page). Par contre, un serveur de 2 parts est très confortable.

Si le coté puissance de calcul est limite avec une tranche (dont le prix est assez élevé comparé à du mutualisé classique), l’espace disque est très sympatique ! 5 Go pour son site… Ca en fait des photos et des musiques. Et à 20 centimes €HT mensuel pour chaque Go supplémentaire, ça reste très économique.

Devant tous ces critères, difficile de conclure de façon générale. Si vous cherchez juste un hébergement pour un petit site, le coût est peut être un peu élevé. Par contre, si vous avez un hébergement mutualisé, et que vous commencez à être à l’étroit coté espace disque ou bande passante avec les offres classiques, ou si vous voulez aller au delà du simple Apache/PHP/MySQL, et jouer les experts sur un serveur à vous, connecté 24h/24 au net, cette offre est faite pour vous.

Fond
musical :

 

 

Alannah MylesSong instead of a kiss


Commentaire

Offre d’hébergement gandi.net : résultat du test — 12 commentaires

    • Puis lui, le pb sera de trouver déjà un ordi, des électrons pour le faire fonctionner, et un toit pour qu’il ne soit pas mouillé. Après, on pourra s’occuper de son hébergement.

      Quant au Beaujolpif, je rappelle qu’il y a ça.

    • Mince, pourtant, cette fois-ce, j’ai fait un gros effort de pédagogie : j’ai essayé d’expliquer ce qu’était la virtualisation, j’ai évité au maximum d’utiliser des gros mots techniques, ou alors, j’ai mis un lien vers des sites qui expliquent ce que c’est… T’as vraiment rien compris ? :o)

  1. AhAh je reconnais bien Manu dans ces articles complets et très instructifs 🙂

    Si j’ai bien suivi, la bande passante est illimitée ?
    Qu’as-tu mis comme services sur ton serveur ?

    En revanche, cacher l’IP de desvigne.eu, c’est petit o/ 🙂

    @bientot 🙂


    Posté anonymement par dcddtc (site web)
    • Si si, il y a une limite théorique de la bande passante (je l’ai mise dans le tableau tarifs, mais il est vrai, sans détailler). La connexion vers le net étant de 100 Mbits/s, une part représente 1/64ème de ce débit, soit environ 1,5 Mbits/s par part, i.e. ~ 500 Go de traffic mensuel (ce qui est déjà pas mal…). Plus de précisions sur leur grille de tarifs.
      Pour ce qui est de cacher l’adresse IP : et bien, à la fin de la période de test, je ne garderai très certainement pas le domaine desvigne.eu. Si j’utilise cette offre (je n’ai pas encore pris ma décision), ça sera certainement pour héberger le présent site. Alors, je ne veux pas qu’un bot récupère l’IP, et s’acharne sur le site de celui qui la récupérera. D’ailleurs, tu noteras que je ne l’ai pas masqué dans les copies écran 😉

        • Ah oui, et j’ai oublié de répondre à ton autre question : qu’est ce que je me suis amusé à installer comme service. Bennn… Que du classique en fait. Exim4 pour les emails, apache2, PHP5, MySQL5, phpMyAdmin, gd, wuFtp, etc. De quoi faire de l’hébergement pour l’instant. Ah, je vais peut-être tester de monter un VPN et du partage de fichiers via ce VPN, histoire de tester si ça tient la route d’utiliser ce genre d’hébergement pour faire un backup de ses fichiers importants.

  2. C’est marrant, je croyais que l’intérêt d’avoir un hébergeur, c’était justement de ne pas avoir à gérer son système.
    Ou alors, on le fait chez soi, si on a l’ADSL (avec bien sûr des débits limités).
    Je me demande sérieusement qui cette offre peut intéresser.
    La plus value de l’hébergeur devient faible : on ne profite finalement que de son accès internet

    • Pour répondre à la première question : oui et non… L’avantage d’avoir un hébergeur, c’est surtout de mutualiser les coûts (même pour un serveur dédié, l’hébergeur permet de mutualiser la salle blanche avec la clim, ls onduleurs, les accès réseau, la sécurité, etc.). Effectivement, ça peut aussi être l’occasion de ne rien avoir à gérer. Dans le cas présent, il te suffit de faire une installation « AI mode prépackagé », et tu n’as rien à gérer. Maintenant, si tu veux aller plus loin (par exemple, créer un VPN avec ton serveur pour y déposer des fichiers de façon sécurisée, lancer des tâches à des heures fixes, installer des services qui ne sont pas proposés en standard dans les offres d’hébergement classique) : tu te retrouves vite à l’étroit avec un hébergeur.
      Maintenant, OK, tu peux t’auto-héberger. Mais alors :
      – en cas de popularité (ponctuelle ou pérenne) de ton site, ça te bouffe de la bande passante sur ton accès ADSL,
      – as-tu mis un onduleur sur ton PC/Xbox qui te sert de serveur,
      – as-tu prévu de la haute disponibilité (ça tombe toujours en panne pendant que tu es parti 15 jours en vacances ces trucs là, c’est la loi de Murphy ; et alors, plus de DNS, d’emails, etc.).

      Je me pose la question pour moi même : mon serveur perso est une Xbox, qui tourne 24h/24 depuis plus de 3 ans. C’est pas trop fait pour ça une console de jeu vidéo… Que ferai-je quand elle tombera en panne ? Sans compter que ça consomme (50 à 100 W/h tt de même), et que ça chauffe (je le sais, la mienne est dans une toute petite pièce de 1,5 m^2, et l’été, c’est une cata). Sûr que 100€/an, ça fait tt de même réfléchir. Mais sinon, ça n’est pas si idiot…
      Pour l’instant, je ne défend pas ce genre d’offre bec et ongles. Mais je dis que ça vaut le coup d’y réfléchir.

  3. Et moi je fais partie des malheureux qui ont un serveur Gandi sur lequel il y a des Memory Leaks…

    Très sympa quand ta machine se freeze au bout de 24 heures ou alors trois fois en 48h :-/

    Dommage car le pricing est extrêmement intéressant et que je suis assez content de quitter mon 90Plan d’OVH qui est cher , souvent très ralenti et qui a des problèmes réguliers (les BDD sautent, le serveur n’est plus à l’heure et j’en passe)


    Posté anonymement par Gonzague (site web)
    • Désolé pour toi… Voilà bien le genre du bug que je ne peux découvrir avec mon test. En effet, comme je l’ai dit, je n’ai créé qu’un serveur de test. Il ne subit aucune charge => peu de chance d’avoir des Memory Leaks.

      Maintenant, comment as-tu fait l’installation? Et tu as choisi quel OS ? Car serveur plus à l’heure, ça se corrige avec un serveur nntp par exemple. Bref, si tu as pris une installation « gandi clés en main », peut-être que cette solution est boguée.

      Par contre, pour ce qui est du prix, si toi tu trouves ça raisonnable, moi, je trouve ça un peu élevé. Comme il faut 2 tranches pour être à l’aise, ça fait un peu cher pour une utilisation perso…

Répondre à nea Annuler la réponse.