2010-12-02 18 views
3

Je travaille actuellement sur la configuration de mon application Web basée sur CakePHP (1.3) pour l'exécution d'une configuration HA. J'ai 4 boîtes de Web exécutant l'application elle-même une grappe de MySQL pour le backend de base de données. J'ai des utilisateurs qui téléchargent entre 12 000 et 24 000 images par semaine (35-70 Go). L'application génère ensuite 2 fichiers supplémentaires à partir de l'original, une miniature et une image de taille moyenne pour l'aperçu. Cela signifie un total de 36 000 à 72 000 fichiers possibles ajoutés aux référentiels chaque semaine. Ce que j'essaie de comprendre est de savoir comment gérer un grand nombre de demandes de fichiers statiques venant d'utilisateurs essayant de voir ces images. Je veux dire que je peux avoir plusieurs boîtes web ne servant que des fichiers statiques avec un load balancer répartissant les requêtes.Configuration de la batterie de serveurs CakePHP haute disponibilité

Mais quelqu'un a-t-il des idées sur la façon de synchroniser tous les serveurs de fichiers statiques?

Si vous avez des expériences que vous aimeriez partager, ou des liens utiles pour moi, ce serait très apprécié.

Merci,

serialk

+1

Je ne sais pas si cela aide, mais Facebook utilise Varnish pour servir ses images | http://www.varnish-cache.org – RabidFire

+0

Merci pour le lien RabidFire, j'ai eu quelques lecture sur mon plat lol – serialk

Répondre

2

Il est un problème assez épineux.

Techniquement, vous pouvez obtenir un répertoire partagé de haute disponibilité à travers quelque chose comme NFS (ou SMB si vous voulez), en utilisant DRBD et Linux-HA pour une installation active/passive. Une telle configuration aura une bonne disponibilité contre une perte de serveur unique, cependant, une telle configuration est très coûteuse et pas facile à mettre à l'échelle - vous devriez avoir l'application elle-même décider du (des) serveur (s), configurer les montages NFS, etc. et tout devient plutôt compliqué.

Donc, je vous demanderais probablement d'éviter de conserver les images dans un système de fichiers du tout - ou du moins, pas le type conventionnel. Je suppose que vous avez besoin que cela soit flexible pour ajouter plus de stockage dans le futur - si vous pouvez garder le stockage et les besoins d'E/S constants, DRBD, HA NFS est probablement un bon système.

Pour le stockage des fichiers dans un flexible « nuage », soit

Tahoe LAFS

Ou peut-être, à un coup de pouce, Cassandra, qui nécessiterait un peu plus l'intégration, mais peut-être mieux à certains égards. MySQL-cluster n'est pas génial pour les gros blobs car il conserve (surtout) les données en mémoire vive; De plus, la grande cohérence qu'il offre nécessite beaucoup de verrouillage, ce qui fait que les mises à jour évoluent (relativement) mal à des charges de travail élevées. Mais vous pouvez toujours envisager de placer les images dans mysql-cluster de toute façon, en particulier si vous l'avez déjà configuré - cela ne nécessiterait plus de frais généraux opérationnels.

+0

Merci pour votre réponse MarkR après avoir lu sur les différentes options que vous avez suggérées je pense que Cassandra va être le gagnant pour celui-ci. Il faudra du travail pour démarrer, surtout que ce sera ma première intégration, mais cela en vaut vraiment la peine. Merci encore! – serialk