Nous avons configuré un environnement wordpress sur 4 serveurs IIS. Nous envisageons d'utiliser une tâche planifiée déclenchant un script robocopy pour répliquer le répertoire wordpress toutes les 5 minutes.
Quelles sont les opinions sur une telle approche? Quelqu'un a-t-il déjà utilisé ceci ou similaire?
windows
iis
web-server
wordpress
joebegborg07
la source
la source
Réponses:
Avoir 4 serveurs frontaux qui partagent les mêmes fichiers en même temps et chacun est capable d'écrire sans utiliser une sorte de DFS ou un programme tiers dédié à la synchronisation d'annuaire serait une jument de nuit.
Avec l'azur, vous pouvez examiner 3 choses.
Stockage partagé, il peut y avoir des coûts associés à l'obtention de votre propre stockage dédié, et je ne suis pas sûr de la configuration, mais Azure le propose. Cela garantirait que tous vos fichiers sont disponibles pour chaque serveur dès qu'ils sont écrits.
Azure DFS, DFS est un outil de synchronisation d'annuaire basé sur Windows qui fonctionne plutôt bien, également pas sûr du coût, mais la configuration pourrait être un peu plus facile. DFS fonctionne de manière asynchrone, il y a donc un peu de retard mais pas beaucoup.
(Je vais expliquer comment cela serait fait et ensuite ne plus en parler, car c'est une idée horrible et échouera.) Créez un script qui comparera d'abord les données sur les quatre serveurs, puis copiera les données différentielles. Vous auriez besoin de partager chaque répertoire sur le serveur exécutant le script, l'autorisation de configuration afin que le serveur puisse lire et écrire, puis dépanner dépanner, dépanner.
L'une ou l'autre des options ci-dessus fera l'affaire, si votre travail dépend de ce travail, je vous recommande de rester à l'écart de l'option 3.
Cela étant dit, et vous n'essayez pas de dépenser de l'argent, suivez les étapes ci-dessous.
regardez un programme appelé "synchronisation de fichiers gratuite". Il y a de très bonnes fonctionnalités dans la version gratuite, je pense qu'il existe une version payante, mais je ne suis pas sûr des améliorations que vous obtenez. Je l'ai utilisé dans beaucoup de mes environnements de développement en essayant de réaliser quelque chose de similaire à ce que vous cherchez à faire et j'étais trop paresseux pour configurer DFS.
Rendre un seul serveur accessible en écriture, cela peut être facilement fait en configurant un URI sur chaque serveur qui indique si créer un article allez sur ServerA, ou une réécriture d'URL dans votre web.config, ou étant que WordPress est utilisé par php:
en-tête («Emplacement: http://myhost.com/mypage.php »);
Chacun prendra un peu de codage et de connaissances PHP, IIS.
Réponse courte, vous ne pouvez pas, eh bien ce n'est pas tout à fait vrai, j'ai eu une fois un client qui était catégorique de ne pas utiliser un équilibreur de charge, il a pu grâce à une série de scripts PowerShell pour déplacer une connexion d'un serveur à un autre en fonction de la quantité de processus de travail sur chaque boîte ou quelque chose comme ça. Quoi qu'il en soit, très difficile à faire et ne vaut pas le temps et l'énergie à mettre de l'avant.
Vérifiez si vous ne pouvez pas configurer l'équilibrage de la charge réseau sur les serveurs. Cela nécessitera une adresse IP supplémentaire, mais son seul changement DNS et le trafic peut être distribué pour la lecture sur les 3 serveurs.
Bonne chance!
la source
Merci pour toutes les suggestions des gens.
Notre solution utilisait une approche de synchronisation peer-to-peer utilisant un outil appelé resilio.
Resilio nous a permis de configurer un certain nombre d'ordinateurs (dans ce cas, les frontaux IIS) dans un cluster de synchronisation d'égal à égal. Un dossier est sélectionné sur chaque ordinateur du cluster à utiliser pour le processus de synchronisation.
Le service Resilio (service Windows exécuté en arrière-plan), surveille ces dossiers pour toute modification et si une modification est apportée à l'un des dossiers spécifiés sur les frontaux en question, Resilio poussera cette modification vers les autres serveurs.
J'espère que cela pourra aider d'autres personnes confrontées à un problème similaire à l'avenir.
la source
Je ne pense pas que les tâches planifiées et Robocopy soient une excellente approche. En raison de la fenêtre de 5 minutes, il y aura des moments où une ressource est demandée mais le serveur sélectionné par l'équilibreur de charge ne la mettra pas à disposition. Pour les sites largement statiques, cela se produira beaucoup moins souvent que pour les sites occupés fréquemment modifiés. Une fréquence plus élevée ou l'utilisation d'une technologie de synchronisation différente comme Bittorrent Sync (maintenant appelée Resilio Sync ) améliorerait considérablement cela, mais n'éliminerait pas le problème.
Placer votre contenu wp ou peut-être simplement le dossier wp-content / uploads sur un lecteur partagé serait une meilleure solution. Une autre façon de voir les choses serait d'avoir l'un des serveurs hébergeant ce dossier et que les autres partagent. Avec la mise en cache du disque, la charge sur le serveur ne devrait pas être beaucoup plus élevée que les autres serveurs.
Mettre à jour
Jetez un œil à cet article pour des idées sur la mise en cache des pages, et celui-ci pour CDN. Il s'agit de Nginx, vous devrez donc le résoudre pour IIS, mais la théorie derrière cela est valable pour tout serveur Web.
la source