Wir haben heute eine interessante "Anforderung" von einem Kunden erhalten.
Sie wollen 100% Uptime mit Off-Site - Failover auf einer Web - Anwendung. Aus Sicht unserer Webanwendung ist dies kein Problem. Es wurde entwickelt, um eine Skalierung auf mehrere Datenbankserver usw. zu ermöglichen.
Aufgrund eines Netzwerkproblems kann ich jedoch nicht herausfinden, wie es funktioniert.
Kurz gesagt, die Anwendung befindet sich auf Servern im Netzwerk des Clients. Der Zugriff erfolgt sowohl durch interne als auch externe Personen. Sie möchten, dass wir eine Kopie des Systems außerhalb des Standorts aufbewahren, die im Falle eines schwerwiegenden Ausfalls in ihren Räumlichkeiten sofort abgeholt und übernommen wird.
Jetzt wissen wir, dass es für interne Personen (Brieftauben?) Absolut keine Möglichkeit gibt, eine Lösung zu finden, aber sie möchten, dass die externen Benutzer dies nicht einmal bemerken.
Ehrlich gesagt habe ich keine Ahnung, wie das möglich sein könnte. Wenn sie die Internetverbindung verlieren, müssten wir anscheinend eine DNS-Änderung vornehmen, um den Datenverkehr an die externen Computer weiterzuleiten ... Das braucht natürlich Zeit.
Ideen?
AKTUALISIEREN
Ich hatte heute ein Gespräch mit dem Kunden und er hat das Problem geklärt.
Sie hielten sich an die 100% -Zahl und sagten, dass die Anwendung auch im Falle einer Überschwemmung aktiv bleiben sollte. Diese Anforderung tritt jedoch nur dann in Kraft, wenn wir sie für sie hosten. Sie sagten, sie würden die Verfügbarkeitsanforderungen erfüllen, wenn die Anwendung vollständig auf ihren Servern läuft. Sie können meine Antwort erraten.
quelle
Antworten:
Hier ist das handliche Diagramm von Wikipedia über das Streben nach Neunen:
Interessanterweise erreichten nur drei der 20 besten Websites 2007 die mythischen 5 Neun oder 99,999% Betriebszeit. Dies waren Yahoo, AOL und Comcast. In den ersten vier Monaten des Jahres 2008 kamen einige der beliebtesten sozialen Netzwerke dem nicht einmal nahe.
Aus dem Diagramm sollte ersichtlich sein, wie lächerlich das Streben nach 100% Betriebszeit ist ...
quelle
Bitten Sie sie, 100% zu definieren und festzulegen, wie es in welchem Zeitraum gemessen werden soll. Sie bedeuten wahrscheinlich so nahe an 100%, wie sie sich leisten können. Gib ihnen die Kosten.
Ausarbeiten. Ich war über die Jahre mit Kunden in Gesprächen mit vermeintlich lächerlichen Anforderungen. In allen Fällen verwendeten sie tatsächlich nur eine nicht genau genug gesprochene Sprache.
Sehr oft rahmen sie Dinge auf absolut erscheinende Weise ein - wie 100% - aber tatsächlich sind sie nach eingehender Untersuchung angemessen genug, um die Kosten-Nutzen-Analysen durchzuführen, die erforderlich sind, wenn Kalkulationen zur Risikominderung vorgelegt werden. Die Frage, wie die Verfügbarkeit gemessen werden soll, ist von entscheidender Bedeutung. Wenn sie das nicht wissen, 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 den folgenden Umständen ausfallen würde:
Und auch, wie sie das messen werden.
Auf diese Weise können Sie mit ihnen zusammenarbeiten, um den richtigen Wert für "100%" zu ermitteln. Ich vermute, dass sie durch diese Art von Fragen die Prioritäten ihrer anderen Anforderungen besser bestimmen können. Beispielsweise möchten sie möglicherweise bestimmte SLA-Stufen bezahlen und andere Funktionen in Frage stellen, um dies zu erreichen.
quelle
Ihre Kunden sind verrückt. Eine 100% ige Verfügbarkeit ist unmöglich, egal wie viel Geld Sie dafür ausgeben. Schlicht und einfach - unmöglich. Schauen Sie sich Google, Amazon usw. an. Sie haben fast unendlich viel Geld für ihre Infrastruktur und schaffen es dennoch, Ausfallzeiten zu haben. Sie müssen ihnen diese Nachricht übermitteln, und wenn sie weiterhin darauf bestehen, dass sie angemessene Forderungen stellen. Wenn sie nicht erkennen, dass eine gewisse Ausfallzeit unvermeidlich ist, lassen Sie sie los.
Das heißt, Sie scheinen die Mechanik der Skalierung / Verteilung der Anwendung selbst zu haben. Der Netzwerkteil muss redundante Uplinks zu verschiedenen ISPs beinhalten, eine ASN- und IP-Zuweisung erhalten und in BGP und realer Routing-Ausrüstung tiefgreifend sein, damit der IP-Adressraum bei Bedarf zwischen ISPs verschoben werden kann.
Dies ist ganz offensichtlich eine sehr knappe Antwort. Sie haben noch keine Erfahrung mit Anwendungen, die diese Verfügbarkeit erfordern. Sie müssen also einen Fachmann hinzuziehen, wenn Sie die mythische Verfügbarkeit von 100% erreichen möchten.
quelle
Nun, das ist definitiv interessant. Ich bin mir nicht sicher, ob ich mich vertraglich zur 100% igen Verfügbarkeit verpflichten möchte, aber wenn ich müsste, würde es meiner Meinung nach ungefähr so aussehen:
Beginnen Sie mit der öffentlichen IP auf einem Load Balancer, der vollständig aus dem Netzwerk entfernt ist, und erstellen Sie mindestens zwei davon, damit ein Failover auf das andere durchgeführt werden kann. Ein Programm wie Heatbeart kann beim automatischen Failover dieser Programme helfen.
Lack ist in erster Linie als Caching-Lösung bekannt, führt aber auch einen angemessenen Lastenausgleich durch. Vielleicht wäre das eine gute Wahl, um den Lastausgleich zu erledigen. Es kann so eingerichtet werden, dass 1 bis n Backends optional in Direktoren gruppiert sind, die den Lastenausgleich entweder zufällig oder im Round-Robin-Modus durchführen. Lack kann intelligent genug gemacht werden, um den Zustand jedes Backends zu überprüfen und ungesunde Backends aus der Schleife zu entfernen, bis er wieder online ist. Die Backends müssen sich nicht im selben Netzwerk befinden.
Ich bin heutzutage ein bisschen verliebt in die Elastic IPs in Amazon EC2, daher würde ich wahrscheinlich meine Load Balancer in EC2 in verschiedenen Regionen oder zumindest in verschiedenen Verfügbarkeitszonen in derselben Region bauen. Das würde Ihnen die Möglichkeit geben, manuell (Gott bewahre) einen neuen Load Balancer hochzufahren, wenn Sie die vorhandene A-Record-IP in die neue Box verschieben müssten.
Varnish kann SSL jedoch nicht kündigen. Wenn dies ein Problem ist, sollten Sie sich stattdessen etwas wie Nginx ansehen.
Sie könnten die meisten Ihrer Backends in Ihrem Client-Netzwerk und eines oder mehrere außerhalb ihres Netzwerks haben. Ich glaube, aber ich bin mir nicht hundertprozentig sicher, dass Sie die Backends priorisieren können, damit die Maschinen Ihrer Kunden Priorität erhalten, bis sie alle nicht mehr fehlerfrei sind.
Hier würde ich anfangen, wenn ich diese Aufgabe hätte und sie auf meinem Weg zweifellos verfeinern würde.
Wie @ErikA feststellt, ist es jedoch das Internet, und es wird immer Teile des Netzwerks geben, die außerhalb Ihrer Kontrolle liegen. Sie sollten sicherstellen, dass Ihr Legal Sie nur mit Dingen in Verbindung bringt, die unter Ihrer Kontrolle stehen.
quelle
Kein Problem - allerdings leicht überarbeiteter Vertragstext:
quelle
Wenn Facebook und Amazon es nicht können, dann können Sie es nicht. So einfach ist das.
quelle
Hinzufügen der Antwort von oconnore von Hacker News
Ich verstehe nicht, worum es geht. Der Kunde möchte, dass Sie sich auf eine Katastrophe einstellen, und sie sind nicht mathematisch orientiert. Daher klingt es vernünftig, nach einer Wahrscheinlichkeit von 100% zu fragen. Der Ingenieur erinnerte sich, wie es Ingenieure gerne tun würden, an seinen ersten Tag von prob & stat 101, ohne zu bedenken, dass der Kunde dies möglicherweise nicht tat. Wenn sie das sagen, denken sie nicht an nuklearen Winter, sondern daran, dass Fred seinen Kaffee auf den Büroserver wirft, eine Festplatte abstürzt oder ein ISP ausfällt. Darüber hinaus können Sie dies erreichen. Mit geografisch getrennten, unabhängigen, selbstüberwachenden Servern haben Sie im Grunde keine Ausfallzeiten. Bei 3 Servern, die mit einer unabhängigen Zuverlässigkeit (1) und 9 mit guten Failover-Modi arbeiten, liegt die erwartete Ausfallzeit unter einer Sekunde pro Jahr (2). Auch wenn dies alles auf einmal passiert, Sie befinden sich immer noch innerhalb einer angemessenen SLA für Webverbindungen und daher ist die Ausfallzeit praktisch nicht vorhanden. Der Kunde muss sich immer noch mit Doomsday-Szenarien auseinandersetzen, aber Godzilla schloss aus, er wird einen Service haben, der "immer" verfügbar ist.
(1) Ein Server in LA ist einigermaßen unabhängig vom Server in Boston, aber ich verstehe, dass es eine Kreuzung mit Atomkrieg, chinesischen Hackern, die das Stromnetz zum Absturz bringen usw. gibt diese.
(2) DNS-Failover kann einige Sekunden dauern. Sie befinden sich immer noch in einem Szenario, in dem der Client eine Anforderung einmal im Jahr wiederholen muss, was wiederum innerhalb eines angemessenen SLA liegt und normalerweise nicht mit "Ausfallzeit" gleichgesetzt wird. Bei einer Anwendung, die bei einem Ausfall automatisch zu einem verfügbaren Knoten umgeleitet wird, kann dies unbemerkt bleiben.
quelle
Sie werden nach etwas Unmöglichem gefragt.
Sehen Sie sich die anderen Antworten hier an, setzen Sie sich mit Ihrem Kunden zusammen und erklären Sie , warum dies unmöglich ist.
Wenn sie immer noch auf 100% Verfügbarkeit bestehen, informieren Sie sie höflich darüber, dass dies nicht möglich ist, und lehnen Sie den Vertrag ab. Sie werden ihre Nachfrage niemals befriedigen, und wenn der Vertrag nicht vollständig zum Erliegen kommt, werden Sie mit Strafen belegt.
quelle
Der Preis ist dementsprechend und im Vertrag wird festgelegt, dass Ausfallzeiten nach dem SLA zum von ihnen gezahlten Satz erstattet werden.
Der ISP bei meinem letzten Job hat das getan. Wir hatten die Wahl zwischen einem "normalen" DSL-Anschluss mit einer Verfügbarkeit von 99,9% für 40 US-Dollar pro Monat oder einem gebundenen T1-Trio mit einer Verfügbarkeit von 99,99% für 1100 US-Dollar pro Monat. Es gab häufige Ausfälle von mehr als 10 Stunden pro Monat, wodurch die Verfügbarkeit deutlich unter den 40 USD pro Monat für DSL lag. Wir erhielten jedoch nur eine Rückerstattung von ungefähr 15 USD, da dies der Stundensatz * für Stunden war. Sie machten sich wie Banditen aus dem Geschäft.
Wenn Sie 450.000 US-Dollar pro Monat für eine 100-prozentige Verfügbarkeit abrechnen und nur 99,999 Prozent erreichen, müssen Sie diese 324 US-Dollar erstatten. Ich bin bereit zu wetten, dass die Infrastrukturkosten bei 99,999% in der Nähe von 45.000 USD pro Monat liegen, vorausgesetzt, es handelt sich um vollständig verteilte Colos, mehrere Tier-1-Uplinks, Fancypants-Hardware usw.
quelle
Wenn Fachleute fragen, ob eine Verfügbarkeit von 99,999 Prozent jemals eine praktikable oder finanziell realisierbare Möglichkeit ist , dann ist eine Verfügbarkeit von 99,9999 Prozent noch weniger möglich oder praktisch. Geschweige denn 100%.
Sie werden das 100% -Verfügbarkeitsziel für einen längeren Zeitraum nicht erreichen. Sie können eine Woche oder ein Jahr damit durchkommen, aber dann passiert etwas und Sie werden zur Verantwortung gezogen. Der Ausfall kann von einem beschädigten Ruf (Sie haben versprochen, dass Sie nicht geliefert haben) bis hin zum Konkurs von Vertragsstrafen reichen.
quelle
Es gibt zwei Arten von Personen, die nach einer 100% igen Verfügbarkeit fragen:
Mein Rat, unter beiden Kliententypen schon oft zu leiden, ist, diesen Klienten nicht anzunehmen. Lassen Sie sie jemanden verrückt machen.
* Dieselbe Person ist möglicherweise nicht in Verlegenheit, wenn sie nach schneller als Licht Reisen, Perpetual Motion, Cold Fusion usw. fragt.
quelle
Ich würde mit dem Kunden kommunizieren, um herauszufinden, was genau 100% Verfügbarkeit bedeutet. Es ist möglich, dass sie nicht wirklich einen Unterschied zwischen 99% Betriebszeit und 100% Betriebszeit sehen. Für die meisten Leute (dh nicht für Serveradministratoren) sind diese beiden Nummern gleich.
quelle
100% Betriebszeit?
Folgendes benötigen Sie:
Mehrere (und redundante) DNS-Server, die auf mehrere Standorte auf der ganzen Welt verweisen, mit korrekten SLAs für jeden ISP.
Stellen Sie sicher, dass die DNS-Server ordnungsgemäß eingerichtet sind und TTL effektiv erkannt wird.
quelle
nslookup google.com
gibt 6 verschiedene IP-Adressen zur Redundanz zurück, falls einige von ihnen nicht funktionieren. Besuchen Sie auch RobTex.com, eine großartige Website, um sich die Konfigurationen bestimmter Domains anzusehen,Das ist einfach. Das Amazon EC2 SLA besagt eindeutig:
http://aws.amazon.com/ec2-sla/
Definieren Sie "Betriebszeit" einfach so, dass sie sich auf das gesamte Servicebündel bezieht, das Sie tatsächlich zu 100% in Betrieb halten können, und Sie sollten keine Probleme haben.
Es ist auch erwähnenswert, dass der gesamte Sinn eines SLA darin besteht, zu definieren, welche Verpflichtungen Sie haben und was passiert, wenn Sie diese nicht erfüllen können. Es ist egal, ob der Kunde 3 Neunen oder 5 Neunen oder eine Million Neunen verlangt - die Frage ist, was sie bekommen, wenn / wenn Sie nicht liefern können. Die offensichtliche Antwort besteht darin, eine Werbebuchung mit einer Verfügbarkeit von 100% zu dem fünffachen Preis bereitzustellen, den Sie berechnen möchten. Wenn Sie dieses Ziel verfehlen, erhalten sie eine vierfache Rückerstattung. Sie könnten punkten!
quelle
DNS-Änderungen nehmen nur Zeit in Anspruch, wenn sie so konfiguriert sind, dass sie Zeit in Anspruch nehmen. Sie können die TTL für einen Datensatz auf eine Sekunde festlegen. Sie müssen nur sicherstellen, dass Sie rechtzeitig auf DNS-Abfragen antworten und dass die DNS-Server diese Abfragen verarbeiten können.
Genau so funktioniert GTM in F5 Big IP - die DNS-TTL ist standardmäßig auf 30 Sekunden eingestellt, und wenn ein Mitglied des Clusters übernehmen muss, wird der DNS aktualisiert und die neue IP wird fast sofort übernommen. Maximal 30 Sekunden Ausfall, aber das ist der Randfall, der Durchschnitt wäre 15 Sekunden.
quelle
Sie wissen, dass das unmöglich ist.
Zweifellos ist der Kunde darauf ausgerichtet, "100%" zu sehen. Das Beste, was Sie tun können, ist, 100% zu versprechen, mit Ausnahme von [allen vernünftigen Gründen, die nicht Ihre Schuld sind].
quelle
Obwohl ich bezweifle, dass 100% möglich sind, möchten Sie vielleicht Azure (oder etwas mit einem ähnlichen SLA) als eine Möglichkeit in Betracht ziehen. Was geht ab:
Ihre Server sind virtuelle Maschinen. Wenn auf einem Server jemals ein Hardwareproblem auftritt, wird Ihre virtuelle Maschine auf eine neue Maschine verschoben. Der Load Balancer kümmert sich um die Umleitung, sodass der Kunde keine Ausfallzeiten sehen sollte (obwohl ich nicht sicher bin, wie sich Ihr Sitzungsstatus auswirken würde).
Trotz dieses Failovers grenzt der Unterschied zwischen 99,999 und 100 an Wahnsinn.
Sie müssen die volle Kontrolle über die folgenden Faktoren haben.
- Menschliche Faktoren, sowohl interne als auch externe, sowohl Bosheit als auch Impotenz. Ein Beispiel hierfür ist, dass jemand etwas in den Produktionscode pusht, wodurch ein Server heruntergefahren wird. Schlimmer noch, was ist mit Sabotage?
- Geschäftsprobleme. Was ist, wenn Ihr Provider nicht mehr im Geschäft ist oder vergisst, seine Stromrechnungen zu bezahlen, oder einfach beschließt, die Unterstützung Ihrer Infrastruktur ohne ausreichende Warnung einzustellen?
- Natur. Was ist, wenn nicht verwandte Tornados gleichzeitig genug Rechenzentren treffen, um die Backup-Kapazität zu überfordern?
- Eine völlig fehlerfreie Umgebung. Sind Sie sicher, dass es keinen Edge-Case mit einer Drittanbieter- oder Kernsystemsteuerung gibt, der sich nicht manifestiert hat, dies aber in Zukunft noch tun könnte?
- Selbst wenn Sie die volle Kontrolle über die oben genannten Faktoren haben, sind Sie sicher, dass die Software / Person, die dies überwacht, Sie nicht mit falschen Negativen belastet, wenn Sie prüfen, ob Ihr System in Betrieb ist?
quelle
Ehrlich gesagt ist 100% völlig verrückt, ohne dass ein Hacking-Angriff ins Wanken gerät. Am besten tun Sie das, was Google und Amazon tun, indem Sie über eine geoverteilte Hosting-Lösung verfügen, bei der Ihre Site und Ihre Datenbank auf mehreren Servern an mehreren geografischen Standorten repliziert werden. Dies wird alles andere als eine große Katastrophe garantieren, wie zum Beispiel, dass das Internet-Backbone auf eine Region (die von Zeit zu Zeit vorkommt) oder etwas nahezu Apokalyptisches zerschnitten wird.
Ich würde eine Klausel für genau solche Fälle (DDOS, Internet-Backbone-Kürzung, apokalyptischer Terroranschlag oder großer Krieg usw.) einfügen.
Ansonsten werfen Sie einen Blick auf Amazon S3- oder Rackspace-Cloud-Services. Im Wesentlichen bietet das Cloud-Setup nicht nur Redundanz an jedem Standort, sondern auch Skalierbarkeit und Geoverteilung des Datenverkehrs sowie die Möglichkeit, fehlgeschlagene Geobereiche umzuleiten. Nach meinem Verständnis kostet die Geodistribution jedoch mehr Geld.
quelle
Ich wollte der Party "Es kann (theoretisch) getan werden" nur eine weitere Stimme hinzufügen .
Ich würde keinen Vertrag abschließen, in dem dies angegeben ist, egal wie viel sie für mich bezahlt haben, aber als Forschungsproblem hat es einige ziemlich interessante Lösungen. Ich kenne mich nicht gut mit Netzwerken aus, um die einzelnen Schritte zu erläutern, aber ich stelle mir vor, dass eine Kombination aus netzwerkbezogenen Konfigurationen + Failover der Elektro- / Hardware-Verkabelung + Software-Failover möglicherweise in einigen Konfigurationen oder anderen Abläufen tatsächlich zum Erfolg führen würde.
Es gibt fast immer irgendwo in einer Konfiguration eine einzelne Fehlerstelle. Wenn Sie jedoch hart genug arbeiten, können Sie diese Fehlerstelle so verschieben, dass sie "live" repariert werden kann (dh der DNS-Stamm geht aus, aber die Werte werden weiterhin zwischengespeichert) überall sonst, so dass Sie Zeit haben, es zu beheben).
Nochmals, nicht zu sagen, dass es machbar ist. Mir hat einfach nicht gefallen, wie keine einzige Antwort die Tatsache angesprochen hat, dass es kein "Ausweg" ist.
quelle
Überdenken Sie Ihre Methode zur Messung der Verfügbarkeit und arbeiten Sie dann mit Ihrem Kunden zusammen, um aussagekräftige Ziele festzulegen .
Wenn Sie eine große Website betreiben, ist die Verfügbarkeit überhaupt nicht sinnvoll. Wenn Sie 10 Minuten lang Anfragen stellen, wenn Ihre Kunden sie am meisten benötigen (Verkehrsspitze), kann dies für das Unternehmen schädlicher sein als ein stundenlanger Ausfall um 3 Uhr morgens an einem Sonntag.
Manchmal messen große Web-Unternehmen die Verfügbarkeit oder Zuverlässigkeit anhand der folgenden Metriken:
Die Verfügbarkeit sollte nicht mit Probesonden gemessen werden. Dies kann eine externe Entität wie Pingdom und Pingability melden. Verlassen Sie sich nicht nur darauf. Wenn Sie es richtig machen möchten, sollte jede einzelne Abfrage zählen . Messen Sie Ihre Verfügbarkeit anhand Ihres tatsächlichen, wahrgenommenen Erfolgs.
Am effizientesten ist es, Protokolle oder Statistiken von Ihrem Load-Balancer zu erfassen und die Verfügbarkeit anhand der oben genannten Metriken zu berechnen.
Der Prozentsatz der gelöschten Anfragen sollte auch für Ihre Statistiken gelten. Es kann im selben Bucket wie serverseitige Fehler abgerechnet werden. Wenn es Probleme mit dem Netzwerk oder mit einer anderen Infrastruktur wie DNS oder den Load Balancern gibt, können Sie mithilfe einfacher Berechnungen abschätzen, wie viele Abfragen Sie verloren haben . Wenn Sie für diesen Wochentag X-Abfragen erwartet haben, aber X-1000 erhalten haben, haben Sie wahrscheinlich 1000 Abfragen gelöscht. Zeichnen Sie Ihren Datenverkehr in Diagramme mit Abfragen pro Minute (oder Sekunde). Wenn Lücken auftreten, haben Sie Abfragen gelöscht. Verwenden Sie die Basisgeometrie , um die Fläche dieser Lücken zu messen. Auf diese Weise erhalten Sie die Gesamtzahl der abgelegten Abfragen.
Besprechen Sie diese Methode mit Ihrem Kunden und erläutern Sie deren Vorteile. Stellen Sie eine Basislinie ein, indem Sie deren aktuelle Verfügbarkeit messen. Ihnen wird klar, dass 100% ein unmögliches Ziel ist.
Anschließend können Sie einen Vertrag unterzeichnen, der auf Verbesserungen an der Baseline basiert. Angenommen, sie sind derzeit zu 95% verfügbar, könnten Sie versprechen, die Situation um das Zehnfache zu verbessern, indem Sie 98,5% erreichen.
Hinweis: Diese Art der Verfügbarkeitsmessung hat Nachteile. Erstens ist das Sammeln von Protokollen, das Verarbeiten und Generieren der Berichte möglicherweise nicht trivial, es sei denn, Sie verwenden dafür vorhandene Tools. Zweitens können Anwendungsfehler Ihre Verfügbarkeit beeinträchtigen. Wenn die Qualität der Anwendung niedrig ist, treten mehr Fehler auf. Die Lösung hierfür besteht darin, nur die vom Load Balancer erstellten 500er zu berücksichtigen, anstatt die aus der Anwendung stammenden.
Auf diese Weise werden die Dinge vielleicht etwas kompliziert, aber es geht noch einen Schritt weiter, als nur die Verfügbarkeit Ihres Servers zu messen .
quelle
Während einige Leute hier bemerkten, dass 100% verrückt oder unmöglich sind , verpassten sie irgendwie den wahren Punkt. Sie argumentierten, dass der Grund dafür die Tatsache ist, dass selbst die besten Unternehmen / Dienstleistungen dies nicht erreichen können.
Nun, es ist viel einfacher als das. Es ist mathematisch unmöglich .
Alles hat eine Wahrscheinlichkeit. An allen Orten, an denen Sie Ihre Server aufbewahren, kann es zu einem gleichzeitigen Erdbeben kommen, das alle zerstört. Zugegeben, es ist eine lächerlich kleine Wahrscheinlichkeit, aber nicht 0. Alle Ihre Internetanbieter könnten einem gleichzeitigen Terror- / Cyberangriff ausgesetzt sein. Wiederum nicht sehr wahrscheinlich, aber auch nicht Null. Was auch immer Sie bereitstellen, Sie können ein Szenario mit einer Wahrscheinlichkeit ungleich Null erhalten, das den gesamten Service beeinträchtigt. Aus diesem Grund kann Ihre Betriebszeit auch nicht 100% betragen.
quelle
Lesen Sie ein Buch über die Qualitätskontrolle in der Fertigung anhand statistischer Stichproben. Eine allgemeine Diskussion in diesem Buch, deren Konzepten jeder Manager in einem allgemeinen Statistikkurs im College ausgesetzt gewesen wäre, diktiert die Kosten, die von einer Exzession von tausend auf eine von zehntausend auf eine von einer Million auf eine zu gehen 1 in einer Milliarde steigt exponentiell. Im Wesentlichen würde die Fähigkeit, eine 100% ige Verfügbarkeit zu erreichen, eine nahezu unbegrenzte Menge an Geld kosten, ähnlich wie die Menge an Kraftstoff, die erforderlich ist, um ein Objekt auf Lichtgeschwindigkeit zu bringen.
Aus Performance-Engineering-Sicht würde ich die Forderung als nicht prüfbar und unvernünftig ablehnen, dass dieser Ausdruck eher ein Wunsch als eine wahre Forderung ist. Angesichts der Anwendungsabhängigkeiten, die außerhalb von Anwendungen für Netzwerke, Namensauflösung, Routing, Fehler, die von zugrunde liegenden Architekturkomponenten oder Entwicklungstools stammen, besteht, ist es praktisch unmöglich, dass jemand eine 100% ige Verfügbarkeit garantiert.
quelle
Ich glaube nicht, dass der Kunde tatsächlich eine Verfügbarkeit von 100% oder sogar 99,999% wünscht. Wenn Sie sich ansehen, was sie beschreiben, sprechen sie davon, dort anzuhalten, wo sie aufgehört haben, wenn ein Meteor sein Rechenzentrum vor Ort verlässt.
Wenn die Anforderung ist, dass externe Personen es nicht einmal bemerken, wie drastisch muss das sein? Würde es akzeptabel sein, eine Ajax-Anfrage erneut zu starten und dem Endbenutzer 30 Sekunden lang einen Spinner anzuzeigen?
Das sind die Dinge, die den Kunden interessieren. Wenn der Kunde tatsächlich an präzise SLAs dachte, wusste er genug, um dies als 99,99 oder 99,999 auszudrücken.
quelle
meine 2 Cent. Ich war für eine sehr beliebte Website eines Fortune-5-Unternehmens verantwortlich, das Anzeigen für den Super Bowl herausbrachte. Ich musste mich mit riesigen Verkehrsspitzen auseinandersetzen und die Art und Weise, wie ich das löste, war, einen Dienst wie Akamai zu nutzen. Ich arbeite nicht für Akamai, aber ich fand ihren Service sehr gut. Sie haben ein eigenes, intelligenteres DNS-System, das weiß, dass ein bestimmter Knoten / Host entweder stark ausgelastet oder ausgefallen ist und den Datenverkehr entsprechend weiterleiten kann.
Das Schöne an ihrem Service war, dass ich eigentlich nichts sehr Kompliziertes tun musste, um Inhalte auf Servern in meinem eigenen Rechenzentrum in ihr Rechenzentrum zu replizieren. Außerdem haben sie, wie ich weiß, Apache-HTTP-Server intensiv genutzt.
Obwohl die Verfügbarkeit nicht 100% beträgt, können Sie solche Optionen in Betracht ziehen, um Inhalte auf der ganzen Welt zu verbreiten. Nach meinem Verständnis war Akamai auch in der Lage, den Datenverkehr zu lokalisieren, was bedeutet, dass ich mich in Michigan befand, Inhalte von einem Michigan / Chicago-Server bezogen habe und wenn ich mich in Kalifornien befand, angeblich Inhalte von einem Server mit Sitz in Kalifornien.
quelle
Statt eines externen Failovers müssen Sie die Anwendung nur an zwei Standorten gleichzeitig ausführen, intern und extern. Und synchronisieren Sie die beiden Datenbanken ... Wenn die internen Daten ausfallen, können die internen Personen weiterhin arbeiten und externe Personen können die Anwendung weiterhin verwenden. Wenn internal wieder online ist, synchronisieren Sie die Änderungen. Sie können zwei DNS-Einträge für einen Domainnamen oder sogar einen Netzwerkrouter mit Round-Robin haben.
quelle
Bei extern gehosteten Websites ist das Hosting Ihrer Website in der App Engine von Google und die Verwendung des Datenspeichers mit hoher Replikation (High Replication Datastore, HRD) das automatische Replizieren Ihrer Daten in mindestens drei Rechenzentren in Echtzeit. Ebenso werden die App Engine-Front-End-Server automatisch für Sie skaliert / repliziert.
Trotz aller Ressourcen von Google und der weltweit fortschrittlichsten Plattform beträgt die SLA- Verfügbarkeitsgarantie für App Engine nur "99,95% der Zeit in einem Kalendermonat".
quelle
Einfach und direkt: Anycast
http://en.wikipedia.org/wiki/Anycast
Dies ist, was Cloudflare, Google und jedes andere große Unternehmen verwendet, um redundante, latenzarme, kontinentalübergreifende Failover- / Balancing-Vorgänge durchzuführen.
Beachten Sie aber auch, dass es unmöglich ist, eine 100% ige Verfügbarkeit zu erreichen, und dass die Kosten für einen Anstieg von 99,999% auf 99,9999% VIEL höher sind.
quelle