Wann ist der richtige Zeitpunkt, um Hochverfügbarkeit für Websites einzuführen?


16

Wann ist der richtige Zeitpunkt, um Hochverfügbarkeit für Websites einzuführen?

Es gibt viele Artikel zu Hochverfügbarkeitsoptionen. Es ist jedoch nicht so offensichtlich, wann der richtige Zeitpunkt für einen Wechsel von einer Einzelserverkonfiguration zu einer Hochverfügbarkeitskonfiguration ist.

Bitte beachten Sie meine Situation:
http://www.postjobfree.com ist eine 24/7-Website mit erheblichem Datenverkehr:
http://www.similarweb.com/website/postjobfree.com

Derzeit führe ich es auf einem einzelnen Server aus: Sowohl IIS 7.0-Webserver als auch SQL Server 2008 werden auf derselben Hardware-Box ausgeführt.

Es gibt gelegentliche (~ eine pro Monat) ~ 5 Minuten Ausfallzeit, die normalerweise durch einen Neustart verursacht wird, der für einige Windows Server-Updates erforderlich ist. Normalerweise sind Ausfallzeiten geplant und treten nachts auf. Trotzdem ist es unangenehm, da Google Bot und einige Benutzer nachts immer noch aktiv sind.

Der aktuelle Website-Umsatz liegt bei ~ 8.000 USD / Monat.

Ich erwäge den Wechsel zur Konfiguration mit zwei Servern (Webfarm mit zwei Webservern und Cluster mit zwei SQL-Servern, die auf zwei Hardwareservern gehostet werden).

Vorteile:
1) Hohe Verfügbarkeit (theoretisch keine Ausfallzeit). Selbst wenn einer der Server ausfällt, würde ein anderer Server übernehmen.
2) Kein Datenverlust: Ohne SQL-Cluster können bei einem Hardwareausfall bis zu einem Tag Daten verloren gehen (wir führen ein tägliches Backup durch).

Nachteile:
1) Mehr Aufwand zum Einrichten und Verwalten einer solchen Konfiguration.
2) Höhere Hostingkosten. Anstelle von ungefähr 600 USD / Monat wären es ungefähr 1200 USD / Monat.

Was wäre Ihre Empfehlung?


Die Antwort auf meine Frage könnte sich auf die Entwicklung auswirken. Beispielsweise kann ich in Betracht ziehen, die Datenbank in Teile zu teilen und Daten, die eine hohe Zuverlässigkeit erfordern (Benutzereingaben), getrennt von Daten zu speichern, die eine hohe Leistung erfordern (Berechnungen).

2
Hallo Dennis, das ist keine wirkliche Empfehlung, also habe ich es als Kommentar festgehalten, aber deine Hosting-Kosten scheinen für einen einzelnen Windows-Server ziemlich hoch zu sein? Ich gehe davon aus, dass es sich um einen vollständig dedizierten Server handelt (keine VM), aber selbst dann sollten Sie sich vielleicht die Hälfte der Kosten für einen Server mit angemessener Spezifikation mit 8 GB RAM, ausreichend Speicherplatz usw. ansehen Ihr Hosting-Unternehmen über einen besseren Preis.
Ewan Leith

6
Ich denke, Hochverfügbarkeit sollte ab dem ersten Moment der Projektkonzeption geplant werden.
Tom O'Connor

Ewan, ich möchte, dass meine Website schnell funktioniert, also habe ich einen Quad-Prozessor mit 8 GB Speicher und ein SDD-Laufwerk. Kostenfaktor für Softwarelizenzen (Windows, SQL Server), SSL und technischen Support. Haben Sie dafür eine gute Lösung mit niedrigem Preis? Ich verwende derzeit Server Intellect (unterstützt von SoftLayer) für das Hosting. Würden Sie etwas besseres empfehlen?
Dennis Gorelik

2
Windows Update wird mit Sicherheitsupdates geliefert. Wenn ich meinen Server nicht patche, ist er möglicherweise anfällig für Angriffe. Welche Aktualisierungshäufigkeit würden Sie für Windows Production Server empfehlen?
Dennis Gorelik

Antworten:


15

Kurze Antwort: Wenn Ausfallzeiten oder das Risiko höher sind als die Kosten für eine hohe Verfügbarkeit.

Es ist grundsätzlich eine wirtschaftliche Entscheidung. Als Beispiel. 8.000 USD / Monat bedeuten, dass ein Ausfall von 2 Stunden 22 USD kostet. Wenn Sie Ihr System so konfigurieren können, dass Sie innerhalb von 2 Stunden von Grund auf eine voll funktionsfähige Site entwickeln können, bringt Ihnen eine hohe Verfügbarkeit nur 22 US-Dollar an Funktionalität.

Anders ausgedrückt: Sie können Geld sparen, es sei denn, Sie haben in einem bestimmten Monat 54 Stunden unvorhergesehene Ausfallzeiten.


16
Sie müssen auch das Risiko für die Reputation in Betracht ziehen
gbn

7
Die Kosten pro Stunde Ausfallzeit hängen mit ziemlicher Sicherheit davon ab, wann der Server ausfällt. Es ist sehr unwahrscheinlich, dass die Transaktionen gleichmäßig über einen Zeitraum von 24 Stunden verteilt sind. Es ist normaler, nur während einiger Stoßzeiten aufzutreten. Zu diesem Zeitpunkt wäre der Verlust viel größer.
John Gardeniers

Slartibartfast, ich verstehe Ihre Antwort so: Stellen Sie sicher, dass die Wiederherstellungszeit nach einem katastrophalen Ausfall angemessen ist (einige Stunden), der Datenverlust angemessen ist (einige Stunden), und erlauben Sie mir, von Zeit zu Zeit kurze geplante Ausfallzeiten zu haben (zumindest für den Moment). . Dies würde bedeuten, dass tägliche Sicherungen, inkrementelle Teilsicherungen und ein Server verfügbar sind, auf dem die gesamte Konfiguration wiederhergestellt werden kann. Klingt es richtig?
Dennis Gorelik

Antworten: gbn: Einverstanden; Ich wollte eine einfache Erklärung geben, aber der Ruf könnte leicht ein bedeutender Faktor sein. John Gardeniers: Sicher, aber wenn die Site nur an Sonntage von 11.00 bis 01.00 Uhr verwendet wird , dann geplante Ausfallzeit nicht wirklich ein Problem ist, während das $ 2k Preisschild für ein ungeplantes 2 Stunden Ausfall right_then ist. An diesem Punkt müssen Sie herausfinden, wie wahrscheinlich es ist, dass ein vorzeitiger Ausfall (zu Einnahmen in Höhe von 2.000 US-Dollar) stattgefunden hat, verglichen mit der bestimmten Gebühr von 600 US-Dollar pro Monat für den zusätzlichen Server. Hinweis: Es sei denn, zufällige Ausfälle während des kritischen Zeitraums treten häufiger als 4 / Jahr auf.
Slartibartfast

Dennis Gorelik: Entscheiden Sie, gegen welche Risiken Sie sich schützen möchten (z. B. Geschäftsverlust während der Wartung, Verlust des Servers, Verlust des Rechenzentrums, Konto- / Sicherheits- / Datenbank-Verschluss) und handeln Sie, um sich dagegen zu schützen. In diesem Fall schützen Sie sich vor Ausfallzeiten aufgrund von Wartungsarbeiten und unvorhersehbaren Ausfällen (soweit ich das beurteilen kann). Was Sie beschreiben, sollte ausreichen, aber denken Sie daran, dass Sie den Server nicht besitzen müssen, solange Sie sicher sein können, dass Sie ihn beschaffen und in der Wiederherstellungsphase einrichten können.
Slartibartfast


2

Ich denke, die meisten Benutzer können mit geplanten Ausfallzeiten umgehen. Bedenken Sie, dass ebay freitagabends wöchentliche Updates anbietet und Gebote dann manchmal nicht funktionieren. Das Online-Banking meiner (großen australischen) Bank hat wöchentlich stundenweise Ausfälle geplant. Twitter geht die ganze Zeit offline. Heroku / EC2 war vor kurzem tagelang außer Betrieb.

Ich würde es in dieser Perspektive behalten, wenn Sie wirklich nur 5 Minuten pro Monat sprechen, machen Sie einen ziemlich guten Job als Sysadmin.


1

Sie haben Google bereits als Indizierungsfaktor erwähnt, aber es kann sich auch lohnen, die Auswirkungen der Latenz / Reaktionszeit der Website auf die Suchmaschinenoptimierung zu berücksichtigen. Es ist eine Black Box und das alles, so schwer zu quantifizieren - aber für das, was es wert ist, hält Matt Cutts es für ein One-Per-Center . Ich würde mir mehr Sorgen um den Ruf machen, wie andere gesagt haben.


1

Denken Sie daran, dass HA ebenso wie Sicherheit kein Produkt, sondern ein Prozess ist.

Beispielsweise führt die Datenbankreplikation nur zu dem Punkt, an dem jeder Spiegel der Datenbank für sich selbst fortgesetzt werden kann. Sie benötigen jedoch auch eine Strategie für die Neusynchronisierung, nachdem ausgefallene Komponenten ersetzt wurden.

Betrachten Sie als Beispiel ein Bestellsystem: Der Kunde gibt eine Bestellung auf, und während der Verarbeitung fällt das physische System aus, mit dem er gesprochen hat, nachdem die Bestellinformationen in seiner lokalen Kopie der Datenbank gespeichert wurden. Ungeduldig drückt der Kunde erneut "submit" und wird zu einem anderen Server geleitet, der die Bestellung annimmt. Wenn Ihre Datenbanken durch einfaches Wiederholen der fehlenden INSERT-Anweisungen auf der anderen Seite erneut synchronisiert werden, wird die Reihenfolge dupliziert, was möglicherweise nicht Ihren Wünschen entspricht.

Wie @Slartibartfast vorschlug, läuft alles auf eine wirtschaftliche Entscheidung hinaus. Ich würde jedoch empfehlen, dass Sie hier auch einige Jahre in der Zukunft planen. Wenn Sie dann eine ordnungsgemäße HA-Einrichtung benötigen, ist jetzt ein guter Zeitpunkt, Ressourcen für die Vorbereitungsarbeiten bereitzustellen.


1

Während Sie darüber nachdenken, denken Sie darüber nach, eine "Fail-Wal" -Seite einzurichten.

Es gibt viele Möglichkeiten, dies zu tun, aber die aws-Kombination aus route53 und s3 funktioniert auf meinen kleinen Websites gut.

Ich richte die Domain mit Healthchecks so ein, dass DNS bei Fehlern Benutzer an Benutzer auf eine statische HTML-Seite in s3 sendet. Kostet so gut wie nichts.

Nach meiner Erfahrung macht es für die Nutzer einen großen Unterschied, wenn auf Ihrer Website "Es tut mir leid, aber wir arbeiten daran" steht. Ein Twitter-Konto, mit dem Sie sogar mit Benutzern kommunizieren können, ist noch besser.

Dies trägt wesentlich dazu bei, den "Reputationsverlust" zu mildern, der die wichtigsten Auswirkungen eines Ausfalls sein kann.

siehe: https://aws.amazon.com/blogs/aws/create-a-backup-website-using-route-53-dns-failover-and-s3-website-hosting/ für einen Leitfaden für ihre Einrichtung.

Das soziale Failover von DynDns http://dyn.com/managed-dns/social-failover/ ist ähnlich.

Sie könnten Ihre eigenen und Ihre Integritätsprüfungen durchführen und dann die DNS-Änderungen per Skript ausführen, vorausgesetzt, Ihre DNS-Einträge haben eine niedrige TTL und Sie haben eine Möglichkeit, sie programmgesteuert zu bearbeiten.


Müssen diese Integritätsprüfungen auf demselben Server ausgeführt werden, auf dem sich DNS befindet? Ich kann mir nicht vorstellen, wie eine bedingte DNS-Aktualisierung durchgeführt wird.
Dennis Gorelik

@DennisGorelik nicht unbedingt, aber Ihre DNS-Einträge benötigen eine kurze TTL und was auch immer Ihr Gesundheitscheck tut, muss in der Lage sein, die Einträge schnell zu ändern. Die Antwort wurde mit weiteren Informationen zum Erreichen dieses Ziels aktualisiert.
Nath

Ein kurzes TTL für DNS in Kombination mit einer Abhängigkeit von der Integritätsprüfung kann das Gesamtsystem etwas instabiler machen (es kann auch dann wechseln, wenn der Hauptserver einwandfrei funktioniert). Dies kann die Situation für die Endbenutzer verschlimmern und nicht verbessern.
Dennis Gorelik

Kurzes TTL sollte für sich genommen kein Problem für einen anständigen DNS-Anbieter sein, und wenn Sie einen ziemlich niedrigen Grenzwert für Ihre Gesundheitsprüfungen festlegen (z. B. Failover, wenn 10 Minuten lang keine http 200s vorhanden sind), ist die Stabilität kein Problem. Alternativ können Sie den Healthchecking-Teil überspringen und eine manuelle Umschaltung vornehmen. Dies bedeutet einen längeren Zeitraum, in dem Ihre Benutzer eine Zeitüberschreitung für die Verbindung und andere hässliche Fehler, aber keine Chance auf Fehlalarme erhalten.
Nath

0

Haben Sie darüber nachgedacht, so etwas wie EC2 zu verwenden, mit dem Sie flexibel skalieren und auch Ihre Nachteile zunichte machen können? Es ist letztendlich eine wirtschaftliche Entscheidung, ob sich der Einsatz von EC2 lohnt oder nicht, aber es ist zumindest eine Option, die in Betracht gezogen werden muss.


-2

Um Datenverlust zu vermeiden, sollten Sie sich vor Clustern mit RAID-Konfigurationen befassen. Sie sollten auch eine Failover-IP konfigurieren, mit der Sie im Katastrophenfall von einem Server auf einen anderen wechseln können, ohne auf die DNS-Weitergabe warten zu müssen.


woher kommt das? Was lässt Sie denken, dass das Poster RAID nicht bereits verwendet?
Chopper3

Chopper3. Ich sagte nur, dass Raid sein Problem mit dem Datenverlust lösen würde.
14.

2
Wie? wenn eine Festplatte sicher starb, aber was ist, wenn sein Controller
kaputt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.