Question

J'ai une charge enviorment équilibrée avec plus de 10 serveurs Web exécutant IIS. Tous les sites ont accès à un stockage de fichiers qui héberge toutes les images. Nous avons actuellement 200 Go d'images - nous les stocker dans des répertoires de 1000 images par répertoire. En ce moment, toutes les images sont dans un seul périphérique de stockage (RAID 10) connecté à un seul serveur qui sert de serveur de fichiers. Tous les serveurs Web sont connectés au serveur de fichiers sur le même réseau local. Je cherche à améliorer l'architecture afin que nous aurions sans point de défaillance unique. J'envisage deux alternatives:

  1. Répliquer le stockage de fichiers à tous les serveurs Web afin que tous accèdent aux données localement
  2. reproduire le stockage de fichiers à un autre stockage si quelque chose arrive au stockage actuel, nous serions en mesure de passer à elle.

Il est évident que les principales opérations effectuées sur le stockage de fichiers sont lus, mais il y a aussi beaucoup d'opérations d'écriture. Que pensez-vous est la méthode préférée? Toute autre idée?

Je suis actuellement au pouvoir sur l'utilisation du CDN car il faudra un changement d'architecture sur l'application que nous ne pouvons pas faire en ce moment.

Pas de solution correcte

Autres conseils

Certaines choses que je devrais normalement prendre en considération avant d'aller pour le changement arc est

  1. quels sont les enjeux de voûte actuelle
  2. ce que je fais mal à l'arc actuel. (Si cela avait travaillé pendant un certain temps, quelques réglages mineurs résoudra normalement beaucoup de problèmes)
  3. va me permettre de développer facilement (ici il y aura toujours une limite supérieure). Sur la base de la croissance passée des données, vous pouvez planifier efficacement.
  4. fiabilité
  5. facile à entretenir / moniteur / Dépanner
  6. coût

200Go est pas beaucoup de données, et vous pouvez aller dans une solution de Home Grown ou utiliser quelque chose comme un NAS, ce qui vous permettra de développer plus tard. Et une réplique permutables à chaud de celui-ci.

Reproduire au stockage de tous les serveurs Web est une installation très coûteuse, et comme vous l'avez dit, il y a beaucoup d'opérations d'écriture, il aura une grande tête en répliquant à tous les serveurs (qui ne fera qu'augmenter avec le nombre de serveurs et des données de plus en plus). Et il y a aussi la question des données périmées servi par l'un des autres noeuds. En dehors de cela les problèmes de réplication dépannage sera un gâchis avec 10 et nœuds de plus en plus. À moins que la recherche / lecture / écriture de fichiers est temps très critique, répliquant à tous les serveurs Web ne sont pas une bonne idée. Les utilisateurs (de web) ne remarquerez la différence de 100ms - 200ms à loadtime.

Il y a quelques entreprise noreferrer solutions pour ce genre de chose. Mais je ne doute pas qu'ils sont chers. NAS n'échelle pas bien. Et vous avez un point de défaillance unique qui est pas bon.

Il y a quelques façons que vous pouvez écrire du code pour aider. Vous pouvez mettre en cache les images sur les serveurs Web la première fois qu'ils sont demandés, cela réduira la charge sur le serveur d'image.

Vous pouvez obtenir un maître esclave mis en place, de sorte que vous avez un serveur principal d'image, mais d'autres serveurs qui copient de cette situation. Vous pouvez équilibrer la charge de ces derniers, et de mettre une certaine logique dans votre code de sorte que si un esclave n'a pas de copie d'une image, vous vérifiez sur le maître. Vous pouvez également affecter ces derniers dans l'ordre de priorité de sorte que si le maître n'est pas disponible le premier esclave devient alors le maître.

Puisque vous avez si peu de données dans votre stockage, il est logique d'acheter plusieurs gros ou utiliser l'HDs espace libre sur vos serveurs Web pour conserver des copies. Il prendra en la pression sur votre système de stockage back-end et quand il échoue, vous pouvez toujours offrir du contenu pour vos utilisateurs. Mieux encore, si vous avez besoin à l'échelle (plus de téléchargements), vous pouvez simplement ajouter un nouveau serveur et le stress sur votre back-end ne changera pas, beaucoup.

Si je devais le faire, j'utiliser rsync ou l'unisson pour copier les fichiers d'image dans exactement le même espace sur les serveurs Web où ils sont sur le dispositif de stockage (cette façon, vous pouvez échanger la copie avec un système de fichiers de montage de réseau tout moment).

Exécuter rsync chaque maintenant et puis (par exemple après tout chargement ou une fois dans la nuit, vous savez mieux tailles qui vous convient le mieux)

.

Une solution plus souple consiste à utiliser un protocole P2P comme Bittorreent. De cette façon, vous pouvez publier tous les changements sur le backend de stockage pour les serveurs Web et ils avaient optimiser les mises à jour automatcially.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top