Domanda:
In che modo i servizi con tempi di attività elevati applicano le patch senza riavviare?
secureninja
2018-10-24 11:24:40 UTC
view on stackexchange narkive permalink

In che modo vengono installati gli aggiornamenti di sicurezza critici su sistemi che non puoi permetterti di riavviare, ma l'aggiornamento richiede un riavvio. Ad esempio, servizi / attività che devono essere eseguiti 24 ore su 24, 7 giorni su 7 senza tempi di inattività, ad es. Amazon.com o Google.

Cosa ti fa pensare che Google non possa permettersi di riavviare i propri server?Non devono riavviarli tutti in una volta, sai.
Oggi, qualsiasi uptime di disponibilità hardware superiore al 95% è considerato costoso e obsoleto.La maggior parte dei servizi Web distribuisce semplicemente i propri servizi in cluster per consentire una disponibilità quasi del 100%, meno costosa rispetto ai requisiti del sistema operativo e della controparte hardware.
@DmitryGrigoryev Esatto, non _tutti_ devono essere riavviati, e questo è il nucleo della domanda qui.I sistemi ridondanti sono un approccio comune per i sistemi High Availability o "zero downtime" (per rubare una descrizione da OP).
_Ridondanza_ e _bilanciamento del carico_ sono concetti chiave qui
Suggerisco di leggere https://landing.google.com/sre/books/ (gratuitamente) se sei particolarmente interessato a come Google fa l'ingegneria dell'affidabilità.Mentre gran parte di questo riguarda componenti concettuali e culturali attorno al lavoro di ingegneria dell'affidabilità del sito, ci sono anche un bel po 'di informazioni tecnologiche lì dentro.
Dato che ogni singolo disco rigido fallirà dopo circa dieci anni, i grandi giocatori dovrebbero cambiare disco difettoso * tutto il tempo *.Allo stesso modo per altri componenti hardware.Quindi, già da questo aspetto, è chiaro che la ridondanza massiccia gioca un ruolo importante.
Disponibilità = ridondanza.A seconda del tuo caso d'uso potresti avere dischi ridondanti, linee elettriche ridondanti, raffreddamento ridondante, ricambi freddi, ricambi caldi e / o una squadra di emergenza nel caso in cui il tuo primo team ks sia stato spazzato via a causa di un attacco fisico su larga scala (ad es. L'aereo vola nel tuo edificio).
Google e Amazon fanno anche versioni canarie: rilasciano un aggiornamento in un mercato meno importante (Asia) prima per dimostrare che non ci sono bug e dopo un po 'di tempo (24 ore) rilasceranno su altri mercati.I mercati meno importanti agiscono effettivamente come un canarino nella loro miniera d'oro
Cinque risposte:
forest
2018-10-24 11:31:16 UTC
view on stackexchange narkive permalink

Esistono varie utilità in diversi sistemi operativi che consentono l'applicazione di patch a caldo del codice in esecuzione. Un esempio di ciò sarebbero le funzionalità kpatch e livepatch di Linux che consentono di applicare patch al kernel in esecuzione senza interromperne le operazioni. Le sue capacità sono limitate e possono apportare solo modifiche banali al kernel, ma questo è spesso sufficiente per mitigare una serie di problemi di sicurezza critici finché non si trova il tempo per fare una correzione adeguata. Questo tipo di tecnica in generale è chiamata aggiornamento dinamico del software.

Devo sottolineare però che i siti praticamente senza tempi di inattività ( alta disponibilità) non sono così affidabili a causa del live-patching, ma a causa della ridondanza. Ogni volta che un sistema si arresta, saranno presenti numerosi backup che possono iniziare immediatamente a instradare il traffico o elaborare le richieste senza ritardi. Esistono numerose tecniche diverse per eseguire questa operazione. Il livello di ridondanza fornisce un tempo di attività significativo misurato in nove. Un tempo di attività tre nove è del 99,9%. Il tempo di attività di quattro nove è del 99,99%, ecc. Molti dei servizi che hai elencato hanno cinque nove disponibilità a causa dei loro sistemi di backup ridondanti sparsi in tutto il mondo.

Una volta installata tutta l'infrastruttura HA, è meglio evitare il live patching.Il live patching diventa un rischio per la tua affidabilità.** 1. ** Il bug potrebbe aver già causato problemi nelle strutture dati in memoria e, sebbene tu abbia applicato la patch live, sei ancora interessato a causa di problemi precedentemente introdotti.** 2. ** Potrebbero esserci sottili differenze tra l'applicazione della patch live e l'avvio di un vero kernel con patch, facendo sì che l'applicazione funzioni solo sul primo.La prossima volta che riavvierai sarai colpito da un bug che a quel punto sarà difficile da mitigare.
@kasperd Inoltre, ** 3. ** il live patching è molto più limitato e richiede un'attenta riflessione e test e aggiunge ulteriori riferimenti indiretti in fase di esecuzione.Perché preoccuparsi quando è possibile riavviare i sistemi uno per uno?Cosa che probabilmente stai già facendo periodicamente comunque, perché quando hai un cluster come quello, perché non dovresti?
Per completezza, potrebbe valere la pena menzionare nella risposta che "cinque nove", o disponibilità del 99,999%, corrisponde a un tempo di inattività di poco più di 5 minuti e 15 secondi all'anno.Sei nove (99,9999%) rappresenterebbero poco meno di 32 secondi di inattività all'anno.
Esistono siti esistenti con disponibilità di 5 nove?Ciò rappresenta solo un'ora di inattività ogni 11 anni.
@BlueRaja-DannyPflughoeft Ci sono molti, molti servizi che cercano di ottenerlo, anche se non ho idea di quali siano le loro percentuali reali.Che cosa supponi sia la disponibilità di Amazon EC2?O anche solo Stack Exchange?
@immibis: Stack Exchange ha avuto _way_ più di un'ora di downtime negli ultimi anni, quindi sicuramente non si avvicina al 99,999%
@BlueRaja-DannyPflughoeft Ma sembra ancora gestire almeno 3,5 e forse 4 nove, non è difficile immaginare qualcosa di molto più importante, con molte più risorse alle spalle, ancora più affidabile.
@immibis Personalmente ho difficoltà a immaginarlo, almeno per i siti che si affacciano pubblicamente.Tutti i siti web del governo che mi interessano hanno avuto tempi di inattività più lunghi di quello.Il nostro sito web della polizia è stato disattivato.Il sito web dei risultati delle elezioni è rimasto inattivo per diverse ore durante il conteggio delle elezioni.Una volta non sono riuscito a vedere le informazioni del mio conto bancario perché il loro backend era inattivo per alcune ore.Se ci sono questi server segreti magici nascosti con 6 nove tempi di attività, almeno non sono pubblicamente affrontati!
@pipe Stai insinuando che i siti web del governo sono importanti?I siti web commerciali si concentrano maggiormente sull'affidabilità perché se il sito è inattivo, gli utenti possono passare a un concorrente.I siti web governativi non hanno la stessa concorrenza e non perdono soldi in termini di profitti se gli utenti smettono di utilizzare il loro sito.Ciò potrebbe significare che tu come utente ritieni che quei siti siano più importanti.Ma allo stesso tempo significa che il governo non è incentivato a dare priorità all'affidabilità.
@kasperd Questo è un ottimo punto.Suppongo di non aver mai visto la prima pagina di Google perdere una volta in 20 anni di utilizzo ..
@pipe Si è verificato un incidente nel 2009 in cui un bug ha causato le ricerche di Google per elencare ogni singolo risultato di ricerca come dannoso per un'ora.Penso che questa sia la più grande interruzione della ricerca su Google da oltre un decennio.
Aspetta di dover interagire con i sistemi bancari e qualcuno cerca di chiedere 6 nove.Sono circa 31 secondi all'anno.
Ragazzi, a volte c'è una visione molto generalizzata (e un po 'ingenua) di ciò che potrebbe fare un sito web del governo.Le persone pensano immediatamente che le informazioni DMV siano l'estensione perché è tutto ciò con cui interagiscono?Considera che probabilmente ci sono siti che hanno un effetto sulla prontezza militare, sul coordinamento del terrorismo, sulla stabilità della rete energetica, ecc. L'unica cosa che perdi quando la maggior parte dei siti civili fallisce è il denaro.
@pipe C'è una ragione per cui "vai su google.com" è fondamentalmente il modo standard con cui il supporto tecnico controlla se c'è una connessione a Internet.
@BillK Quelli non sono quelli con cui le persone interagiscono e vedono cadere.
Non sono sicuro se più server in una server farm debbano essere definiti ridondanti rispetto a "condivisione del carico" con margine sufficiente per gestire alcuni server che si arrestano per aggiornamenti o problemi.
@rcgldr Google gestisce un numero enorme di servizi diversi.C'è una grande differenza tra chiedere se qualcuno di loro ha avuto un'interruzione o chiedere se google.com/search ha avuto un'interruzione.Inoltre, un'interruzione può variare da un numero limitato di utenti da qualche parte a tutto il mondo.Quindi, quando chiedi se Google ha avuto un'interruzione recente, quale servizio hai in mente?
@kasperd - Penso che sia stato Google e / o YouTube ad aver avuto un'interruzione, intorno al 16 ottobre 2018.
@rcgldr Sì, ho sentito di un'interruzione di YouTube in quel periodo.Però non me ne sono accorto.Tuttavia la dichiarazione fatta da @ pipe riguardava la prima pagina di Google, non ogni singolo servizio di Google.
Nemmeno Google ottiene 5 nove per alcuni dei loro servizi.Youtube è rimasto inattivo per alcune ore questo mese.
@Qwertie quante ore nel decennio precedente?
mcgyver5
2018-10-24 13:22:59 UTC
view on stackexchange narkive permalink

Ho guardato una presentazione a una conferenza sulla sicurezza di un dipendente Netflix. Non rattoppano affatto. Invece, quando è richiesta una patch, sostengono nuove istanze e poi spazzano via quelle prive di patch. Lo fanno quasi costantemente. Lo chiamano distribuzione rosso-nera.

Interessante.Sembra una variazione di un dispiegamento continuo - forse potremmo chiamarlo "schieramento del bulldozer" - radere al suolo e ricostruire :-).
Penso che si chiami distribuzione rosso-verde ma su Netflix lo chiamano rosso-nero.
Almeno nella mia esperienza, la distribuzione rosso-verde è se si dispone di due cluster di server ridondanti e completi tra cui si passa (in una volta), mentre con la distribuzione in sequenza si ha un singolo cluster che viene aggiornato pezzo per pezzo.Ma non sono sicuro che tutti usino i termini in questo modo.
È "blu-verde", non "rosso-verde", ma la spiegazione di @sleske's è corretta.(Penso che "blu-verde" sia usato perché "rosso-verde" suona come l'approccio TDD "red-green-refactor".) Ma sì, Netflix lo chiama "rosso-nero" perché quelli sono i loro colori aziendali.
Imo questo è l'unico modo sensato per farlo se stai eseguendo un'architettura di microservizi.
Forse dovrebbero rinominarlo in "arancione- (è-il-nuovo-) nero"?
@DoktorJ Solo fino al prossimo anno, allora dovranno cambiare il nome.
sleske
2018-10-24 13:22:01 UTC
view on stackexchange narkive permalink

La risposta breve è:

Si riavviano.

Sembri presumere che Amazon e Google vengano eseguiti su un unico server, e se quello viene riavviato, l'intero sito / servizio è inattivo. Questo è molto lontano dalla verità: i servizi di grandi dimensioni in genere vengono eseguiti su molti server che funzionano in parallelo. Per ulteriori letture, esamina tecniche come clustering, bilanciamento del carico e failover.

Google, ad esempio, ha più di una dozzina di data center in tutto il mondo e ciascuno contiene un numero enorme di server (le stime sono 100.000-400.000 server per centro).

In tali ambienti, gli aggiornamenti (sia aggiornamenti di funzionalità che aggiornamenti di sicurezza) vengono generalmente installati come distribuzioni in sequenza:

  • scegli un sottoinsieme di server
  • installa gli aggiornamenti sul sottoinsieme
  • riavvia il sottoinsieme; nel frattempo gli altri server prendono il sopravvento
  • ripeti con il sottoinsieme successivo :-)

Ci sono altre opzioni, come l'hot patch, ma non sono usate così frequentemente nella mia esperienza, almeno non sui tipici siti Web di grandi dimensioni. Vedi la risposta della foresta per i dettagli.

Diamine, i server di Netflix si riavvieranno e si bloccheranno in modo inspiegabile solo per tenerti sulle spine.Lo chiamano Chaos Monkey.
@kasperd L'altro giorno ho scoperto che c'è un Chaos Kong.Elimina intere zone di disponibilità.Solo un pulsante rosso può ottenere lo stesso effetto.
Potresti aggiungere 3.5: controlla che non si sia rotto nulla.Si applica di più ad altri tipi di aggiornamenti, ma la possibilità di annullare l'implementazione nella fase iniziale è un motivo importante per renderlo lento.Ottima risposta, IMO dovrebbe essere quella accettata.
@Aron Google ha [DiRT] (https://queue.acm.org/detail.cfm?id=2371516), che è una specie di Chaos Monkey su larga scala: le interruzioni simulate di solito riguardano la perdita di interi cluster o persino di data center e uffici.
Sembra anche che l'OP presumesse di eseguire Windows 10 ...
@Mazura, un amico di un amico ha spento il suo laptop Windows 10 durante una presentazione in una conferenza dal vivo ... e l'aggiornamento ha bloccato il laptop.Ottimo PR per Windows.(Non.) Inoltre, https://worldbuilding.stackexchange.com/a/31419/16689
Ecco come aggiorno i miei microservizi.Poiché la rete è scalabile e dispone del bilanciamento del carico, una parte parziale della rete viene disconnessa dal bilanciatore, quindi l'aggiornamento viene applicato.Dopo questo passaggio, il sistema di bilanciamento del carico viene passato allo stack di servizi aggiornato.Quindi la parte obsoleta viene aggiornata.Per le persone sembra un aggiornamento senza tempi di inattività.In effetti lo è.Solo nessuno se ne accorge.
papajony
2018-10-24 13:37:28 UTC
view on stackexchange narkive permalink

Puoi selezionare " Attività di distribuzione" in "Distribuzione software". Un metodo comune consiste nell'utilizzare un Load Balancer davanti ai tuoi servizi e reindirizzare il traffico di conseguenza. In una tecnica chiamata "distribuzione blu-verde", reindirizza il traffico dai server "blu" a quelli "verdi". Questo non ha alcun tempo di inattività lato utente, a condizione ovviamente che l'applicazione possa gestirlo correttamente, ad es. tramite servizi senza stato.

Supponiamo che la tua applicazione esegua la v1 sul server blu e il tuo sistema di bilanciamento del carico diriga il traffico lì. Puoi aggiornare il server verde (che non riceve traffico) alla v2. Quindi riconfigurare il bilanciamento del carico per indirizzare il traffico al server verde. Quindi, hai eseguito l'aggiornamento dalla v1 alla v2 senza tempi di inattività.

Puoi utilizzare la tecnica blu-verde anche come parte del test. Ad esempio, si configura il sistema di bilanciamento del carico per indirizzare il 95% del traffico al server blu (v1) e il 5% al ​​server verde (v2). In questo modo puoi testare la tua nuova versione, con meno traffico e con un minore impatto sugli utenti nel caso in cui abbia dei bug.

Harper - Reinstate Monica
2018-10-27 05:44:30 UTC
view on stackexchange narkive permalink

È abbastanza facile quando le cose sono raggruppate e trasmesse tramite proxy. Perché hai molti nodi in grado di svolgere lo stesso lavoro (o diversi nel caso di archivi di dati come motori di ricerca, file system Hadoop ecc.)

Fai una ricerca sul web. Hai colpito www.altavista.com. La voce DNS elenca una mezza dozzina di indirizzi IP e il tuo client ne colpisce uno a caso. Ogni IP è un router Cisco, che gestisce il traffico verso uno degli 8 server front-end fisici (48 in totale) su indirizzi IP interni. Quel server normalizza la tua query (rimuove gli spazi, ecc.) Quindi ne prende un hash MD5. L'MD5 decide a quale dei 300 server proxy deve essere indirizzata la query. La query viene inviata al proxy tramite un protocollo standard come SOAP.

I server front-end sono intercambiabili perché gestiscono solo le richieste transitorie di una singola query. Al di fuori dei casi peggiori, un cliente ottiene la sua richiesta abbandonata. I dati RRD o altre raccolte dati vengono utilizzati per il watchdog quando un server front-end inizia a non funzionare e il traffico viene reindirizzato a un server di standby. Lo stesso si può dire dei router Cisco.


Il proxy controlla prima la sua cache . Per un riscontro nella cache, esegue la fusione della localizzazione e restituisce la risposta; fatto. Se si tratta di un "errore nella cache", il proxy distribuisce la query ai cluster di ricerca.

Se un proxy non funziona, di nuovo un'altra macchina fisica può essere sostituita con quel proxy. È un po 'più critico ora, perché i proxy non sono intercambiabili; ognuno "possiede" una piccola fetta dello spettro dei risultati della ricerca. Quindi, se la macchina 0x0000-0x00d9 si arresta, il sostituto deve sapere di intervenire per quell'intervallo. E peggio ancora, quella macchina sostitutiva avrà una cache vuota, quindi ogni query di ricerca sarà una cache mancante . Ciò aumenterà il carico sui cluster di ricerca appropriati di un po ' per proxy disattivato . Ciò significa che se rimbalzi su tutti i proxy contemporaneamente, non farlo durante le ore di punta della ricerca !

I cluster di ricerca hanno livelli simili e la ridondanza, ovviamente, e ogni segmento del database di ricerca risiede su diversi nodi, quindi se un nodo si interrompe, altri nodi possono fornire quella fetta dei risultati.


Mi sto concentrando sul proxy come esempio. La comunicazione in esso avviene tramite SOAP, la comunicazione in uscita avviene tramite un protocollo simile di alto livello. I dati in entrata e in uscita sono temporanei, ad eccezione della cache che è importante per bilanciare il carico del cluster del motore di ricerca. Il punto è che può essere scambiato istantaneamente in qualsiasi momento, con il peggior risultato di alcune ricerche che scadono. Questo è qualcosa che il server front-end noterebbe e potrebbe semplicemente inviare di nuovo la sua query, a quel punto il nuovo proxy sarebbe attivo.

Quindi se hai 300 proxy e ci vuole mezz'ora per un proxy per recuperare la sua cache e puoi sopportare che il carico del motore di ricerca aumenti del 20%, quindi puoi scambiare 1 proxy ogni 30 secondi, quindi in qualsiasi periodo di 30 minuti, 60 proxy (20%) stanno ricostruendo le cache. Supponendo che ci sia persino un urgente bisogno di andare così velocemente.

Questo esempio richiede 2-1 / 2 ore per l'implementazione e se una minaccia emergente richiede una risposta più rapida, allora o sopporti il ​​dolore di più errori nella cache o interrompi il servizio abbastanza a lungo da applicare la patch (ma nella ricerca esempio di motore la mancata riuscita della cache sarà ancora un problema quando torni su. Ho guardato i grafici RRD dopo un ricaricamento di emergenza del DB e il necessario svuotamento della cache, è qualcosa da vedere.)

Ovviamente di solito il processo può essere corretto, interrotto e riavviato senza un riavvio completo. Ho visto tempi di attività di 2 anni sui nodi di produzione.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...