100% di uptime per un'applicazione web


312

Oggi abbiamo ricevuto un "requisito" interessante da un cliente.

Vogliono il 100% di uptime con il failover off-site in un'applicazione web. Dal punto di vista della nostra applicazione Web, questo non è un problema. È stato progettato per essere scalabile su più server di database, ecc.

Tuttavia, da un problema di rete non riesco proprio a capire come farlo funzionare.

In breve, l'applicazione vivrà su server all'interno della rete del client. Vi si accede da persone sia interne che esterne. Vogliono che conserviamo una copia off-site del sistema che, in caso di un grave guasto nelle loro sedi, riprenderebbe immediatamente e subentrerebbe.

Ora sappiamo che non c'è assolutamente modo di risolverlo per le persone interne (piccione viaggiatore?), Ma vogliono che gli utenti esterni non se ne accorgano nemmeno.

Francamente, non ho la più pallida idea di come ciò sia possibile. Sembra che se perdono la connettività Internet, dovremmo fare una modifica DNS per inoltrare il traffico ai computer esterni ... Il che, ovviamente, richiede tempo.

Idee?

AGGIORNARE

Ho avuto una discussione con il cliente oggi e hanno chiarito la questione.

Hanno bloccato il numero del 100%, dicendo che l'applicazione dovrebbe rimanere attiva anche in caso di alluvione. Tuttavia, tale requisito entra in gioco solo se lo ospitiamo per loro. Hanno detto che avrebbero gestito il requisito di uptime se l'applicazione vivesse interamente sui loro server. Puoi indovinare la mia risposta.


49
Non sottovalutare l'enorme tempo di inattività causato dall'hacking, guarda Sony e la rete PlayStation. puoi garantire che avevano la stessa idea di uptime% 100 e il denaro / hardware per il backup. chiarire con il cliente che il 100% di uptime è un'aspettativa irraggiungibile, anche i tecnici di Google esiterebbero a mormorare "100% di uptime". un suggerimento è quello di esaminare l'utilizzo del DNS dinamico, memorizzano nella cache solo per 60 secondi, questo dovrebbe includere il sistema operativo e i server DNS locali.
Silverfire,

182
Personalmente corro da questo client il più velocemente possibile. Sospetto che questa non sarà l'ultima pazza idea che potrebbero avere (dal punto di vista della tecnologia).
GregD,

137
Vorrei poter sottovalutare il tuo cliente.
joeqwerty,

81
Se capisci il 100% di uptime fammelo sapere. Creerò un business con esso e lo venderò a Google. È impossibile garantire il 100%. Persino aziende come Microsoft, Amazon o Google non andranno così in alto perché sanno che è impossibile. Il migliore che ho visto è del 99,999% e anche questo è un tratto (5 minuti in un anno). Il meglio che potresti probabilmente fare è affidabile al 99,99%.
Matt

39
Basta inventare un prezzo follemente alto per presentare la loro folle richiesta. Ciò probabilmente li riporterà ai loro sensi. O comunque, o li manderà in cerca di qualcuno disposto a mentire a loro.
Nate CK,

Risposte:


368

Ecco il pratico diagramma di Wikipedia sulla ricerca di nove:

inserisci qui la descrizione dell'immagine

È interessante notare che solo 3 dei 20 migliori siti Web sono stati in grado di raggiungere i mitici 5 nove o il 99,999% di uptime nel 2007. Erano Yahoo, AOL e Comcast. Nei primi 4 mesi del 2008, alcuni dei social network più popolari non si sono nemmeno avvicinati a questo.

Dal grafico, dovrebbe essere evidente quanto sia ridicolo il perseguimento del 100% di uptime ...


62
Pingdom inoltre non controlla ogni secondo. Inoltre, quelli che hanno incontrato cinque nove probabilmente avevano ancora interruzioni localizzate che Pingdom potrebbe non aver rilevato, o anomalie che rendevano alcuni servizi non disponibili mentre rispondevano ancora ai ping.
Ceejayoz,

8
Il che di per sé rende i cinque nove dubbi ...
GregD

5
Precisamente. E hanno $ miliardi di dollari con cui lavorare!
Ceejayoz,

43
Mi dispiace disturbare la chat in corso, ma la domanda del PO era come andare a perseguire l'obiettivo del 100% di uptime a livello tecnico non concettualmente, sono sicuro che sa che non è sempre possibile a causa di eventi naturali che accadono all'hardware e l'ambiente. Potremmo aiutarlo con quello?
David d C e Freitas,

5
All'OP: ho visto gli SLA che garantivano il tempo di attività nel contesto di "al di fuori della normale manutenzione". Ovviamente, la normale manutenzione è programmata per i periodi di inattività mensili per aggiornamenti, patch, ecc., Che di solito si verificano nel giorno meno occupato del mese durante i periodi meno occupati del mese (di solito nel mezzo della notte). Devono disporre di un qualche tipo di metrica per le loro attività commerciali. Si potrebbe offrire una migliore uptime (4 nines) per loro solo durante quei tempi.
GregD

186

Chiedi loro di definire il 100% e come verrà misurato in quale periodo di tempo. Probabilmente significano il 100% più vicino possibile. Dai loro i costi.

Elaborare. Nel corso degli anni ho discusso con clienti con requisiti apparentemente ridicoli. In tutti i casi, in realtà stavano solo usando un linguaggio abbastanza preciso.

Abbastanza spesso inquadrano le cose in modo che appaiano assolute, come il 100%, ma in realtà a un'indagine più approfondita sono abbastanza ragionevoli da eseguire le analisi costi / benefici necessarie quando presentate con i costi per i dati di mitigazione del rischio. Chiedere loro come misureranno la disponibilità è una domanda cruciale. Se non lo sanno, allora sei in grado di suggerire loro che questo deve essere definito per primo.

Chiederei al cliente di definire cosa succederebbe in termini di impatto / costi aziendali se il sito non funzionasse nelle seguenti circostanze:

  • Nelle ore più trafficate per x ore
  • Nelle ore meno impegnative per x ore

E anche come lo misureranno.

In questo modo puoi lavorare con loro per determinare il giusto livello di "100%". Sospetto che ponendo questo tipo di domande saranno in grado di determinare meglio le priorità degli altri requisiti. Ad esempio, potrebbero voler pagare determinati livelli di SLA e compromettere altre funzionalità per raggiungere questo obiettivo.


21
Concordato. Potrebbero significare solo tempi di attività "molto elevati" (anni 90 superiori?) Con una strategia di failover piuttosto solida. Altrimenti, una spiegazione della scala dei costi in questione li avrebbe persuasi a sperare ...
Martin Dow,

32
+1 per non saltare alle conclusioni e invece solo per chiedere al cliente di spiegare cosa hanno in mente.
sleske,

4
Mi associo alla dichiarazione "non saltare alle conclusioni" ... se il cliente intende uptime del 100% (meno la manutenzione programmata), potrebbe essere più di un requisito ragionevole.
Tim Reddy,

1
Per quanto riguarda l'impatto sul business, in realtà conosciamo e comprendiamo completamente la loro attività e i costi associati alla caduta del sito non sono finanziari. Più sulla falsariga degli indigeni che si presentano con forconi, potenziali impiccagioni, ecc.;) Immagina solo 40.000 persone che si presentano alla tua porta urlando. Questo è ciò che vogliono evitare con passione.
NotMe

7
@ChrisLively Una ragione in più per avere una comprensione matura del rischio allora. Il paradigma dominante per l'ingegneria della sicurezza è la valutazione probabilistica del rischio . Ci sono sistemi che potrebbero uccidere (non solo infastidire) migliaia di persone e hanno ancora una probabilità bassa, speriamo ben compresa, ma diversa da zero.
poolie,

140

I tuoi clienti sono pazzi. Il 100% di tempo di attività è impossibile, indipendentemente dalla quantità di denaro che ci spendi. Chiaro e semplice - impossibile. Guarda Google, Amazon, ecc. Hanno una quantità quasi infinita di soldi da buttare nella loro infrastruttura e tuttavia riescono ancora ad avere tempi di inattività. Devi consegnare loro quel messaggio e se continuano a insistere sul fatto che offrono richieste ragionevoli. Se non riconoscono che un certo tempo di inattività è inevitabile, allora abbandonali.

Detto questo, sembra che tu abbia la meccanica per ridimensionare / distribuire l'applicazione stessa. La parte di rete dovrà coinvolgere uplink ridondanti a diversi ISP, ottenere un'allocazione ASN e IP e approfondire BGP e dispositivi di routing reali in modo che lo spazio degli indirizzi IP possa spostarsi tra gli ISP, se necessario.

Questa è, ovviamente, una risposta molto concisa. Non hai avuto esperienza con applicazioni che richiedono questo grado di uptime, quindi devi davvero coinvolgere un professionista se vuoi avvicinarti al mitico uptime del 100%.


7
Concordato. Totalmente. Pazzo.
jdw,

2
lo erano ??
Sirex,

2
@Sirex Riferendosi al recente esperimento @ CERN in cui si è scoperto che i neutrini viaggiano più velocemente della luce. Tuttavia, i risultati devono ancora essere confermati da scienziati indipendenti.
TC1

9
@ TC1 Scommetto che $ 200 non vanno fuori.
dpatchery,

4
@ErikA Una richiesta di uptime del 100% è indice di ignoranza delle caratteristiche tecniche dei sistemi. Va bene, perché il lavoro del cliente sta facendo tutto ciò che fa. Il tuo compito è progettare sistemi IT. I clienti difficili come questo possono essere incubi, ma possono anche diventare i tuoi migliori clienti.
duffbeer703,

54

Bene, questo è sicuramente interessante. Non sono sicuro che vorrei essere contrattualmente obbligato al 100% di uptime, ma se dovessi, penso che sarebbe simile a questo:

Inizia con l'IP pubblico su un servizio di bilanciamento del carico completamente fuori dalla rete e creane almeno due in modo che uno possa eseguire il failover sull'altro. Un programma come Heatbeart può aiutare con il failover automatico di quelli.

Lo smalto è principalmente noto come soluzione di memorizzazione nella cache, ma offre anche un bilanciamento del carico molto decente. Forse sarebbe una buona scelta per gestire il bilanciamento del carico. Può essere impostato per avere da 1 a n gruppi opzionalmente raggruppati in registi che caricheranno il saldo in modo casuale o round robin. La vernice può essere resa abbastanza intelligente da controllare la salute di ogni back-end e far cadere i back-malsani fuori dal circuito fino a quando non torna online. I backend non devono essere sulla stessa rete.

Sono un po 'innamorato degli IP elastici in Amazon EC2 in questi giorni, quindi probabilmente costruirò i miei bilanciatori di carico in EC2 in diverse regioni o almeno in diverse zone di disponibilità nella stessa regione. Ciò ti darebbe la possibilità di far girare manualmente un nuovo bilanciamento del carico (se non lo vuoi) se fosse necessario e spostare l'IP del record A esistente nella nuova casella.

Varnish, tuttavia, non può terminare SSL, quindi se questa è una preoccupazione potresti voler esaminare qualcosa come Nginx.

Potresti avere la maggior parte dei tuoi backend nella tua rete di client e uno o più al di fuori della loro rete. Credo, ma non sono sicuro al 100%, che tu possa dare la priorità ai backend in modo che le macchine dei tuoi clienti ricevano la priorità fino a quando tutte diventeranno malsane.

È da lì che inizierei se avessi questo compito e senza dubbio lo perfezionerei mentre procedo.

Tuttavia, come afferma @ErikA, è Internet e ci saranno sempre parti della rete che sono al di fuori del tuo controllo. Ti consigliamo di assicurarti che il tuo legale ti leghi solo a cose che sono sotto il tuo controllo.


2
Per un po 'stavo pensando ad Amazon e MS per una distribuzione cloud, ma entrambi hanno avuto gravi interruzioni negli ultimi due mesi. SSL è fondamentale.
NotMe

3
Se avessi intenzione di utilizzare Amazon, vorrai sicuramente distribuire le tue macchine nelle 5 zone di disponibilità. È abbastanza improbabile che tutte le loro zone vadano fuori nello stesso momento.
jdw,

11
+1 per aver effettivamente affrontato la domanda principale del PO.
Phil

avrai sempre un punto di errore, jdw, fintanto che c'è una cosa non distribuita nella catena (nel tuo caso il battito cardiaco, a meno che ovviamente non ci siano più istanze di quello in esecuzione su macchine remote che si monitorano a vicenda così come il tuo server, che uno di essi potrebbe o meno vedere a causa di problemi di rete lungo il routing). Il che ci porta a "tempi di inattività". I server potrebbero essere attivi e in esecuzione e comunque non disponibili per il client senza che il battito cardiaco lo rilevi mai se l'errore non si trova nel percorso di routing.
jwenting,

Concordato. Come TUTTI gli altri hanno sottolineato, non esiste un tempo di attività del 100%. Tutto quello che puoi fare è provare e quello che ho descritto è come avrei iniziato a provare.
jdw,

30

Nessun problema, anche se la formulazione del contratto è leggermente rivista:

... garantiscono un tempo di attività del 100% (arrotondato a zero decimali).


2
+1 per notare che il 100% non è 100,0% o 100.000% ecc. Le cifre decimali contano, indicano precisione;)
Marinaio danubiano

4
Secondo alcune convenzioni, "100%" ha solo una cifra significativa, in modo tale che tutti i numeri tra la metà e una si arrotondino al "100%"; Il 50% arrotonderebbe al 100%.
Thomas Levine,

1
A seconda dello standard per il conteggio, alcuni diranno che il 50% ha due numeri meeningfull dove il 100% ha tre numeri meeningful. 50,5 e 100 sono quindi altrettanto precisi. Altri contano le cifre dopo il punto decimale. Quindi 50,5 e 100,4 saranno altrettanto accurati. Se non altro indicato, suppongo che il 100% è del 99,5% e oltre. Il 100,0% è il 99,95% e oltre, ecc.
Tillebeck,

26

Se Facebook e Amazon non possono farlo, allora non puoi. E 'così semplice.


17
potrebbe essere più intelligente di tutte le persone messe insieme, chissà: p
Matt

3
Il 100% di uptime non deve essere così letterale: significa che è disponibile al 100% durante il tempo necessario. Ad esempio, i sistemi bancari dovrebbero essere sempre disponibili e funzionano abbastanza bene. Solo perché vanno in manutenzione per 1 secondo una volta all'anno non significa che non abbiano raggiunto l'obiettivo di uptime del 100%.
David d C e Freitas,

13
@DavidFreitas - Penso che nei contratti di solito sia piuttosto letterale ...
UpTheCreek

2
@Matt solo perché Facebook / Amazon non possono farlo non significa che un sito più piccolo non può farlo. Molti siti Web di grandi dimensioni affrontano problemi molto più difficili da superare rispetto a un sito più piccolo.
Xorlev,

1
quindi quello che stai dicendo è che non hai avuto il 100% di uptime da quando hai avuto alcuni client che hanno avuto errori .. in più dns non è un passaggio istantaneo poiché hai ISP che ignorano i TTL brevi
Mike

25

Per aggiungere la risposta di oconnore da Hacker News

Non capisco quale sia il problema. Il cliente vuole che tu pianifichi un disastro e non sono orientati alla matematica, quindi chiedere una probabilità del 100% suona ragionevole. L'ingegnere, come gli ingegneri sono inclini a fare, ha ricordato il suo primo giorno di prob & stat 101, senza considerare che il cliente potrebbe non farlo. Quando dicono questo, non stanno pensando all'inverno nucleare, stanno pensando a Fred che scarica il suo caffè sul server dell'ufficio, a un disco che si blocca o a un ISP che cade. Inoltre, puoi farlo. Con server indipendenti, geograficamente distinti, indipendenti, non avrai praticamente tempi di inattività. Con 3 server che funzionano con un'affidabilità indipendente (1) tre 9, con buone modalità di failover, i tempi di inattività previsti sono inferiori a un secondo all'anno (2). Anche se questo accade tutto in una volta, sei ancora all'interno di un ragionevole SLA per le connessioni web, e quindi i tempi di inattività praticamente non esistono. Il cliente deve ancora gestire gli scenari del giorno del giudizio, ma Godzilla escluso, avrà un servizio "sempre" attivo.

(1) Un server a Los Angeles è ragionevolmente indipendente dal server di Boston, ma sì, capisco che c'è un incrocio che coinvolge la guerra nucleare, gli hacker cinesi che si infrangono sulla rete elettrica, ecc. Non credo che il tuo cliente sarà sconvolto da Questo.

(2) Il failover DNS potrebbe aggiungere alcuni secondi. Sei ancora in uno scenario in cui il cliente deve ritentare una richiesta una volta all'anno, che è, ancora una volta, entro un ragionevole SLA e non viene generalmente considerato nella stessa ottica di "downtime". Con un'applicazione che reindirizza automaticamente a un nodo disponibile in caso di errore, questo può essere impercettibile.


6
Il problema è che lo stanno dicendo in contratto. Ciò significa che se si verifica un disastro e sono necessari più di dieci secondi per riportare il sito online tramite backup, avrebbero dovuto fare causa.
Shadur,

@Shadur: se lo vogliono davvero , allora devi davvero caricarli. Diffondere i server geograficamente in lungo e in largo, si spera che non ci siano disastri dappertutto.
Jungle Hunter,

3
Ho visto un sito che offre garanzie di uptime del 100% o rimborsati. Il trucco era che caricavano una nave e si dividevano in mesi. Quindi alcuni mesi non vengono pagati e tu pianifichi tutto intorno a quello, e copri la perdita con i mesi che vanno bene.
jldugger,

17

Ti viene chiesto qualcosa di impossibile.

Esamina le altre risposte qui, siediti con il tuo cliente e spiega PERCHÉ è impossibile e misura la loro risposta.

Se insistono ancora sul tempo di attività al 100%, informali educatamente che non può essere fatto e declinano il contratto. Non soddisferai mai la loro domanda e se il contratto non fa schifo, verrai infilato con delle penalità.


2
È necessario definire il 100%, ovvero disponibile al 100% tranne quando si effettuano interventi di manutenzione o aggiornamenti e tale tempo sarà limitato alle ore tranquille per poche ore al mese al massimo. Tutto dipende da quale sia lo scopo e l'utilizzo dell'app Web in questo caso ...
David d C e Freitas

1
e definire "downtime". In teoria non posso nemmeno garantire che saranno in grado di accedere a un server a Omaha dai loro uffici a Fairbanks a meno che tu non controlli l'intera rete nel mezzo (anche se potresti dare garanzie sul fatto che il server sia attivo e funzionante).
jwenting,

Le definizioni sono, IMHO, irrilevanti se chiedono "100% di uptime": anche se si negozia la manutenzione programmata e si costruisce una ridondanza N + N se un glitch minore provoca un riavvio non programmato o un lampeggiamento del servizio, si è saltato lo SLA. Sicuramente rilevante se stai negoziando uno SLA 3, 4 o 5 nove.
voretaq7,

Dipende dai termini dello SLA, no? Se vieni pagato $ 100K al mese e ogni minuto di downtime comporta una penalità di $ 1K, ciò potrebbe essere del tutto fattibile (se hai altri contratti per ammortizzare il costo dei amministratori di sistema 24/7).
Michael Borgwardt,

@MichaelBorgwardt ci sono sicuramente dei modi per "farlo funzionare" dal punto di vista dei numeri puri, ma continuerei a rifiutare a causa del potenziale di cattive PR ($ _CLIENT va su Twitter e dice al mondo che siamo giù perché $ _PROVIDER è incompetente e non riescono a soddisfare il loro SLA! '). Personalmente preferirei che 10 clienti più piccoli e più ragionevoli mi pagassero $ 10ka al mese :-)
voretaq7

13

Prezzo di conseguenza, quindi stabilire nel contratto che eventuali tempi di fermo oltre lo SLA saranno rimborsati al tasso che stanno pagando.

L'ISP nel mio ultimo lavoro lo ha fatto. Abbiamo scelto una linea DSL "normale" con un uptime del 99,9% per $ 40 / mese, o un trio di T1 legato con un uptime del 99,99% per $ 1100 / mese. Ci sono state interruzioni frequenti di oltre 10 ore al mese, che hanno portato il loro tempo di attività ben al di sotto del DSL $ 40 / mo, ma siamo stati rimborsati solo circa $ 15 o giù di lì, perché è così che la tariffa all'ora * ore è finita a. Hanno capito come banditi dall'accordo.

Se addebiti $ 450.000 al mese per un uptime del 100% e raggiungi solo il 99,999%, dovrai rimborsarli di $ 324. Sono disposto a scommettere che i costi dell'infrastruttura per raggiungere il 99,999% si aggirano intorno ai $ 45.000 al mese ipotizzando colos completamente distribuiti, uplink multipli di livello 1, hardware di fantasia, ecc.


3
Se vedi qualcuno che promette un uptime del 100%, questo è esattamente quello che stanno facendo. C'è una differenza tra il promettente uptime del 100% e la sua consegna. Sarebbe una buona idea spiegarlo al cliente se provano a citare lo SLA di un concorrente.
sjbotha,

10

Se i professionisti si chiedono se la disponibilità del 99,999% [sia] mai una possibilità pratica o finanziariamente fattibile , la disponibilità del 99,9999% è ancora meno possibile o pratica. Per non parlare del 100%.

Non raggiungerai l'obiettivo di disponibilità al 100% per un lungo periodo di tempo. Potresti cavartela per una settimana o un anno, ma poi succederà qualcosa e sarai ritenuto responsabile. La caduta può variare dalla reputazione danneggiata (hai promesso, non hai consegnato) alla bancarotta dalle multe contrattuali.


10

Esistono due tipi di persone che richiedono il 100% di uptime:

  1. Persone senza alcuna conoscenza di computer, sistemi informatici o Internet. *
  2. Coloro che si stanno intenzionalmente facendo un culo da soli, sia per testare la tua capacità di dire di no (Google "il test del succo d'arancia"), o cercando di ottenere un qualche tipo di leva contrattuale SLA per uscire dal pagamento in seguito.

Il mio consiglio, dopo aver subito entrambi questi tipi di clienti in molte occasioni, è di non prendere questo cliente. Lascia che faccia impazzire qualcun altro.

* Questa stessa persona potrebbe non avere imbarazzo quando si informa su viaggi più veloci della luce, moto perpetuo, fusione fredda, ecc.


2
+1 per il test del succo d'arancia .. Mi piace e non lo sapevo :)
Oliver M Grech,

8

Vorrei comunicare con il cliente per stabilire con loro cosa significhi esattamente il 100% di uptime. È possibile che non vedano realmente una distinzione tra uptime del 99% e uptime del 100%. Per la maggior parte delle persone (cioè non amministratori del server) quei due numeri sono uguali.


6

100% di uptime?

Ecco cosa ti serve:

Server DNS multipli (e ridondanti) che puntano a più siti in tutto il mondo, con SLA adeguati con ciascun ISP.

Assicurarsi che i server DNS siano impostati correttamente, con TTL riconosciuto in modo efficace.


1
Sì, DNS è un buon inizio, ad esempio nslookup google.comrestituisce 6 IP diversi per la ridondanza nel caso in cui alcuni di essi non funzionino. Dai un'occhiata anche a RobTex.com un ottimo sito per vedere le configurazioni di alcuni domini, ad esempio robtex.com/dns/google.com.html#records
David d C e Freitas,

6

Questo è facile. Lo SLA Amazon EC2 afferma chiaramente:

La "percentuale di uptime annuale" viene calcolata sottraendo dal 100% la percentuale di periodi di 5 minuti durante l'anno di servizio in cui Amazon EC2 era nello stato di "Regione non disponibile".

http://aws.amazon.com/ec2-sla/

Definisci semplicemente "uptime" come relativo all'intero pacchetto di servizi che puoi effettivamente mantenere operativo il 100% delle volte e non dovresti avere problemi.

Inoltre, vale la pena sottolineare che l'intero punto di uno SLA è definire quali sono i tuoi obblighi e cosa succede se non riesci a soddisfarli. Non importa se il cliente richiede 3 o 5 o un milione di nove: la domanda è cosa ottengono quando / se non riesci a consegnare. La risposta ovvia è fornire un elemento pubblicitario per il 100% di uptime a 5 volte il prezzo che desideri addebitare, e quindi riceveranno un rimborso 4x se non raggiungi tale obiettivo. Potresti segnare!


5

Le modifiche DNS richiedono tempo solo se sono configurate per richiedere tempo. È possibile impostare il TTL su un record su un secondo: l'unico problema sarebbe quello di garantire una risposta tempestiva alle query DNS e che i server DNS possano far fronte a quel livello di query.

Questo è esattamente il modo in cui GTM funziona nel Big IP F5: il DNS TTL per impostazione predefinita è impostato su 30 secondi e se un membro del cluster deve subentrare, il DNS viene aggiornato e il nuovo IP viene acquisito quasi immediatamente. Un massimo di 30 secondi di interruzione, ma questo è il caso limite, la media sarebbe di 15 secondi.


10
È stata la mia esperienza che alcuni server DNS ignoreranno un TTL che considerano odiosamente basso (nonostante la RFC). Qualcosa di meno di 5 minuti diventa in qualche modo inaffidabile nella scala globale.
jdw,

13
@Paul ignorare la realtà non è una pratica accettabile, non importa quanto fa incazzare tutti.
MDMarra,

5
Sono con jdw su questo. Ho visto numerosi server DNS ignorare completamente il TTL, anche un'impostazione di 1 ora e il valore predefinito è di circa 24 ore.
NotMe

6
@Paul: l'OP non ha il controllo sui resolver DNS di ogni ISP sul pianeta. Ergo, non hanno la scelta di dire "se hai intenzione di utilizzare il nostro sito Web, non utilizzare Comcast / Roadrunner / chiunque come ISP perché ignoreranno le nostre impostazioni TTL". È qualcosa che è semplicemente fuori dal loro controllo ed è quindi troppo fragile per essere considerata una soluzione a questo problema IMHO. La soluzione deve includere un modo per essere in grado di forzare internamente gli IP senza fare affidamento su altri bit della rete che potrebbero non essere cooperativi.
jdw,

3
È un po 'come non avere un UPS perché la potenza "dovrebbe funzionare". Non è un modo lungimirante di progettare un sistema. Se sai che esiste una parte fragile del sistema, per qualsiasi motivo, dovresti provare a spiegarlo.
jdw,

5

Sai che è impossibile.

Senza dubbio il cliente si concentra sul vedere "100%", quindi il meglio che puoi fare è promettere il 100%, tranne per [tutte le ragionevoli cause che non sono colpa tua].


Senza dubbio il cliente non vuole alcuna soluzione. Vogliono un declino. Quindi possono dire, almeno ci hanno provato.
mbx,

Beh forse. Stai assumendo un alto livello di indizio.
Marcin,

4

Anche se dubito che sia possibile il 100%, potresti voler considerare Azure (o qualcosa con uno SLA simile) come una possibilità. Che succede:

I tuoi server sono macchine virtuali. In caso di problemi hardware su un server, la macchina virtuale viene spostata su una nuova macchina. Il bilanciamento del carico si occupa del reindirizzamento, quindi il cliente non dovrebbe vedere alcun tempo di inattività (anche se non sono sicuro di come il tuo stato delle sessioni sarebbe influenzato).

Detto questo, anche con questo fail-over, la differenza tra 99.999 e 100 confina con la follia.

Dovrai avere il pieno controllo dei seguenti fattori.
- Fattori umani, sia interni che esterni, sia cattiveria che impotenza. Un esempio di questo è qualcuno che spinge qualcosa nel codice di produzione che porta giù un server. Ancora peggio, che dire del sabotaggio?
- Problemi commerciali. Che cosa succede se il tuo fornitore si spegne per affari o dimentica di pagare le bollette elettriche o semplicemente decide di smettere di supportare la tua infrastruttura senza un preavviso sufficiente?
- Natura. E se i tornado non correlati colpissero contemporaneamente abbastanza data center per sopraffare la capacità di backup?
- Un ambiente completamente privo di bug. Sei sicuro che non ci sia un caso limite con qualche controllo di sistema di terze parti o core che non si è manifestato ma potrebbe ancora farlo in futuro?
- Anche se hai il pieno controllo dei suddetti fattori, sei sicuro che il monitoraggio del software / persona non ti presenterà falsi negativi quando verifichi se il tuo sistema è attivo?


2
Azure e EC2 hanno recentemente avuto quasi totale e totale fallimento. Credo che Azure sia stato recentemente rimosso semplicemente a causa di una voce di configurazione errata su un server DNS. Ad ogni modo, grazie per le informazioni.
NotMe

e se il tuo bilanciamento del carico (che esegue la commutazione) scende inosservato (il suo monitor potrebbe anche essere inosservato, all'infinito) quando il nodo si abbassa, sei ancora fregato.
jwenting,

1
Penso che volevi dire "incompetenza". L '"impotenza" non dovrebbe avere un grande impatto sulla capacità del personale IT di svolgere il proprio lavoro.
mfinni,

4

Onestamente il 100% è completamente pazzo senza almeno una vacillazione in termini di un attacco di hacking. La tua scommessa migliore è fare ciò che fanno Google e Amazon in quanto hai una soluzione di hosting geo-distribuita in cui hai il tuo sito e DB replicati su più server in più posizioni geografiche. Questo lo garantirà in tutto tranne che in un grave disastro come la spina dorsale di Internet che viene tagliata in una regione (cosa che succede di tanto in tanto) o qualcosa di quasi apocalittico.

Vorrei inserire una clausola proprio per questi casi (DDOS, taglio della spina dorsale di Internet, attacco terroristico apocalittico o una grande guerra, ecc.).

Oltre a ciò, cerca nei servizi cloud Amazon S3 o Rackspace. Fondamentalmente la configurazione del cloud non offrirà solo la ridondanza in ogni posizione, ma anche la scalabilità e la geo-distribuzione del traffico insieme alla capacità di reindirizzare intorno a aree geografiche fallite. Anche se la mia comprensione è che la geo-distribuzione costa più denaro.


3

Volevo solo aggiungere un'altra voce al "si può partito (teoricamente) essere fatto".

Non prenderei un contratto che avesse specificato questo, non importa quanto mi pagassero, ma come problema di ricerca ha alcune soluzioni piuttosto interessanti. Non ho abbastanza familiarità con la rete per delineare i passaggi, ma immagino che una combinazione di configurazioni relative alla rete + failover del cablaggio elettrico / hardware + failover software, possibilmente, in qualche configurazione o nell'altro lavoro possa effettivamente realizzarlo.

C'è quasi sempre un singolo punto di errore da qualche parte in qualsiasi configurazione, ma se lavori abbastanza duramente, puoi spingere quel punto di errore per essere qualcosa che può essere riparato "dal vivo" (cioè il root DNS scende, ma i valori sono ancora memorizzati nella cache ovunque, quindi hai tempo per sistemarlo).

Ancora una volta, non dire che è fattibile ... Non mi è piaciuto come una singola risposta non abbia affrontato il fatto che non è "una via d'uscita" - non è qualcosa che vogliono davvero se ci pensano.


3

Ripensare la metodologia di misurazione della disponibilità, quindi lavorare con il cliente per stabilire obiettivi significativi .

Se stai gestendo un sito Web di grandi dimensioni, il tempo di attività non è affatto utile. Se elimini le query per 10 minuti quando i tuoi clienti ne hanno più bisogno (picco del traffico), potrebbe essere più dannoso per l'azienda di un'interruzione di un'ora alle 3:00 di domenica.

A volte le grandi società Web misurano la disponibilità o l'affidabilità, utilizzando le seguenti metriche:

  1. percentuale di query a cui viene fornita una risposta corretta, senza errori sul lato server (HTTP 500s).
  2. percentuale di query a cui viene data risposta al di sotto di una determinata latenza target .
  3. le query eliminate devono essere conteggiate rispetto alle tue statistiche (vedi sotto).

La disponibilità non deve essere misurata utilizzando le sonde di esempio, che è ciò che un'entità esterna come pingdom e pingability sono in grado di segnalare. Non fare affidamento esclusivamente su questo. Se vuoi farlo nel modo giusto, ogni singola query dovrebbe contare . Misura la tua disponibilità osservando il tuo successo reale e percepito.

Il modo più efficiente è quello di raccogliere registri o statistiche dal bilanciamento del carico e calcolare la disponibilità in base alle metriche sopra.

La percentuale di query eliminate dovrebbe essere conteggiata anche rispetto alle tue statistiche. Può essere contabilizzato nello stesso bucket degli errori sul lato server. Se si verificano problemi con la rete o con un'altra infrastruttura come DNS o i servizi di bilanciamento del carico, è possibile utilizzare la matematica semplice per stimare il numero di query perse . Se ti aspettavi X query per quel giorno della settimana ma hai ricevuto X-1000, probabilmente hai perso 1000 query. Traccia il tuo traffico in grafici di query al minuto (o secondi). Se vengono visualizzate delle lacune, hai eliminato le query. Utilizzare la geometria di base per misurare l'area di tali spazi vuoti, che fornisce il numero totale di query eliminate.

Discutere questa metodologia con il cliente e spiegarne i vantaggi. Imposta una linea di base misurando la loro disponibilità attuale. Risulterà chiaro a loro che il 100% è un obiettivo impossibile.

Quindi è possibile firmare un contratto in base a miglioramenti sulla base. Ad esempio, se attualmente stanno riscontrando il 95% di disponibilità, si potrebbe promettere di migliorare la situazione dieci volte arrivando al 98,5%.

Nota: ci sono degli svantaggi in questo modo di misurare la disponibilità. Innanzitutto, la raccolta dei registri, l'elaborazione e la generazione dei report da soli potrebbero non essere banali, a meno che non si utilizzino strumenti esistenti per farlo. In secondo luogo, i bug dell'applicazione potrebbero compromettere la tua disponibilità. Se l'applicazione è di bassa qualità, servirà più errori. La soluzione a questo è considerare solo i 500 creati dal bilanciamento del carico anziché quelli provenienti dall'applicazione.

Le cose possono essere un po 'complicate in questo modo, ma è un passo oltre la semplice misurazione del tempo di attività del server .


3

Mentre alcune persone hanno notato qui, che il 100% è folle o impossibile , in qualche modo ha perso il punto. Hanno sostenuto che la ragione di ciò è il fatto che nemmeno le migliori aziende / servizi non possono realizzarlo.

Bene, è molto più semplice di così. È matematicamente impossibile .

Tutto ha una probabilità. Potrebbe esserci un terremoto simultaneo in tutte le posizioni in cui vengono archiviati i server, distruggendoli tutti. Piacevolmente è una probabilità ridicolmente piccola, ma non è 0. Tutti i vostri provider internet potrebbero affrontare un attacco terroristico / cyber simultaneo. Ancora una volta, non molto probabile, ma neanche zero. Qualunque cosa tu fornisca, puoi ottenere uno scenario di probabilità diverso da zero che abbassa l'intero servizio. Pertanto, il tempo di attività non può essere pari al 100%.


In realtà, sarei passato folle o impossibile e lo definirei stupido. Niente che gli umani sappiano è al 100%.
quadrupla

2

Vai a prendere un libro sul controllo di qualità della produzione utilizzando il campionamento statistico. Una discussione generale in questo libro, i concetti ai quali un manager sarebbe stato esposto in un corso di statistica generale al college, impone i costi per passare da 1 a mille in mille, a 1 in diecimila a 1 in un milione a 1 su un miliardo aumenta in modo esponenziale. In sostanza, la capacità di raggiungere il 100% di uptime costerebbe una quantità quasi illimitata di fondi, un po 'come la quantità di carburante necessaria per spingere un oggetto alla velocità della luce.

Dal punto di vista dell'ingegneria delle prestazioni respingerei il requisito in quanto sia non verificabile e irragionevole, secondo cui questa espressione è più un desiderio che un vero requisito. Con le dipendenze dell'applicazione che esistono al di fuori di qualsiasi applicazione per networking, risoluzione dei nomi, routing, difetti propagandati da componenti architetturali sottostanti o strumenti di sviluppo, diventa praticamente impossibile avere qualcuno che garantisca il 100% di uptime.


1

Non credo che il cliente stia effettivamente chiedendo un uptime del 100% o addirittura un uptime del 99,999%. Se guardi a ciò che stanno descrivendo, stanno parlando di riprendere da dove si erano interrotti se una meteorite ha eliminato il loro datacenter in loco.

Se il requisito è che le persone esterne non se ne accorgono nemmeno, quanto deve essere drastico? Fare una richiesta Ajax riprovare e mostrare un filatore per 30 secondi all'utente finale sarebbe accettabile?

Questi sono i tipi di cose che interessano al cliente. Se il cliente stesse effettivamente pensando a contratti di servizio precisi, allora ne saprebbero abbastanza per esprimerlo come 99,99 o 99,999.


Se il cliente pensa di voler "100% di uptime" e questo è quando finisce nella verbosità del contratto, potresti essere trattenuto se finisce in tribunale. Meglio parlarne e aiutare il cliente a capire cosa vogliono veramente invece di supporre che tu sappia cosa stanno pensando.
Chris S,

Oh, sono d'accordo che questo deve essere chiarito prima di stipulare un contratto. Sto solo dicendo che questo deve essere affrontato poiché il cliente non sta comunicando ciò che realmente vuole, al contrario del cliente sta chiedendo qualcosa di ridicolo.
Kevin Peterson,

1

i miei 2 centesimi. Ero responsabile di un sito Web molto popolare per un'azienda di fortuna-5 che avrebbe pubblicato annunci per il super bowl. Ho dovuto affrontare enormi picchi di traffico e il modo in cui l'ho risolto è stato quello di utilizzare un servizio come Akamai. Non lavoro per Akamai ma ho trovato il loro servizio estremamente buono. Hanno un proprio sistema DNS più intelligente che sa che con un determinato nodo / host è sotto carico pesante o è inattivo e può indirizzare il traffico di conseguenza.

La cosa bella del loro servizio era che non dovevo davvero fare nulla di molto complicato per replicare il contenuto sui server nel mio data center nel loro data center. Inoltre, so che lavorando con loro, hanno fatto un uso intensivo dei server HTTP Apache.

Sebbene non sia attivo al 100%, puoi prendere in considerazione tali opzioni per disperdere i contenuti in tutto il mondo. A quanto ho capito, Akamai ha anche avuto la capacità di localizzare il traffico, il che significa che se fossi nel Michigan, avessi contenuto da un server Michigan / Chicago e se fossi in California, presumibilmente avrei avuto il contenuto da un server basato in California.


-1 perché questa è una risposta pratica ma non è affatto utile. Tutte le domande in questo sito possono essere risolte "assumendo qualcun altro per farlo", ma non è per questo che siamo qui.
Yves Junqueira,

Mi permetto di dissentire. "Non è affatto utile?" È stato sicuramente utile per me e contrariamente al tuo commento "assumi qualcun altro per farlo", suppongo che con il tuo ragionamento il ragazzo dovrebbe tranciare il proprio cavo in fibra ottica e progettare i propri interruttori piuttosto che acquistarli anche loro? Sei serio, Yves? Sembri qualcuno che non ha trascorso molto tempo nel campo IT.
Kilo,

0

Invece del failover off-site, basta eseguire l'applicazione da due posizioni contemporaneamente, interna ed esterna. E sincronizzare i due database ... Quindi, se l'interno non funziona, le persone interne saranno ancora in grado di lavorare e le persone esterne saranno ancora in grado di utilizzare l'applicazione. Quando internal torna online, sincronizza le modifiche. Puoi avere due voci DNS per un nome di dominio o persino un router di rete con round robin.


0

Per i siti ospitati esternamente, il tempo di attività più vicino al 100% è l'hosting del sito su App Engine di Google e l'utilizzo del suo archivio dati di replica elevato (HRD) , che replica automaticamente i tuoi dati su almeno tre data center in tempo reale. Allo stesso modo, i server front-end di App Engine vengono ridimensionati / replicati automaticamente.

Tuttavia, anche con tutte le risorse di Google e la piattaforma più sofisticata al mondo, la garanzia di uptime di App Engine SLA è solo "il 99,95% delle volte in qualsiasi mese di calendario".


0

Semplice e diretto: Anycast

http://en.wikipedia.org/wiki/Anycast

Questo è ciò che cloudflare, google e qualsiasi altra grande azienda utilizzano per eseguire il failover / bilanciamento ridondante, a bassa latenza e transcontinentale.

Ma tieni anche presente che è impossibile avere un uptime del 100% e che i costi per passare dal 99,999% al 99,9999% sono MOLTO più grandi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.