Wir richten eine WordPress-Umgebung auf 4 IIS-Servern ein. Wir erwägen, eine geplante Aufgabe zu verwenden, die ein Robocopy-Skript auslöst, um das WordPress-Verzeichnis alle 5 Minuten zu replizieren.
Wie ist die Meinung zu einem solchen Ansatz? Hat jemand dies oder ähnliches jemals benutzt?
windows
iis
web-server
wordpress
joebegborg07
quelle
quelle
Antworten:
Es wäre ein Albtraum, 4 Front-End-Server zu haben, die zur gleichen Zeit dieselben Dateien gemeinsam nutzen und ohne DFS oder ein Drittanbieterprogramm für die Verzeichnissynchronisierung schreiben können.
Mit Azure können Sie 3 Dinge untersuchen.
Freigegebener Speicher, der Erwerb eines eigenen dedizierten Speichers kann mit Kosten verbunden sein. Ich bin mir nicht sicher, welche Konfiguration Azure bietet. Dies würde sicherstellen, dass alle Ihre Dateien für jeden Server verfügbar sind, sobald sie geschrieben werden.
Azure DFS, DFS ist ein Windows-basiertes Verzeichnissynchronisierungstool, das recht gut funktioniert. Sie sind sich auch nicht sicher über die Kosten, aber die Konfiguration ist möglicherweise etwas einfacher. DFS arbeitet asynchron, daher gibt es eine kleine Verzögerung, aber nicht viel.
(Ich werde erklären, wie dies gemacht werden würde, und dann nie wieder darüber sprechen, weil es eine schreckliche Idee ist und fehlschlagen wird.) Erstellen Sie ein Skript, das zuerst die Daten auf allen vier Servern vergleicht und dann die Differenzdaten kopiert. Sie müssten jedes Verzeichnis für den einen Server freigeben, auf dem das Skript ausgeführt wird, die Einrichtungsberechtigung, damit der Server lesen und schreiben kann, und dann Fehlerbehebung und Fehlerbehebung durchführen.
Jede Option von oben erledigt den Job. Wenn Ihr Job von dieser Arbeit abhängt, würde ich Ihnen empfehlen, sich von Option 3 fernzuhalten.
Befolgen Sie die folgenden Schritte, und Sie versuchen nicht, Geld auszugeben.
Schauen Sie sich ein Programm namens "Free File Sync" an. Die kostenlose Version bietet einige wirklich gute Funktionen. Ich glaube, es gibt eine kostenpflichtige Version, aber ich bin mir nicht sicher, welche Verbesserungen Sie erhalten. Ich habe es in vielen meiner Entwicklungsumgebungen verwendet, um etwas Ähnliches wie das zu erreichen, was Sie tun möchten, und war zu faul, um DFS einzurichten.
Wenn Sie nur einen Server beschreibbar machen, können Sie dies einfach tun, indem Sie auf jedem Server einen URI konfigurieren, der besagt, ob Sie einen Artikel erstellen, zu ServerA gehen oder eine URL in Ihrer web.config neu schreiben oder WordPress als PHP-Verwendung verwenden:
Header ('Speicherort: http://myhost.com/mypage.php ');
Jeder benötigt ein wenig Codierung und PHP, IIS-Kenntnisse.
Kurze Antwort, die Sie nicht können, nun, das ist nicht genau richtig. Ich hatte einmal einen Kunden, der unerbittlich war, keinen Load-Balencer zu verwenden, der über eine Reihe von Powershell-Skripten eine Verbindung von einem Server auf einen anderen verschieben konnte, basierend auf der Anzahl von Arbeiterprozesse auf jeder Box oder so ähnlich. So oder so sehr schwer zu tun und nicht die Zeit und Energie wert, um hervorzubringen.
Wenn Sie den Netzwerklastenausgleich auf den Servern nicht konfigurieren können, ist eine zusätzliche IP erforderlich, es handelt sich jedoch nur um eine DNS-Änderung, und der Datenverkehr kann zum Lesen auf die drei Server verteilt werden.
Viel Glück!
quelle
Vielen Dank für alle Vorschläge Leute.
Unsere Lösung bestand in einem Peer-to-Peer-Synchronisationsansatz mit einem Tool namens Resilio.
Mit Resilio konnten wir eine Reihe von Computern (in diesem Fall IIS-Frontends) in einem Peer-to-Peer-Synchronisationscluster konfigurieren. Von jedem Computer im Cluster wird ein Ordner ausgewählt, der für den Synchronisierungsprozess verwendet werden soll.
Der Resilio-Dienst (Windows-Dienst, der im Hintergrund ausgeführt wird) überwacht diese Ordner auf Änderungen. Wenn eine Änderung an einem der angegebenen Ordner an den betreffenden Frontends vorgenommen wird, überträgt Resilio diese Änderung auf die anderen Server.
Ich hoffe, dies kann anderen helfen, die in Zukunft vor einem ähnlichen Problem stehen.
quelle
Ich denke nicht, dass geplante Aufgaben und Robocopy ein großartiger Ansatz sind. Aufgrund des 5-Minuten-Fensters wird es Zeiten geben, in denen eine Ressource angefordert wird, der vom Load Balancer ausgewählte Server jedoch nicht verfügbar ist. Bei weitgehend statischen Sites tritt dies viel seltener auf als bei häufig geänderten ausgelasteten Sites. Eine höhere Frequenz oder die Verwendung einer anderen Synchronisationstechnologie wie Bittorrent Sync (jetzt Resilio Sync genannt ) würde dies erheblich verbessern, das Problem jedoch nicht beseitigen.
Eine bessere Lösung wäre es, Ihren wp-Inhalt oder nur den Ordner wp-content / uploads auf ein freigegebenes Laufwerk zu legen. Eine andere Möglichkeit, dies zu betrachten, besteht darin, dass einer der Server diesen Ordner hostet und die anderen ihn freigeben. Beim Festplatten-Caching sollte die Last auf dem Server nicht viel höher sein als auf den anderen Servern.
Aktualisieren
Werfen Sie einen Blick auf diesen Artikel für Ideen über das Seiten - Caching, und diese ein für CDN. Es geht um Nginx, also müssen Sie es für IIS ausarbeiten, aber die Theorie dahinter gilt für jeden Webserver.
quelle