Funktioniert ein CDN auch dann noch, wenn mein Server ausfällt?

10

Ich bin Inhaber einer Website und plane, die Cloudfront S3 von Amazon zu verwenden. Ich habe alles gelesen, was ein CDN kann, aber ich habe immer noch eine unbeantwortete Frage.

Funktioniert ein CDN auch dann noch, wenn mein Hauptserver nicht verfügbar ist? Das ist der Hauptgrund, warum ich daran interessiert bin. Weil mein Server hier in Mali normalerweise häufig aufgrund eines Stromausfalls ausfällt.

Tola
quelle
3
Möglicherweise möchten Sie CloudFlare in Betracht ziehen, das a) kostenlos ist und b) Ihre statischen Seiten während eines Ausfalls auf dem neuesten Stand halten kann.
Ceejayoz

Antworten:

12

Dies hängt davon ab, wer Ihr CDN hostet. Wenn Sie Ihre Website auf einem Server und das CDN mit einem Drittanbieter hosten, ist es wahrscheinlich, dass Ihr CDN aktiv bleibt, wenn Ihre Website heruntergefahren wird. Dies ist jedoch möglicherweise nicht der Fall, da einige CDNs nur Inhalte verbreiten, die sie auf Ihrer Website überprüfen können.

Nebenbei bemerkt, CDNs sind nicht für das Hosting Ihrer gesamten Website gedacht. Wenn Sie also der Meinung sind, dass Sie eines verwenden können, um Ihr Webhosting zu ersetzen, oder es als eine Art Failover-Plan verwenden können, bellen Sie den falschen Baum an.

TL; DR - Sie müssen Ihren CDN-Anbieter fragen.

Chris S.
quelle
10

CDNs sind auf Skalierbarkeit und Leistung ausgelegt, jedoch nicht auf hohe Verfügbarkeit. Zu jedem Zeitpunkt benötigen sie möglicherweise Zugriff auf die Originaldateien.

Die meisten Leute verwenden sie, um statische Dateien wie Bilder, CSS- und Javascript-Dateien zu speichern. Einige können so konfiguriert werden, dass HTML zwischengespeichert wird. Dies ist jedoch nur möglich, wenn Sie eine vollständig statische Website haben. Wenn dies der Fall wäre, könnten Sie das Ganze auf S3 hosten und würden überhaupt keinen Server benötigen.

Plattformen
quelle
5

Im Allgemeinen ja, bis zur TTL.

Wenn Sie CDNs verwenden, konfigurieren Sie normalerweise TTLs (Time to Live) für Ihre Inhalte. Dies ist ein Maximum dafür, wie alt der Cache werden kann, bevor er entscheidet, dass er den Cache unbedingt mit dem neuesten Inhalt aktualisieren muss. Angenommen, Sie konfigurieren alle * .jpg-URLs so, dass sie eine 5-minütige TTL haben.

Wenn Ihr Server ausfällt, haben Sie zusätzliche 5 Minuten Zeit, um ihn wieder hochzufahren, bevor die Benutzer es bemerken. Zumindest für .jpgs. Zumindest für .jpgs, die zuvor zwischengespeichert wurden.

Einige CDNs verwenden auch Funktionen wie Akamai NetStorage, mit denen Sie Inhalte direkt auf das CDN hochladen können. Das CDN erhält einige Inhalte und wird angewiesen, diese direkt a priori bereitzustellen. Da hier zunächst kein "On-Demand" -Zuging im Pull-Stil stattfindet, sollte dies natürlich funktionieren, wenn Ihr Server ausfällt.

Wie die anderen Poster jedoch feststellten, sind CDNs nicht dafür konzipiert und bieten KEINE Garantie dafür, dass dieses Verhalten funktioniert. Normalerweise funktioniert es einfach (und es ist großartig, wenn Sie es beobachten!). Und für spezifische technische Details müssen Sie sich natürlich an Ihren Anbieter wenden.

Domingo Ignacio Galdos
quelle
5

Ja, die CDN-Server werden auch dann noch ausgeführt, wenn Ihre Site nicht verfügbar ist. Dies ist eine gute Option, um größere Ausfälle zu beheben. Sie haben ein gutes Maß an Kontrolle darüber, was passiert, damit Sie die Erfahrung basierend auf Ihren Ressourcen und Prioritäten anpassen können. Die Optionen fallen im Allgemeinen in folgende Kategorien:

  1. Objekte, die für das Caching konfiguriert wurden (am häufigsten durch Festlegen des Cache-ControlHeaders), sollten bis zu ihrem Ablauf verfügbar sein. Einige CDNs bieten CDN-Edgeservern die Möglichkeit, Inhalte von anderen CDN-Servern abzurufen. Dies kann bei Ausfällen hilfreich sein und die Leistung im Allgemeinen verbessern, wenn Ihre Ursprungsserver im Vergleich zu CDN-Servern eine vergleichsweise hohe Latenz aufweisen.

  2. Einige CDNs bieten die Möglichkeit, Inhalte bereitzustellen, die abgelaufen sind, wenn Ihr Backend-Server nicht verfügbar ist (z. B. können Sie mit Fastly den Gnaden- oder Heiligenmodus von Varnish aktivieren). Dies hilft natürlich nicht bei Inhalten, die nie zwischengespeichert wurden, aber in vielen Fällen kann es zumindest dazu führen, dass Ihre Kernhomepage, Kontaktinformationen usw. online bleiben, während Sie daran arbeiten, Ihre Server wieder online zu stellen.

  3. Die meisten CDNs bieten die Möglichkeit, mehrere Back-End-Server zu testen, sodass eine separate Failover-Site die für Ihre Site sinnvolle Erfahrung bietet: Failover auf einen anderen Server oder eine Site mit eingeschränkter Funktionalität, eine statische HTML-Seite usw. Dies kann bei Katastrophen hilfreich sein Hosting-Fehler, da Sie die Möglichkeit haben, bei einem völlig anderen Unternehmen oder bei Akamai NetStorage direkt beim CDN-Anbieter zu hosten, damit dieser den gesamten Stack unterstützt.

Mit Ausnahme der dritten Option haben Sie keine Kontrolle darüber, was auf den CDN-Servern zwischengespeichert wird. Der wichtigste Teil des Prozesses besteht darin, zu entscheiden, wie sich Ihre Site verschlechtern kann, wenn verschiedene Funktionen nicht verfügbar sind, z. B. wenn dies der Fall ist Angemessener HTML-Inhalt, selbst wenn JavaScript vollständig ausfällt, kann eine meist informationsgesteuerte Site möglicherweise nur mit grundlegenden Seiteninhalten ausgeführt werden, selbst wenn erweiterte Funktionen im Hintergrund stillschweigend fehlschlagen.

Chris Adams
quelle
Tolle Zusammenfassung! Akamai hat die Serve stale if unable to validateOption, dass bei Ausfall des Ursprungs auch TTL-Inhalte bereitgestellt werden.
LeOn - Han Li
@Leonli der zweite Punkt könnte wahrscheinlich auch einen Link zu RFC 5861 verwenden, da ich glaube, dass CloudFlare Cache-Control: stale-if-errorjetzt auch unterstützt .
Chris Adams
2

Die meisten CDNs speichern (dynamische) Inhalte für einen bestimmten Zeitraum (TTL) vom Ursprung an, in diesem Fall von Ihrem Server. In der Cloudfront Management Console von Amazon wird die Cache-Steuerung eines S3-Buckets erläutert.

  1. Das Standardverhalten von Amazon S3 besteht darin, ein Objekt 24 Stunden zwischenzuspeichern.

  2. Sie können das Standardverhalten beeinflussen, indem Sie einen Cache-Control-Header auf Ihrem Ursprungsserver oder einen Expires-Header angeben / schreiben.

    • Wenn Sie den Cache-Control-Header für das maximale Alter verwenden, ist der Mindestwert 0. Zu diesem Zeitpunkt wird Amazon Ihren Ursprungsserver zufriedenstellen, um jedes Mal zu überprüfen, ob sich das Objekt geändert hat.

    • Wenn Sie den Expires-Header für ein Objekt verwenden, wird Amazon Ihren Ursprungsserver erst zu diesem Zeitpunkt kontaktieren.

Ich hoffe, dies verdeutlicht das Verhalten von Amazon.

Ron Bakker
quelle
0

Ich war über ein Jahr lang Support-Ingenieur bei einem CDN und ich werde sagen, dass alle Antworten hier großartig sind, aber IMO @ Chris-Adams hat die beste Antwort (wenn ich sie abstimmen könnte, würde ich).

Eine Sache, die unsere Kunden tun, ist, www auf das CDN und 301 die TLD auf www zu verweisen. Wenn eine Objekt-TTL abläuft, liefert die Kante den abgelaufenen Inhalt, wenn er im Cache verfügbar ist.

Wenn Ihnen jedoch die Verfügbarkeit (und der frische Inhalt) wichtig sind, würde ich in Betracht ziehen, Ihren Ursprung (Schmerzen im Hintern, den ich kenne) auf einen Host zu verlagern, bei dem es nicht zu häufigen Stromausfällen kommt.

jdorfman
quelle