12 votes

Meilleur moyen d'équilibrer la charge entre plusieurs serveurs de fichiers statiques pour une distribution uniforme de la bande passante ?

Tout d'abord, je vais vous expliquer ma situation. Je gère un site Web assez populaire en tant que projet secondaire, de sorte que je ne peux pas vraiment investir une tonne d'argent dans celui-ci. J'ai actuellement un seul serveur avec HAProxy à l'avant qui envoie les demandes normales à Apache et toutes les demandes de fichiers statiques à Lighttpd. Cela fonctionne très bien car toutes les requêtes php et post sont traitées par Apache, tandis que toutes les images sont envoyées à Lighttpd, plus rapide (le site est principalement composé d'images, donc c'est très important). Ce serait bien de ne pas avoir à configurer un sous-domaine pour servir les images, car les URL courtes sont également très importantes, d'où ma raison d'utiliser HAProxy.

J'ai trouvé un fournisseur d'hébergement qui offre une bande passante non mesurée assez bon marché que j'utilise, le problème se pose lorsque je commence à pousser la bande passante au-delà de ce que la carte réseau de 100 mégaoctets peut gérer, ce qui nécessite un deuxième serveur.

J'ai beaucoup réfléchi à mes options, je vais donc vous expliquer chacune d'entre elles. J'espère que vous pourrez m'éclairer sur la meilleure option pour moi ou qu'il existe une autre option à laquelle je n'ai pas encore pensé.

Exigences :

  • La répartition uniforme de la bande passante est une nécessité. J'ai un serveur assez puissant, donc l'extension n'est pas envisageable. Je dois passer à l'échelle inférieure pour obtenir davantage de bande passante.

  • URLs courtes. Je n'ai vraiment pas envie de créer un sous-domaine, comme img.example.com, pour servir mes images. example.com/image.jpg est tel qu'il est maintenant, et j'aimerais vraiment qu'il le reste. Mais s'il n'y a pas d'autre moyen, alors je comprends.

  • Le serveur clostest qui traite la demande serait vraiment bien, mais pas indispensable. Quelque chose à garder à l'esprit.

HAProxy pour équilibrer la charge :

  • Ce serait vraiment facile à faire puisque j'utilise déjà HAProxy de toute façon. Cependant, je pense que le problème se pose lors de la distribution de la bande passante. Je me trompe peut-être, mais HAProxy n'envoie-t-il pas la demande à un serveur qui la traite et la renvoie au client via HAProxy ? Ainsi, tout le trafic est renvoyé par l'équilibreur de charge, ce qui fait qu'il utilise autant de bande passante que tous les serveurs réunis.

DNS Round Robin :

  • Cela pourrait être ma meilleure option. Il suffit de répliquer le site Web sur plusieurs serveurs et de faire ce que je fais actuellement. L'inconvénient est que si un serveur tombe en panne, les clients sont toujours envoyés vers ce serveur. J'aurais également besoin de répliquer le site sur les multiples serveurs. J'espérais pouvoir avoir un serveur principal qui gère tout sauf les fichiers statiques, puis avoir deux serveurs de fichiers statiques. J'ai également lu qu'il s'agissait d'une sorte d'équilibrage de charge pour les pauvres, et que ce serait bien d'avoir quelque chose d'un peu plus sophistiqué.

Retour direct du serveur :

  • Cela semble vraiment compliqué, mais pourrait être une bonne option. Serait-il toujours possible d'envoyer certaines URL à certains serveurs ? Comme actuellement avec HAProxy, chaque URL qui se termine par la bonne extension de fichier est envoyée à Lighttpd, tandis que les autres extensions sont envoyées à Apache. J'aurais donc besoin de quelque chose de similaire. Par exemple, toutes les requêtes php sont traitées par le même serveur qui exécute le logiciel d'équilibrage, tandis que toutes les requêtes jpg sont envoyées à plusieurs serveurs.

Idéalement, si HAProxy prenait en charge le retour direct au serveur, mon problème serait résolu. Je ne veux pas non plus utiliser de CDN, car ils sont très coûteux et il ne s'agit que d'un projet secondaire après tout.

Comprenez-vous mon problème ? Faites-moi savoir si je n'ai pas bien expliqué quelque chose ou si vous avez besoin de plus d'informations.

1 votes

C'est Imgur, qui a récemment levé 40 millions de dollars. :O

0voto

KPWINC Points 11174

Dans votre message, vous avez mentionné que vous pensiez que le DNS round robbin pourrait être votre meilleure option, mais que vous étiez préoccupé par la défaillance d'un seul serveur...

Si c'est le cas, jetez un œil à Simple Failover de JH Software. Je l'ai utilisé dans le passé et il fonctionne très bien.

http://www.simplefailover.com

En gros, il surveille vos serveurs et, lorsqu'il en voit un tomber en panne, il réécrit rapidement le DNS pour sortir le serveur mort de la rotation.

Voici un extrait de leur site web :

Simple Failover surveille en permanence vos serveurs pour savoir lesquels sont en marche et ceux qui sont hors service, puis il met dynamiquement à jour vos enregistrements DNS afin que votre nom de domaine pointe toujours vers un serveur fonctionnel.

Il fonctionne avec les serveurs web (HTTP), les serveurs de messagerie (SMTP, IMAP, POP3), serveurs FTP, et pratiquement tout autre type de serveur basé sur TCP/IP.

Comme mentionné précédemment, je l'ai utilisé dans le passé pour des sites web et des serveurs de messagerie. Il s'est assez bien comporté. Le basculement était assez rapide dans la plupart des cas (2 à 5 minutes) et je dirais que presque tout le monde a basculé en moins de 15 minutes.

Pas nécessairement PERFECT... mais certainement rapide et facile.

NOTE : Il s'agit d'un produit Windows. Je ne sais pas s'ils ont une version Linux ou non, mais vous pouvez basculer sur n'importe quel serveur puisque c'est basé sur le DNS.

Dans notre cas, nous l'avons simplement installé sur une machine XP, nous avons demandé à la machine de redémarrer une fois par nuit, et elle a fonctionné correctement pendant des années.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X