Wikipedia Architecture et Structure
Serveurs
Introduction
Le succès croissant de Wikipédia nécessite l'emploi d'un grand nombre de serveurs informatiques qui fonctionnent tous avec un système d'exploitation GNU/Linux (principalement Ubuntu). Ces installations sont présentes à Tampa en Floride et à Amsterdam aux Pays-Bas.
Wikipédia fonctionne grâce au logiciel open source: MediaWiki. C'est un logiciel PHP/MySQL. L'architecture des sites Wikipédia est donc basée sur ce couple de logiciel et hébergée sur des configurations classiques de type LAMP.
Mais pour gérer des pics avec plusieurs dizaines de milliers de connections par seconde il faut booster cette architecture. L'équipe du site a donc ajouté un certains nombre de composant pour absorber ce trafic colossal. Voici les principaux types de serveurs utilisés :
Les principaux types de serveurs utilisés
Les serveurs sont organisés en trois couches :
-
Des machines munies de caches Squid, attendent les demandes de pages et d'images.
En effet, les serveurs SQUID sont des proxys mandataires pouvant mémoriser les pages wiki les plus demandées et de les renvoyer aux clients si elles sont demandées. Les serveurs SQUID ne gardent en mémoire que les dernières versions des pages wiki. Si elles sont modifiées, la demande de l'utilisateur sera redirigée jusqu'aux bases de données américaines et prendra un peu plus de temps. Les serveurs SQUID permettent donc de rendre plus rapide les requêtes des utilisateurs. -
Des machines munies de serveurs Apache préparent les pages à la demande, en fonction des données présentes dans la base de données
-
Dne base de données maître et des bases de données esclaves stockent les données
Les données structurées sont stockées en MySQL. Les groupes de wiki sont dans des clusters, et chaque cluster est servi par plusieurs serveurs MySQL, repliqué dans une configuration maître unique.
Autres types de serveurs utilisés :
-
Serveurs LVS (Linux Virtual Server)
L'utilisation des serveurs LVS permet d'équilibrer la charge des demandes entrantes (load balancing). LVS est également utilisé comme un équilibreur de charge interne pour répartir les demandes backend de MediaWiki. -
Serveurs DNS (Domain Name System)
Les serveurs DNS utilisent la répartitions de charge. L'utilisation du DNS géographiquement permet de distribuer les requêtes entre les 2 sites principaux (USA et Europe) en fonction de la localisation du client.
L'architecture
Cette architecture possède en plus :
- un DataBase dumps qui est utilisé pour sauvegarder une base de données de telle sorte que son contenu peut être restauré en cas de perte de données. Le DataBase dumps utilise le snapshot qui par définition est la photographie, à un moment précis, de l'état d'une base de données.
-
un Toolserver qui est un ensemble d'ordinateurs gérés par Wikimedia Allemagne et possédant une copie plus ou moins à jour de la base de données des wikis de la Wikimedia Foundation.
Il est dédié à l'exécution de scripts/bots/outils en rapport avec le projet (les compteurs d'édition par exemple) et comporte actuellement treize serveurs. Le toolserver a vu le jour en été 2005 lorsque Sun Microsystems a fait don du premier serveur.
Wikimédia France participe au financement du toolserver.Le cluster se situe à Haarlem, près d'Amsterdam, et remplit divers rôles :
- Serveurs de bases de données - Ils contiennent des réplications de chaque projet Wikimedia. Ils contiennent aussi, pour chaque version masquée des pages, une copie du texte entier enregistrée en format compressé.
- Serveurs Web - Ils prennent en charge le front office des outils basés sur une interface Web. Ils contiennent également un serveur stable, destiné à exécuter les outils les plus couramment utilisés.
- Serveurs de connexion - Ils interviennent en tant que serveurs de shell (en), permettant aux utilisateurs d'exécuter des bots, scripts et autres requêtes.
Quelques chiffres
Ce sont des chiffres datant de 2008, aujourd'hui ces chiffres ont évolué avec la technologie et le nombre créscendo de demandes.
- 50 000 requêtes HTTP/seconde en pic, avec une moyenne de 27 000 requêtes HTTP/seconde
- Squid gère des pointes à 2500 requêtes/sec sur un serveur
- 3,7 Gbits/s de bande passante en pic, avec 2,2 Gbits/s en moyenne
- 1,3 To de stockage pour les images (plus de 4 millions de fichiers)
- 25 Go de données dans MySQL
A savoir
- Toutes les bases de données sont aux USA, les serveurs européens ne font que du cache (Squid). Pour des questions juridiques et de complexités, les base de données ne sont présentent qu'aux USA.
- Une description précise de l'architecture des serveurs est difficile, car elle change très fréquemment en raison des améliorations régulièrement apportées pour répondre au très fort trafic engendré par la consultation de Wikipédia. Cet aspect de Wikipédia est géré par le personnel technique de la Wikimedia Foundation.
- Plusieurs sites web, comme Ganglia, permettent de consulter diverses informations sur le fonctionnement des serveurs, notamment la charge des processeurs, la mémoire occupée, etc.