Frage 100% Verfügbarkeit für eine Webanwendung


Wir haben heute eine interessante "Anforderung" von einem Kunden erhalten.

Sie wollen 100% Verfügbarkeit mit außerhalb der Website Failover in einer Webanwendung. Aus Sicht unserer Webanwendung ist dies kein Problem. Es wurde entwickelt, um über mehrere Datenbankserver hinweg skalieren zu können.

Von einem Netzwerkproblem kann ich jedoch nicht herausfinden, wie es funktioniert.

Kurz gesagt, wird die Anwendung auf Servern im Netzwerk des Kunden leben. Es wird von internen und externen Personen zugegriffen. Sie möchten, dass wir eine Off-Site-Kopie des Systems führen, die im Falle eines schwerwiegenden Fehlers in ihren Räumlichkeiten sofort übernommen und übernommen wird.

Jetzt wissen wir, dass es absolut keine Möglichkeit gibt, es für interne Leute (Brieftaube?) Zu lösen, aber sie wollen, dass die externen Benutzer nicht einmal bemerken.

Ehrlich gesagt, habe ich nicht die geringste Ahnung, wie das möglich sein könnte. Es scheint, dass, wenn sie die Internetverbindung verlieren, wir eine DNS-Änderung vornehmen müssen, um den Datenverkehr an die externen Maschinen weiterzuleiten ... Was natürlich Zeit kostet.

Ideen?

AKTUALISIEREN

Ich hatte heute eine Besprechung mit dem Kunden und sie haben über das Thema geklärt.

Sie blieben bei der 100% -Nummer und sagten, dass die Anwendung auch im Falle einer Flut aktiv bleiben sollte. Diese Anforderung tritt jedoch nur dann ein, wenn wir sie für sie bereitstellen. Sie sagten, sie würden die Verfügbarkeitszeit bewältigen, wenn die Anwendung vollständig auf ihren Servern läuft. Sie können meine Antwort erraten.


310
2017-09-29 00:31


Ursprung


Unterschätzen Sie nicht die großen Ausfallzeiten, die durch Hacking verursacht werden, schauen Sie sich Sony und das PlayStation-Netzwerk an. Sie können garantieren, dass sie die gleiche% 100-Uptime-Idee und das Geld / die Hardware haben, um dies zu untermauern. Klären Sie mit dem Kunden, dass eine 100% ige Verfügbarkeit keine realistische Erwartung ist. Sogar Google-Techniker würden zögern, "100% Verfügbarkeit" zu murmeln. ein Hinweis BTW ist in der Verwendung von dynamischen DNS zu suchen, sie nur für 60 Sekunden zwischenspeichern, sollte das Betriebssystem und lokale DNS-Server enthalten. - Silverfire
Ich würde persönlich LAUF von diesem Kunden so schnell wie möglich. Ich vermute, dass dies nicht die letzte verrückte Idee sein wird, die sie haben könnten (aus technologischer Sicht). - GregD
Ich wünschte, ich könnte Ihren Kunden runterladen. - joeqwerty
Wenn Sie 100% Verfügbarkeit herausfinden, lassen Sie es mich wissen. Ich werde ein Geschäft damit erstellen und es an Google verkaufen. Es ist unmöglich, 100% zu garantieren. Selbst Unternehmen wie Microsoft, Amazon oder Google werden nicht so hoch gehen, weil sie wissen, dass es unmöglich ist. Das Beste, was ich gesehen habe, ist 99,999% und sogar das ist eine Strecke (5 Minuten im Jahr). Das Beste, was Sie wahrscheinlich tun könnten, ist 99,99% zuverlässig. - Matt
Machen Sie einfach einen unglaublich hohen Preis, um ihre wahnsinnige Anfrage zu stellen. Das wird sie wahrscheinlich wieder zur Besinnung bringen. Entweder als, oder es wird sie davon abschicken, jemanden zu suchen, der bereit ist, sie anzulügen. - Nate C-K


Antworten:


Hier ist Wikipedia's handliches Diagramm der Verfolgung von Neunen:

enter image description here

Interessanterweise nur 3 der Top 20 Webseiten waren in der Lage, die mythischen 5 Neunen oder 99.999% Verfügbarkeit 2007 zu erreichen. Sie waren Yahoo, AOL und Comcast. In den ersten 4 Monaten des Jahres 2008 einige der meisten beliebte soziale Netzwerke, kam nicht mal annähernd dazu.

Aus der Grafik sollte ersichtlich sein, wie lächerlich das Streben nach 100% Laufzeit ist ...


363
2017-09-29 01:03



Pingdom überprüft auch nicht jede Sekunde. Darüber hinaus hatten diejenigen, die fünf Neunen erfüllten, wahrscheinlich lokale Störungen, die Pingdom möglicherweise nicht entdeckt hatte, oder Störungen, die einige Dienste nicht verfügbar machten, während sie immer noch auf Pings reagierten. - ceejayoz
Was an und für sich die fünf Neunen fragwürdig macht ... - GregD
Genau. Und sie haben $ Milliarden, um damit zu arbeiten! - ceejayoz
Entschuldigen Sie den Chat, aber die Frage des OPs war, wie man das Ziel der 100% -igen Verfügbarkeit auf technischer Ebene nicht konzeptionell anstreben kann. Ich bin mir sicher, dass er weiß, dass dies nicht immer möglich ist, weil die Hardware natürlich vorkommt und die Umwelt. Können wir ihm dabei helfen? - David d C e Freitas
Zum OP: Ich habe SLAs gesehen, die die Verfügbarkeit im Rahmen von "außerhalb der normalen Wartung" garantieren. Die normale Wartung ist natürlich geplante Ausfallzeit pro Monat für Updates, Patches usw., die normalerweise an ihrem am wenigsten ausgelasteten Tag des Monats während der am wenigsten ausgelasteten Zeiten des Monats (normalerweise mitten in der Nacht) auftreten. Sie müssen eine Art von Kennzahlen für ihr Geschäft in Bezug auf das Geschäft haben. Sie könnte bieten eine bessere Verfügbarkeit (4 Neunen) für sie nur während dieser Zeiten. - GregD


Bitten Sie sie, 100% zu definieren und wie sie gemessen wird. Über welchen Zeitraum. Sie meinen wahrscheinlich so nahe bei 100%, wie sie sich leisten können. Gib ihnen die Kosten.

Um zu erarbeiten. Ich habe im Laufe der Jahre mit Kunden über angeblich lächerliche Anforderungen diskutiert. In allen Fällen verwendeten sie nur eine nicht präzise genug Sprache.

Oft rahmen sie Dinge auf eine Weise ein, die absolut erscheinen - wie 100%, aber tatsächlich sind sie bei tieferen Untersuchungen vernünftig genug, um die Kosten / Nutzen-Analysen durchzuführen, die erforderlich sind, wenn sie mit Kosten zur Risikominderung konfrontiert werden. Sie zu fragen, wie sie die Verfügbarkeit messen, ist eine entscheidende Frage. Wenn sie das nicht wissen, dann sind Sie in der Lage, ihnen vorzuschlagen, dass dies zuerst definiert werden muss.

Ich würde den Kunden bitten zu definieren, was in Bezug auf geschäftliche Auswirkungen / Kosten passieren würde, wenn die Website unter folgenden Umständen ausfallen würde:

  • Zu ihren geschäftigsten Stunden für x Stunden
  • Zu ihren am wenigsten geschäftigen Stunden für x Stunden

Und auch, wie sie das messen werden.

Auf diese Weise können Sie mit ihnen arbeiten, um die richtige Stufe von 100% zu bestimmen. Ich vermute, dass man mit diesen Fragen die Prioritäten der anderen Anforderungen besser bestimmen kann. Beispielsweise möchten sie möglicherweise bestimmte SLA-Levels bezahlen und andere Funktionen kompromittieren, um dies zu erreichen.


186
2017-09-29 09:45



Einverstanden. Sie können nur "sehr hohe" Verfügbarkeit (obere 90s?) Mit einer ziemlich soliden Failover-Strategie bedeuten. Wenn nicht, dann würde eine Erklärung der damit verbundenen Kosten hoffentlich sie überzeugen ... - Martin Dow
+1 dafür, dass Sie keine voreiligen Schlüsse ziehen und stattdessen den Kunden bitten zu erklären, was er vorhat. - sleske
Ich stimme der Aussage "nicht voreilige Schlüsse" zu ... wenn der Kunde 100% Betriebszeit (minus planmäßige Wartung) meint, dann ist es das kann mehr eine vernünftige Anforderung sein. - Tim Reddy
Was die Auswirkungen auf das Geschäft angeht, kennen und verstehen wir ihr Geschäft tatsächlich vollständig und die Kosten, die mit dem Ausfall des Standorts verbunden sind, sind nicht finanzieller Natur. Mehr entlang der Linien der Eingeborenen, die mit Mistgabeln, möglichen Hindernissen usw. auftauchen;) Stellt euch vor, dass 40.000 Menschen schreiend an eurer Haustür auftauchen. Das wollen sie mit Leidenschaft vermeiden. - NotMe
@ChrisLively Umso mehr Grund ein ausgereiftes Verständnis von Risiko zu haben. Das dominierende Paradigma für die Sicherheitstechnik ist probabilistische Risikobewertung. Es gibt Systeme, die Tausende von Menschen töten (nicht nur nerven können), und sie haben immer noch eine niedrige, hoffentlich gut verstandene, aber nicht Null Wahrscheinlichkeit des Scheiterns. - poolie


Ihre Kunden sind verrückt. 100% Verfügbarkeit ist unmöglich egal wie viel Geld du dafür ausgegeben hast. Einfach und einfach - unmöglich. Schauen Sie sich Google, Amazon usw. an. Sie haben fast endlose Geldbeträge für ihre Infrastruktur und dennoch schaffen sie es, Ausfallzeiten zu haben. Sie müssen diese Nachricht an sie weitergeben, und wenn sie weiterhin darauf bestehen, dass sie angemessene Anforderungen stellen. Wenn sie das nicht erkennen etwas eine Menge Ausfallzeiten ist unvermeidlich, dann lass sie weg.

Das heißt, Sie scheinen die Mechanismen der Skalierung / Verteilung der Anwendung selbst zu haben. Der Netzwerkteil muss redundante Uplinks zu verschiedenen ISPs beinhalten, eine ASN- und IP-Zuteilung erhalten und sich in BGP und echte Routing-Ausrüstung vertiefen, so dass der IP-Adressraum bei Bedarf zwischen ISPs wechseln kann.

Dies ist offensichtlich eine sehr knappe Antwort. Sie haben keine Erfahrung mit Anwendungen, die diese Betriebszeit erfordern, also müssen Sie wirklich einen Profi hinzuziehen, wenn Sie irgendwo in die Nähe der mythischen 100% Verfügbarkeit kommen wollen.


141
2017-09-29 00:39



Einverstanden. Total. Verrückt. - jdw
früher haben sie ?? - Sirex
@Sirex Bezug nehmend auf das jüngste Experiment @ CERN, bei dem gefunden wurde, dass Neutrinos schneller als Licht reisen. Die Ergebnisse müssen jedoch noch von unabhängigen Wissenschaftlern bestätigt werden. - TC1
@ TC1 Ich wette dich 200 $ das klappt nicht. - dpatchery
@ErikA Ein Antrag auf 100% Verfügbarkeit weist auf Unkenntnis der technischen Eigenschaften von Systemen hin. Das ist in Ordnung, denn der Job des Kunden ist, was auch immer sie tun. Ihre Aufgabe ist es, IT-Systeme zu entwickeln. Schwierige Kunden wie diese können Albträume sein, aber sie können auch Ihre besten Kunden werden. - duffbeer703


Nun, das ist definitiv eine interessante Sache. Ich bin mir nicht sicher, ob ich mich vertraglich zu einer 100% -igen Betriebszeit verpflichten würde, aber wenn ich denken müsste, würde es in etwa so aussehen:

Beginnen Sie mit der öffentlichen IP-Adresse eines Load-Balancers, der vollständig aus dem Netzwerk entfernt ist, und erstellen Sie mindestens zwei von ihnen, sodass Sie einen Failover für das andere ausführen können. Ein Programm wie Heatbeart kann beim automatischen Failover helfen.

Varnish ist in erster Linie als Caching-Lösung bekannt, bietet aber auch einen sehr guten Lastenausgleich. Vielleicht wäre das eine gute Wahl, um den Lastausgleich zu bewältigen. Es kann so eingerichtet werden, dass 1 bis n Backends optional in Directors gruppiert sind, die entweder nach dem Zufallsprinzip oder nach dem Round-Robin-Prinzip geladen werden. Varnish kann intelligent genug gemacht werden, um die Gesundheit jedes Backends zu überprüfen und ungesunde Backends aus dem Loop zu werfen, bis es wieder online ist. Die Back-Ends müssen nicht im selben Netzwerk sein.

Ich bin gerade in Elastic IPs in Amazon EC2 verliebt, also würde ich wahrscheinlich meine Load Balancer in EC2 in verschiedenen Regionen oder zumindest in verschiedenen Verfügbarkeitszonen in der gleichen Region bauen. Das würde Ihnen die Möglichkeit geben, manuell (Gott bewahre) einen neuen Load-Balancer hochzufahren, wenn Sie die bestehende A-Record-IP in die neue Box verschieben müssten.

Varnish kann SSL jedoch nicht beenden, wenn Sie also Bedenken haben, sollten Sie sich stattdessen etwas wie Nginx ansehen.

Sie können die meisten Ihrer Backends im Netzwerk Ihres Kunden und einem oder mehreren außerhalb ihres Netzwerks haben. Ich glaube, aber ich bin nicht 100% sicher, dass Sie die Backends so priorisieren können, dass die Maschinen Ihrer Kunden Priorität erhalten, bis sie alle ungesund sind.

An dieser Stelle würde ich anfangen, wenn ich diese Aufgabe hätte und sie zweifellos verfeinern würde, wenn ich weitermache.

Wie @ErikA jedoch sagt, ist es das Internet und es wird immer Teile des Netzwerks geben, die außerhalb Ihrer Kontrolle liegen. Du solltest sicherstellen, dass dein legales Recht dich nur mit Dingen verbindet, die unter deiner Kontrolle stehen.


54
2017-09-29 00:47



Eine Zeit lang habe ich über Amazon und MS nach einer Cloud-Bereitstellung nachgedacht, aber beide hatten in den letzten Monaten größere Ausfälle. SSL ist kritisch. - NotMe
Wenn Sie Amazon nutzen möchten, möchten Sie Ihre Maschinen auf jeden Fall in den fünf verfügbaren Zonen verteilen. Es ist ziemlich unwahrscheinlich, dass alle ihre Zonen gleichzeitig ausgehen. - jdw
+1 für die tatsächliche Bearbeitung der Hauptfrage des OP. - Phil
Sie werden immer einen Punkt des Scheiterns haben, jdw, solange es ein nicht-verteiltes Ding in der Kette gibt (in Ihrem Fall Herzschlag, es sei denn, Sie haben mehrere Instanzen auf Remote-Rechnern, die sich gegenseitig sowie Ihre überwachen) Server, die jeder von ihnen wegen Netzwerkproblemen entlang des Routings sehen oder nicht sehen kann). Das bringt uns zu "Ausfallzeiten". Die Server können betriebsbereit sein und für den Client immer noch nicht verfügbar sein, ohne dass ein Heartbeat ihn jemals erkennt, wenn der Fehler nicht im Routingpfad enthalten ist. - jwenting
Einverstanden. Wie JEDER andere darauf hingewiesen hat, gibt es keine 100% ige Verfügbarkeit. Alles, was Sie tun können, ist zu versuchen und was ich beschrieben habe ist, wie ich anfangen würde zu versuchen. - jdw


Kein Problem - leicht überarbeitete Vertragsformulierung:

... garantieren eine Verfügbarkeit von 100% (auf Null Kommastellen gerundet).


29
2017-09-29 10:13



+1 für die Notiz, dass 100% nicht 100,0% oder 100.000% usw. ist. Die Dezimalziffern sind wichtig, sie geben die Genauigkeit an;) - Danubian Sailor
Gemäß einigen Konventionen hat "100%" nur eine signifikante Zahl, so dass alle Zahlen zwischen der Hälfte und einer Eins auf "100%" runden; 50% würden auf 100% runden. - Thomas Levine
Abhängig vom Standard zum Zählen werden einige sagen, dass 50% zwei sinnvolle Zahlen haben, wobei 100% drei sinnvolle Zahlen haben. 50,5 und 100 sind daher genauso genau. Andere zählen Ziffern nach dem Dezimalpunkt. Dann werden 50,5 und 100,4 genauso genau sein. Wenn nicht anders angegeben würde ich annehmen, dass 100% 99,5% und höher ist. 100,0% sind 99,95% und mehr usw. - Tillebeck


Hinzufügen oconnores Antwort von Hacker Nachrichten

Ich verstehe nicht, was das Problem ist. Der Kunde möchte, dass Sie ein Desaster planen, und sie sind nicht mathematisch orientiert, so dass die Frage nach 100% Wahrscheinlichkeit vernünftig klingt. Der Ingenieur, wie es Ingenieure gerne tun würden, erinnerte sich an seinen ersten Tag von prob & stat 101, ohne zu berücksichtigen, dass der Klient dies nicht tun würde. Wenn sie das sagen, denken sie nicht über den nuklearen Winter nach, sie denken daran, dass Fred seinen Kaffee auf dem Büroserver abwirft, eine Festplatte ausfällt oder ein ISP herunterfährt. Darüber hinaus können Sie dies erreichen. Mit geografisch getrennten, unabhängigen, selbstüberwachenden Servern haben Sie grundsätzlich keine Ausfallzeiten. Mit 3 Servern, die mit einer unabhängigen (1) Drei-9-Zuverlässigkeit arbeiten, mit guten Failover-Modi, beträgt Ihre erwartete Ausfallzeit weniger als eine Sekunde pro Jahr (2). Selbst wenn dies alles gleichzeitig geschieht, befinden Sie sich immer noch in einem vernünftigen SLA für Web-Verbindungen und daher ist die Ausfallzeit praktisch nicht vorhanden. Der Kunde muss sich immer noch mit Szenarien des Jüngsten Tages befassen, aber Godzilla ausgeschlossen, er wird einen Dienst haben, der "immer" ist.

(1) Ein Server in LA ist einigermaßen unabhängig vom Server in Boston, aber ja, ich verstehe, dass es einen Schnittpunkt mit Atomkrieg gibt, chinesische Hacker das Stromnetz zusammenbrechen usw. Ich glaube nicht, dass Ihr Kunde verärgert sein wird diese.

(2) DNS-Failover kann einige Sekunden hinzufügen. Sie befinden sich immer noch in einem Szenario, in dem der Client einmal pro Jahr eine Anforderung erneut versuchen muss. Dies wiederum liegt in einem angemessenen SLA und wird normalerweise nicht als "Ausfallzeit" betrachtet. Mit einer Anwendung, die bei einem Fehler automatisch auf einen verfügbaren Knoten umleitet, kann dies nicht bemerkt werden.


25
2017-09-30 15:49



Das Problem ist, dass sie es im Vertrag sagen. Das bedeutet, wenn eine Katastrophe tut auftreten und Sie benötigen mehr als zehn Sekunden, um die Website wieder online zu bringen, über Backups, die sie stehen haben, um zu verklagen. - Shadur
@Shadur: Wenn sie Ja wirklich will es, dann musst du Ja wirklich lade sie auf. Verbreiten Sie die Server geografisch weit und breit, hoffentlich wird es keine Katastrophe überall geben. - Jungle Hunter
Ich habe eine Website gesehen, die 100% Verfügbarkeitsgarantie oder Ihr Geld zurück bietet. Der Trick war, dass sie eine Bootsladung geladen und in Monate aufgeteilt hatten. So werden einige Monate unbezahlt und Sie planen alles um diese herum und decken den Verlust mit den Monaten ab, die in Ordnung sind. - jldugger


Wenn Facebook und Amazon es nicht können, dann kannst du nicht. So einfach ist das.


25
2017-09-29 01:10



er könnte schlauer sein als alle ihre Leute zusammen, wer weiß: p - Matt
100% Uptime muss nicht so wörtlich sein - es bedeutet: 100% verfügbar während der Zeit, die benötigt wird. Zum Beispiel sollten Banksysteme immer verfügbar sein, und sie sind ziemlich gut. Nur weil sie einmal im Jahr für 1 Sekunde in die Wartung gehen, bedeutet das nicht, dass sie ihr 100% -iges Uptime-Ziel verfehlt haben. - David d C e Freitas
@DavidFreitas - Ich denke in Verträgen ist es normalerweise ziemlich wörtlich ... - UpTheCreek
@Matt, nur weil Facebook / Amazon es nicht tun kann, bedeutet nicht, dass eine kleinere Seite es nicht tun kann. Viele große Websites sind mit wesentlich schwierigeren Problemen konfrontiert als kleinere Websites. - Xorlev
Also, was Sie sagen, ist, dass Sie nicht 100% uptime hatten, da Sie einige Clients hatten, die Fehler hatten. plus DNS ist kein sofortiger Schalter, da Sie ISPs haben, die kurze TTLs ignorieren - Mike