J'essaie actuellement de spécifier un cluster évolutif horizontalement pour une application Web basée sur Drupal, qui ressemble à quelque chose comme le diagramme coloré ci-dessous:
L'équilibreur de charge implémente des sessions persistantes, de sorte qu'un utilisateur conserve son état une fois qu'il lui a été alloué un serveur avec lequel travailler.
Chaque serveur d'applications présente les éléments suivants:
- vernis à l'avant
- drupal 6 au milieu en cours d'exécution sur la pile de lampes
- memcached à l'arrière
Les deux serveurs de base de données mysql sont sur une IP partagée, et ils sont dans un cluster HA avec DRBD et un battement de cœur, de sorte que la perte d'un ne fera pas tomber toute la plate-forme.
Il y a certaines choses dont je ne suis pas certain que j'apprécierais vos opinions:
Comment le stockage des fichiers doit-il évoluer horizontalement?
Je pense à utiliser NFS pour monter un répertoire de fichiers partagés sur chaque serveur d'application, donc un fichier téléchargé en une fois est disponible sur chacun d'eux. Je pense à NFS parce qu'il existe depuis des siècles, et je n'ai aucune expérience avec MogileFS ou GlusterFS, et c'est quelque chose que nous avons utilisé auparavant, donc nous le connaissons mieux.
Existe-t-il des directives à suivre pour déterminer le nombre de serveurs qu'il est judicieux de partager un répertoire sur NFS de cette façon?
Comment HA doit-il être fourni sur le stockage de fichiers partagé ici?
Un problème ici est que le serveur NFS est un point de défaillance unique.
Nous utilisons déjà Heartbeat et DRBD sur les serveurs Mysql, et je préférerais garder le nombre de technologies impliquées dans une pile aussi bas que possible - quels pièges y aurait-il si je devais utiliser la même stratégie HA pour le fichier serveurs aussi?
Une approche alternative
Il s'agit d'un site interne, avec un nombre limité d'utilisateurs qui utilisent occasionnellement le site de manière très intensive pendant de courtes périodes, lorsqu'une initiative interne est en cours. Donc, cela n'a pas besoin d'être mis à l'échelle infiniment comme un démarrage.
Étant donné que
- il y a une limite supérieure au trafic que nous pouvons attendre
- l'ajout de HA aux serveurs de fichiers et la conception d'une configuration à l'échelle horizontale comme celle-ci introduit une complexité considérable
J'envisage également de rendre les deux serveurs Web plus robustes afin qu'ils puissent gérer la charge de pointe entre eux, et de configurer l'unisson ou la synchronisation entre les deux sur une tâche cron, de sorte que:
- leurs fichiers sont toujours synchronisés (les sessions persistantes gardent un utilisateur sur le même serveur sur lequel il a téléchargé un fichier)
- en perdre un signifie que le site est toujours opérationnel.
Cela ressemble-t-il à un moyen possible de contourner d'éventuels maux de tête de complexité NFS / DRBD HA?
Merci,
C