Press "Enter" to skip to content

GOTO 2015 • Deploying like a Boss: From 2 Servers to 20,000 • Oliver Nicholas


benvenuto ne parleremo
schierando come un boss dal viaggio
davvero da due server fino a decine di
migliaia quindi il mio nome è Oliver Nicholas
a volte noto per il manico grande o per
ovvi motivi se cinque piedi e nove e
sai che stiamo per parlare
le distribuzioni che sono a sono veramente a
argomento elettrizzante ed eccitante la maggior parte del
tempo in questo contesto siamo fondamentalmente
parlando dell’atto di prendere il tuo
codice da un posto e poi metterlo
in un altro posto dovrai scusarti
il mio uso assurdo di effetti di transizione questo
non è il mio primo rodeo, ma questi sono simili
troppo divertente da non usare quindi è un po ‘
più eccitante del semplice spostamento dei bit
intorno abbiamo anche bisogno di toccare il carico
gestione del bilanciamento che è un altro
tavolo da pranzo davvero terribile
argomento di conversazione e anche il
distribuzione di questi artefatti di costruzione I
so che questo è l’ultimo discorso prima di pranzo
Ricordo di aver letto uno studio simile
se si trattasse di un’audizione sulla commissione di libertà, io
avrebbe una probabilità davvero bassa di
ottenere di ottenere la condizionale così giusto
resta con me Prometto che sarà una specie di
interessante quindi prima di tutto veloce
sfondo chi sono e che cosa giusta
devo parlare di questo per un po ‘
mentre lavoro come ingegnere del personale questi
giorni con uber Technologies Incorporated
siamo ciò che è noto come un TNC
società di rete di trasporti e così via
facciamo questa app straordinariamente popolare
che collega operatori indipendenti
con gente che sta cercando di ottenere posti
lo facciamo in 311 città attraverso 57
paesi oltre un milione di volte al giorno
più rilevante per questo discorso sul retro
fine lo facciamo con circa 300 separati
da micro a macro
servizi questi sono un po ‘ diversi
ordini di grandezza del traffico che
questi servizi servono distribuiti attraverso
da qualche parte tra i due e i tremila
server / data center e siamo una specie di
cambiando costantemente questo, ma è
tra due e quattro data center a destra
ora stai sempre ridimensionando e intendi noi
fare almeno decine di implementazioni al giorno
attraverso tutti i nostri servizi quindi è così
il codice e l’ambiente molto attivi
muoversi molto spesso e noi
bisogno di essere vogliamo mantenere agile che vogliamo
essere in grado di fare tutte le distribuzioni
il tempo non preoccuparti troppo di loro
in modo cruciale voglio essere in grado di rotolarli
anche io personalmente ho fatto il mio primo
pagina web in seconda media ero davvero
orgoglioso di questo a circa 96 così ho
stato lavorando su questo problema di come fare
ottieni il tuo codice da un posto a
un altro per un tempo piuttosto lungo ho preso il mio
primo lavoro in un piccolo incubatore a San
Francisco ha chiamato Google Labs che eravamo
come cinque ragazzi in una stanza abbastanza grande per
tenere quattro ragazzi penso e il nostro
le distribuzioni sono piuttosto frequenti
portato giù il sito ho preso il mio secondo
lavoro nel 2008 a guaito nella mia seconda settimana di
lì in realtà ho preso il sito da
implementando presto un codice che funzionasse
con la versione di Python che avevamo
negli ambienti dev e stage ma
non ha funzionato con la versione di Python
che stavamo correndo nella produzione
ambiente che è stata una vera lezione
ho imparato come testare il codice prima
si spegne e poi nel 2012 mi sono iscritto
uber che come ho detto abbiamo molto
di codice per spostarsi da luogo a luogo quando
Sono arrivato un po ‘nel tempo
Sono arrivato lì e abbiamo raggiunto un certo livello
punto a quel punto ho riscritto un po ‘di
lo script di distribuzione principale e poi ho dato
ad altre persone in modo che potessero
usalo per far cadere il sito dal tempo
per tempo è una cosa che mi piace
Mi piace pensare a questo è come a
lezioni apprese attraverso errori drastici
e milioni di dollari in entrate perse
è un buon modo per interiorizzare tutto
casa che è un po ‘su di me quindi cosa fare
intendiamo per sistema di distribuzione questo è il
un termine generico vago credo da alcuni
misure che potresti includere nei build server
vedi I server qualsiasi altro pre di integrazione
prove di volo che potresti avere il
tutta la produzione di rilevamento
infrastruttura i bilanciatori di carico ma io
voglio parlare in modo specifico del
evoluzione del pezzo che fa il
copia dei pezzi e tipo di porta
loro vivono così che come distribuzione e
orchestrazione quindi tuffiamoci e guardiamo
prima come sorta di un tipico nascente
sistema di distribuzione nascente quando si è il primo
iniziare su un progetto lo trovo
è brutale ma lo trovo spesso
questo è fondamentalmente il primo
incarnazione di uno script di distribuzione per la maggior parte
la maggior parte dei progetti che sono là fuori voi
basta premere come nel tuo terminale o
cerca la tua cronologia di bash per il
l’ultima volta che hai eseguito questo comando da
il tuo locale come scatola di sviluppo e uso
questa combinazione SCP tar vecchia scuola
nel caso ci sia qualcuno a cui non piace
familiarità con questo tar è questo tard
risale al 1979 ed è letteralmente come è
archivio su nastro ci sono un sacco di cose dentro
il nostro caso d’uso richiede una directory e
combina in un unico file
che puoi quindi copiare su un altro
server e poi spiacevole e sorta di
fa riferimento alla directory originale
struttura SCP spero davvero che tutti lo sappiano
quella copia sicura invia semplicemente il tuo
bit su una connessione SSH, se vuoi
per diventare un vero janky potresti usare il nostro
CP e non preoccuparti di tutto ciò che fastidioso
crittografia ma poi questo il secondo
comando che vediamo in questa pipeline
che fa un tar
l’ output di quello a un comando SSH
che poi eseguono qualche codice da remoto
la seconda parte solo non mirata sul
host di destinazione e poi il terzo
pezzo alla fine lì proprio come
riavvia il tuo codice inizia il nuovo
codice e in realtà questo è anche questo
è un hub su cui puoi costruire questo
in realtà programmi che fanno alcuni dei
combinare alcuni di questi passaggi verso il basso
c’è il nostro lavandino che è piuttosto tipico
uno solo saprai che stai scrivendo
il tuo codice che hai colpito torna al tuo
la storia di bash ha colpito il tuo comando arsenico
e affonda solo i cambiamenti
file modificati questo è fondamentalmente ciò che è nostro
il sink è bravo a esaminare la mod x on
i tuoi file e forse hash di loro e
quindi decide cosa deve effettivamente ottenere
trasferito sul filo quindi quindi
l’ultima parte lì a destra sta appena ricominciando
il processo presenta gli inconvenienti di questo
non è atomico stai cambiando il codice
file mentre il codice è in esecuzione
significa se conosci qualche modulo
che non era stato caricato ma che è
improvvisamente caricato da una nuova richiesta
entra in avrete versioni miste di
i tuoi file funzionano come in entrata nel programma
lo spazio ci può essere un impatto sulle prestazioni
durante questo durante questo processo perché
stai facendo un sacco di lavoro sul
host che sta effettivamente eseguendo il codice
prima ancora di fare lo spiegamento
non esiste una gestione del bilanciamento del carico I
significa questo riavvio proprio qui a seconda
su come lo hai scritto che potrebbe solo
come uccidere il processo e avviarlo
di nuovo così potresti abbandonare l’esistente
connessioni potresti avere la tua P e
accessibile per un po ‘mentre questo è
accadendo è solo una specie di fragile
elaborare la cosa grandiosa di questo è
che è dannatamente facile da fare e a
questa fase probabilmente non si cura di
lasciando cadere il traffico potresti non averlo
molte richieste in arrivo o potrebbe non
potrebbe non costarti nulla se cadi
alcuni colpi, quindi questo è davvero come me
penso che molti progetti inizino ed è un
totalmente modo appropriato penso di iniziare
la maggior parte dei progetti soprattutto quando si è solo
avere un singolo server che sei
schierando a ma
se sei fortunato il progetto cresce e
quindi spostati qui al medioevo I
chiamali dove ne abbiamo alcuni
progetti esistenti là fuori che ci aiutano
fare implementazioni che sono davvero davvero
come relativamente parlando abbastanza robusto
e potrebbe portarti molto lontano e dentro
Il fatto può portarti come puoi portarti a
un po ‘troppo lontano e tu finisci
con alcune situazioni piuttosto dolorose come
inizi a scalare il livello intermedio
sistemi di distribuzione sei davvero arrivato
con queste queste librerie di terze parti
come Capistrano e tessuto questo è
veramente identificabile come evoluzione di
questa pipeline SCP tar queste librerie
sono solo questi scritti di dsl
lingue di livello superiore capas Ruby fabric
come una libreria Python e fondamentalmente
stanno solo incapsulando la tua sessione ssh
gestione vengono con tutti questi
metodi di convenienza per cose come
copia di password di pseudo password incustodita
file intorno a catturare e analizzare
standard anche i rollback vanno bene
lontano su questi tipici setup potrebbe coinvolgere
tutte le cose che vediamo qui come costruiscono il
prendere il codice nel target di implementazione
l’obiettivo fuori dal servizio di bilanciamento del carico
chiudere l’app scambia un link simbolico a
inserire la nuova versione dell’app in
posiziona l’app su heart check
i controlli sanitari scaldano il bersaglio
di nuovo nel bilanciamento del carico e poi
passare al prossimo host e questi
le cose sono così simili al tessuto Capistrano
c’è così tanta convenienza per loro
con questo tanto codice questo sono io
non conosco 10 15 linee che puoi effettivamente
ottenere tutti quei passaggi che sono giusti
ecco quindi questi sono questo è questo è
roba piuttosto potente che richiede davvero
ti porta piuttosto lontano i professionisti
ecco che questi sono open-source
librerie sono già state scritte
per te sono davvero facili da usare
ci sono un sacco di ricette là fuori per
lo speciale come qualsiasi tipo di speciale
caso potresti avere praticamente strani
flusso di lavoro di distribuzione che si desidera eseguire
qualcuno probabilmente ha già scritto
il codice per
tu e realisticamente sono bravi
abbastanza per davvero nelle decine di
server dopo di che inizi a correre
problemi strani, le cose vanno sempre
sbagliato con almeno un server quando si
avere più di decine di loro o anche come
50 di loro potrebbero essere la tua sceneggiatura
il giorno fa qualcosa di veramente stupido
prova ad aprire cento SSH
le connessioni in una volta sovraccaricano qualcosa
o altre cose iniziano davvero a cadere
e così devi fare molto di più
sintonizzare un sacco di lavoro attento dopo decine
di server che trovo e poi i contro questo
è così questo non è abbastanza buono per
centinaia di server sei ancora
essenzialmente utilizzando questa vecchia scuola
pipeline SDP tar che vuol dire questo
hai un singolo nodo che ha il tuo
copia canonica del tuo codice su di esso e it
diventa abbastanza facile bussare a quello o
qualcos’altro sopra come un intero rack
se quando hai 100 200 300 di produzione
server e tutto in una volta lo chiedi a tutti
loro per scaricare un metallo 300 da questo
un server centrale che puoi estendere
da quello penso quando sono arrivato a uber
gli script di distribuzione in generale
farebbe ssh su ogni macchina e fare un idiota
tirare in realtà stanno mantenendo un locale
copia di un clone git del repository
e poi fare una build su quell’host ma
questo ha tutti i tipi di problemi
dove stai facendo il lavoro di costruzione è
molto costoso non è particolarmente
sicuro mazzo di problemi lì e poi
questi hanno scarso supporto per multiutente
ambienti non c’è nessun blocco
attorno al processo di distribuzione anche se
puoi risolvere questo, tu puoi conoscerlo
avere una distribuzione 01 e questo è il tuo
server di distribuzione e devi ssh in
lì e usa un po ‘di blocco per
impedire a più persone di eseguirlo
ma in realtà non è così
sentirsi bene quando sei una specie di decine di
dipendenti è più difficile coordinare il tuo
distribuisce e hai un sacco di server per
andare ad esso inizia davvero a diventare abbastanza
fragile un rapido da parte qui costruire
distribuzione questa è la copia effettiva
dei bit fino ad ora siamo stati in esecuzione
SCP rsync qualunque sia da un singolo host o
forse facendo questa cosa davvero strana con
facendo ottenere tira
host remoto ma sei ancora allora
tirando il repository git da un singolo get
questo server non durerà davvero
molto prima che inizi a correre
alcune situazioni difficili, davvero
voglio evitare questo singolo punto di
fallimento perché quei singoli punti di
fallimento soprattutto quando stai correndo
i tuoi rack completi puoi frequentemente
puoi davvero rovesciare altri pezzi
di infrastrutture e quali no
abbastanza da fare approcci più scalabili
possiamo fare la costa incendiaria a più livelli, così noi
può invece di avere solo il codice
andare su un server possiamo incendiare due
tre o quattro ospiti intermedi sono
come il numero logaritmico del totale
numero di deploy house e poi sei
bersagli schierati a caso scegliere uno dei
quegli host di rsync probabilmente da più
popolare come si ottiene un po ‘più grande di te
può attaccarli in qualche modo
equivalente o una sorta di distribuito
il file system HDFS sarebbe il popolare
uno non consiglierei di giocare troppo
con NFS per questo, ma perfettamente fattibile
e poi ottieni di più in più
opzioni esotiche che conosco che Facebook usa
BitTorrent per distribuire la loro build
artefatto ora il loro artefatto di costruzione come me
capisci che è un singolo multi gigabyte
eseguibile in modo da sapere che BitTorrent è
buono per questo perché è buono a
frammentare file di grandi dimensioni e in modo efficiente
distribuire ciò che intorno a te potrebbe tutto
tipi di cose veramente belle come make
certo che preferiscono i pari che sono sul
lo stesso rack di cui hai così tanto
benefici dalla località di rete ma
questo è un po ‘più di ciò che hai
scrivere i propri client BitTorrent e
server per questo ma davvero questi questi
sorta di host a più livelli o file distribuito
i sistemi sono un bisogno definito una volta
arrivare a centinaia di server e poi
sono un requisito assoluto una volta che tu
arrivare a migliaia okay così presto
invecchia dal modo in cui abbiamo guardato il
sistemi intermedi vediamo cosa noi
può fare dopo decine di server per il
orchestrazione attuale come possiamo
reimagine questo questo intero modello in a
modo più scalabile il reale sottostante
il problema qui è che tutti questi sistemi
sono stati spinti in generale in qualsiasi momento
stai lavorando da un server fuori
ad altri server dove il numero di
le connessioni in uscita sono un fattore del tuo
ridimensionamento del tuo servizio che stai per
hai intenzione di incorrere in problemi
questa è solo una sorta di ridimensionamento generale
Principio Penso che quando si dispone di server
diventare inaccessibile durante il
spiegamento con questi vecchi sistemi scolastici
ottieni tutte queste stranezze strutturali
problemi soprattutto se li stai colpendo
in serie uno dopo l’altro se l’host
non è giù di esso non risponde se
è sovraccarico se la racchetta è accesa
sovraccarico di tutti i tipi di cose può accadere
e poi quando ciò accade, devi
prendere decisioni abbastanza difficili
cosa fare un server non risponde fare
abbandoni l’intero schieramento
indietro l’intera distribuzione continui a rotolare
avanti quanto tempo aspetti
questo significa che tutte le tue implementazioni
prendi sei ore perché ti colpisci
il pulsante e andare via e loro no
rendersi conto che ci sono cinque host che sono
interno e poi se continui a rotolare
finisci con questo nel modello push
finisci con questa consistenza dolorosa
problema dove vengono i tuoi vecchi server
di nuovo online, non gli manca
messaggio che avrebbero dovuto
aggiornamento e stanno facendo funzionare vecchie versioni
del codice e nessuno lo sa davvero
su di esso e così ti sei mescolato
versioni in produzione in modo che possiamo risolvere
questo invertendo la logica per essere un tipo
del modello basato sulla trazione dove i nostri nodi fogliari
i server delle app
andando a ping in un server centrale e
dì cosa dovrei fare qui piuttosto
che fare affidamento su questa spinta è bello
tipico penso inversione di controllo
tipico penso che questa sia la proprietà di ridimensionamento
sorta di un sistema basato su obiettivi in ​​cui il
questi server foglia stanno per dire cosa
quale stato dovrei essere e poi
stanno andando a fare il lavoro sul loro
proprio che lo orchestreranno
anche loro per entrare in quello stato
una volta superato un paio di app e a
paio di server che sei 2.2 esso
inizia a diventare piuttosto scomodo quando
quelle sceneggiature della vecchia scuola dove hai
questo difficile tornare indietro boo dove hai
questo elenco di server che conosci questa app
distribuisce sui server 165 a cui inizia
mi sento davvero molto brutto con cui lavorare e
i dati sono difficili da raggiungere non è facile
condividere tra gli script che potrebbero essere necessari
quella informazione su quale servizio è
schierato dove così specificatamente in uber
risolviamo questo essenzialmente con questo
Database di gestione dell’hardware chiamato
custo questo è un progetto che è stato scritto
dal ragazzo è un giorno tornare nel giorno
ed è davvero solo questo
database di gestione costituito da
server oggetti e pool e poi tu
può cercare informazioni per pool
o dal server in modo che tu possa dire da questo
dati qui che un PO è nel
rack di produzione doppio oh un servizio a
e il servizio è pool e quindi potresti
anche cercare e dire quali sono i
server che sono nel servizio un pool
e così ottieni questo programmatico
interfaccia per scoprire come il tuo dove
il tuo hardware è custo stesso anche questi
questi oggetti server sono piuttosto carini
ricco e così noi in realtà li immagazziniamo tutti
le informazioni su di te sanno quanto
la memoria è su questa macchina quanto disco
lo spazio avrebbe CPU quel tipo di cose io
lo consiglio vivamente una volta arrivato a
alcune dimensioni dell’infrastruttura, se lo sei
gestire i propri server un po ‘meno
pertinente se sei su AWS o qualcosa del genere
da qualche parte
okay, abbiamo questo modello di tiro e come
mettiamo in gioco ciò che abbiamo costruito
la tua stessa cosa ti ha chiamato schierare quale è la
la specifica per questo è solo leggermente
meno sfocato che appare qui
quindi in pratica c’è un coordinatore
ogni data center che è la scatola all’interno
la scatola in alto lì e poi questi grandi
le scatole nere sono i data center
il coordinatore in basso è chiamato a
intermedio e poi un lavoratore su ogni
distribuire il target su ogni host di app che siamo
correndo mettiamo uno di questi lavoratori
i lavoratori stanno tirando il coordinatore
ogni tanto per il loro stato di destinazione
cosa cosa cosa dovrei fare cosa?
versioni del codice dovrei avere
localmente cosa dovrei essere in esecuzione che
tipo di cosa il coordinatore lo colpisce
database di custo e questo lo sai a
concetto priori di quali macchine sono in
il pool di servizi e quindi può essere utilizzato
quello e una politica di distribuzione associata per
ogni singolo servizio che conosce
sul punto di decidere come istruire questi
server quando fanno richieste come
procedere così è questa politica di distribuzione
personalizzabile in modo da poter dire cose come
hai fatto in modo che il coordinatore possa procedere
con in realtà dare il via alla distribuzione
una volta il novanta per cento dei server è
scaricato il codice e quindi ciò lo consente
a tipo di automatizzare il
problemi di coerenza che potresti avere
con un’infrastruttura veramente grande e
macchine che periodicamente entrano e
uscire dalla disponibilità e poi il
i coordinatori intermedi prendono spunto
dal primario non appena le distribuzioni
sono in qualche modo iniziati così in realtà
eseguire le nostre implementazioni in parallelo
attraverso i data center questo diventa carino
importante lo sai da quando è nuovo
il data center è essenzialmente quello che sai
altre duemila macchine così abbiamo
pensare a questo è l’ obiettivo
sistema basato incidentalmente il modo in cui noi
non hanno configurato questi coordinatori
sono il ping o dispiaciuto questi lavoratori sono
eseguire il ping del coordinatore ogni 30 secondi
o così e poi non appena inizi
dare il via a una schieramento nel ragazzo di YouTube
UI che ti mostrerò tra un secondo
la prossima volta uno di quei lavoratori fa il ping al
coordinatore per un aggiornamento dello stato e il
il coordinatore sa che i lavoratori di
una macchina in cui sarà coinvolto
questo schierare dice andare in overdrive
ping me ogni cinque secondi e in quel modo
possiamo ridurli in generale
caso su cui non abbiamo troppo carico
il sul coordinatore ma quando siamo
effettivamente facendo una distribuzione delle macchine
che sono rilevanti per lo possiamo faranno
ping più spesso possiamo più strettamente
coordinare la linea del tempo per fare un più veloce
distribuire quindi mostrerò un paio di pezzi qui
questa è una specie di prima pagina
vedi queste sono tutte le cose che hanno
API e il nome ed è gentile
ottieni l’app stessa del tipo di
app sai che c’è un’app di nodo e
ci sono alcune app di Python alcune di base
pagine statiche vedi quante istanze
ci sono e la salute di loro così possiamo
vedi su questo terzo in giù che quattro di
questi casi sono in cattivo stato
e il resto è in buono stato
è bello, vediamo quello che abbiamo
abbiamo effettivamente schierato quando l’ abbiamo fatto
stato della distribuzione corrente, immagino
questo è questo è il tipo di controllo
il cruscotto di controllo per praticamente
tutte le implementazioni su uber questo sarebbe
il punto in cui scavi in ​​un singolo
servizio sei praticamente impossibile
vedi ma stai vedendo che puoi
effettivamente distribuire tra stage o
ambienti di produzione che puoi scegliere come target
questi separatamente e poi sul fondo
qui in realtà stai vedendo lo stato di
ogni server che esegue questo
codice così quando quei nodi foglia sono quando
quei lavoratori stanno facendo il ping lì dentro
stanno dando aggiornamenti di stato al
il coordinatore e il coordinatore possono
mostrali in questa interfaccia utente, quindi in realtà è a
sistema piuttosto ricco che ha funzionato
bene per una sorta di nelle centinaia di
server penso che penso che ci sarebbe un
un sacco di problemi una volta arrivati ​​in decine di
migliaia per ogni servizio dato ma
funziona bene fino a questo punto, quindi vai
nel coordinatore e avresti calciato
fuori da una distribuzione e cosa stai vedendo qui
è per quello di quei servizi API
si preme il pulsante di costruzione e in realtà
è piuttosto bello va e colpisce il
il repository git e mostra un elenco di
l’ultimo si impegna e puoi sceglierne uno
loro e questo è quello che stai per
fare una build di premere il pulsante, quindi facciamolo
dì in questo in questo caso è la versione
ABC e andrà a fare una build e
crea l’artefatto di costruzione in questo
caso sarebbe un fine virtuale Python
ma potrebbe essere che sai potrebbe essere un
contenitore docker in alcuni casi o potrebbe
essere qualsiasi tipo di qualsiasi tipo di
artefatto quindi la prossima volta che gli operai
sono coinvolti in ciò che è fatto la costruzione
la prossima volta i lavoratori che sono su questo
macchine di servizio come rapporti di cluster
la prossima volta chiamano il coordinatore
sta per dirgli hey la lista dei
versioni del codice che dovresti avere
include questa versione ABC e poi una volta
il coordinatore dalla sua politica di implementazione
è soddisfatto che abbastanza dei server
avere il codice può passare a quello successivo
fase della distribuzione in cui inizia
attivandoli in tranches e loro sono
andando loro sono proprio come il ping nella sua
dirò che è il coordinatore
andando a sapere oh ti ho già fatto
conosci le prime due finestre così ora sono
facendo server da 20 a 30 quindi quando
quei ragazzi vengono a dare loro un aggiornamento
indicazione di quale versione del codice
che dovrebbero essere in esecuzione e poi il
distribuire gli obiettivi POI effettivamente gestiti
i loro aggiornamenti da lì rimuovono
stessi dal bilanciamento del carico
attivare il nuovo codice scaldarlo e
quindi si restituiscono nella produzione
pool quindi spinge davvero spinge il lavoro fuori
del fuori del coordinatore in modo che
in realtà è solo un lavoro passivo
l’ordine del numero di lavoratori che
sono là fuori anche mentre questo è
succede il coordinatore è parlare con
altri sistemi che stanno monitorando il
salute del servizio che è in corso
distribuito in modo che possiamo guardare cose come
tempi di risposta l’eccezione di modifica
i tassi salgono e quindi possono
il coordinatore può quindi dalla sua angolazione
avviare un rollback in modo che possiamo come quelli
i lavoratori sono in pignone ogni cinque secondi
può dire oh, dobbiamo esserci
dobbiamo o abortire o possiamo andare
torna all’ultima versione del codice e
manteniamo più versioni del codice
presente sugli obiettivi di distribuzione in modo che
è molto veloce per fare il rollback così
ci sono alcuni inconvenienti che siamo ancora
pool di server statici lì in custo
piuttosto che in un file ma significa questo
il tipo di implementazione si basa sull’avere
questa strana mappatura statica del servizio a
server lento per aggiornare il tipo di imbarazzante a
trattare e quindi significa anche questo
i deploys devono essere piuttosto affissi
che come una distribuzione completamente nera di rosso così
se ho 10 server nel servizio API
pool quando vado a fare un deploy bene io
posso prendere come due di loro fuori
aggiornali li rimettili in due
più aggiornali li rimettili in
il massimo che posso portare a qualcuno
il tempo è essenzialmente sai come è a
fattore di come il mio provisioning eccessivo
il servizio è e quanto sono a mio agio
riducendo la capacità quindi se si sintonizza questo
sbagliato una distribuzione che va bene durante
il basso traffico potrebbe effettivamente mettere fuori gioco
il tuo servizio durante un traffico intenso
periodo e così perché abbiamo solo quelli
dieci quei dieci servizi per lavorare con così
è che può essere un po ‘limitato così
questa è una specie di roba divertente
in realtà la mia attuale area di concentrarsi su questo
è ciò a cui sto lavorando io stesso adesso
il futuro bene dove stiamo andando
prendi questo in modo che possiamo superare il
restanti limitazioni finché non ne troviamo alcuni
più limiti quanti sondaggi rapidi come
molte persone qui hanno familiarità con
un buon numero di mezzos ok, va bene
mezzos è questa gestione delle risorse
conduit innestabile del motore per la programmazione
compiti di lavoro contro le risorse del server
la gente di mezzos lo chiama un distribuito
sistemi Colonel ce ne sono molti
c’è un sacco di grande nomenclatura
intorno all’ecosistema del mezzos questo
è un po ‘come sembra
è essenzialmente la gestione dei cluster
nella fondazione Apache in questo momento
consiste di questo temo che questo sia un
pulsante di accensione o un pulsante laser non lo sono
andando a rischiare è costituito da a
set di alta disponibilità di nodi master
che sono coordinati da un guardiano dello zoo
core e quindi un’istanza slave
così è in esecuzione su ogni nodo di lavoro
questo è in realtà in qualche modo gentile
di simile a come lo distribuisci funziona
questo è dove diventa strano questi schiavi
fare offerte di risorse al maestro loro
Diciamo che ho così tante CPU tanta memoria
tanto spazio su disco disponibile è gentile
di fresco puoi definire risorse personalizzate
che viene offerto anche attraverso e
allora il maestro passerà a quelli
offre a questi framework che è
configurato con questo caso che ho messo
maratona lassù ma c’è Jillian
altri e poi questo merita
quadro decide di avere un lavoro
che voglio correre che si adatta a questo
risorsa offerta che ho appena stata data
Ho il server che ha il tag
conosci la versione 313 del kernel e l’ho
stato detto che ho 12 core e
ventiquattro concerti di ram con cui lavorare
Voglio programmare qualcosa qui e se
lo vuole accettare e poi passa
questo è il numero di risorse del mio lavoro
ha bisogno che questo sia il lavoro che voglio che tu corra
e questa è la goccia che è
corri così poi c’è questo tipo di
riconoscimenti che vanno avanti e indietro
succede una specie di magia e poi la tua
il codice inizia a funzionare e quindi il
decrementi dello slave è disponibile
risorse così la prossima volta che lo fa
un’offerta che rifletterà il fatto
che hai appena esaurito alcuni di quelli
core e alcuni di quelli alcuni di quella ram
e questo non ha davvero a che fare con il
parte la distribuzione del codice quindi tutte quelle cose
che siamo andati oltre è ancora una specie di
rilevanti per questo sono esempi veloci così
lo schiavo potrebbe fare un’offerta che tu sai
22 core e 32 giga di ram
il maestro lo invia al
quadri il quadro potrebbe accettare a
parte di esso e informare il maestro così io
voglio una CPU e voglio 64 mega di RAM
e basta eseguire il comando sì, probabilmente
conoscere il sì è come il mio
comando preferito per fare questo perché
mastica solo un core per la pagina man
è probabilmente la mia pagina man preferita in
UNIX è ripetitivo affermativo
l’unica cosa che dice si stampa appena
sì a standard fuori in un ciclo stretto e
allora la prossima offerta avrebbe preso
questo in considerazione è tutto abbastanza
Magia è tollerante ai guasti se lo schiavo
si blocca sta facendo un po ‘di controllo
localmente e poi quando ricomincia
di solito può capire dove
era possibile anche configurarlo in modo che se
si blocca e ricomincia da capo
posso solo dire che può solo dichiarare
il fallimento uccide tutto ciò che è
ricominciare da capo se il master si blocca
poi ci sono questi altri maestri
in questo quorum da cui può subentrare
e poi le strutture è una specie di
interessante quindi il quadro è il
cosa che importa di ciò che è in realtà
correre in mezzo è il monitoraggio individuale
istanze ma il quadro è l’unico
quello ha programmato il lavoro nel primo
posiziona così le strutture l’una
apparentemente a cui importa
la struttura dovrebbe durare
impegnarsi su quello che pensa lo stato di
il cluster è appena prima di raccontarlo
questo è ciò che voglio che tu faccia così
se il framework si arresta in modo anomalo all’avvio
backup ha questo elenco di compiti che
pensa che sia programmato e poi può
chiedi questa procedura di riconciliazione
dove posso dire hey mezzos cosa fai
sai che conosci il compito a e mezzos
può controllare il suo stato che è stato
comunicato tra schiavi e padrone
e dire che questo è lo stato in cui è
ancora in esecuzione è bene andare o è
perso è scomparso mentre eri via
e dovresti aggiornare il tuo interno
stato per riflettere questo e così è
il mezzo è praticamente questo
sistema straordinariamente semplice per
ripartizione fisica come un ammasso
risorse per questi quadri che vogliono
fare il lavoro e puoi davvero correre
quello che vuoi
puoi eseguire contenitori che puoi eseguire
processi lo ordinate di configurarlo
in ogni caso davvero si vuole veramente
hanno aggiunto un sacco di cose davvero interessanti
supporto per l’impostazione automatica vedere
gruppi in modo da poter ottenere l’isolamento delle risorse
è che è ancora abbastanza bello ordinare
di primi giorni anche se molto lavoro
sta succedendo qui, così noi siamo uber
specificamente guardando in profondità nell’iniziare
per implementare un particolare framework chiamato
maratona quindi questo è uno di quei mezzos
essenzialmente i plugin lo hanno descritto come
un cluster ampio e sistema di controllo
per servizi in gruppi C o docker
contenitori con supporto integrato per
varie politiche di distribuzione simili a
lo distribuisci fa la sua salute
controllarlo fa i rollback automatici
che sono tutti configurabili che è
piuttosto dolce e parlerò di più
la sovrapposizione tra questa e la distribuzione
in appena un secondo ma ha anche questo
sistema di vincoli davvero dolce, quindi posso
dire qualcosa come un pisolino che voglio
di distribuire questo in modo uniforme
rack che è grandioso per te lo sai
riducendo il tipo di modalità di errore di
la tua applicazione puoi dire che non è così
inserisci più di un’istanza di questa app
su qualunque server se ne hai bisogno per
qualche motivo in cui potresti dire solo
macchine schierate che hanno questo certo
taggagli su di loro come una versione del kernel o a
Versione Python o qualcosa del genere così
è un modo abbastanza ben definito per
ottenere vincoli specifici sul tuo
schieramenti così questo esempio ho ragione
qui è come un modo molto veloce per piacere
l’elettricità bruciata è possibile con solo
come pochi clic di questo pulsante alcuni
pochi tocchi con un clic di un pulsante che puoi
puoi distribuire 300 istanze di sì
che attraversa la tua infrastruttura e
questo è fondamentalmente il test
tutto il giorno è abbastanza divertente
ha anche questo ottimo riposo, quindi questa interfaccia utente
la tua scena è davvero solo un giocattolo
davvero bene così come li integriamo
due cose che cosa è quello che vogliamo
fare integrando loro distribuire ha
qualche tassa impressionante
è già così bello
interfaccia per navigare nei nostri repository di codice
e per dare il via alle build che ha
l’autorizzazione autenticata ti supporta
sapere se hai requisiti PCI o
se hai un’organizzazione di sei
cento ingegneri come noi facciamo questa roba
inizia a diventare più importante e anche
probabilmente molto personalizzato per il tuo
l’organizzazione che distribuisci ci dà
coordinamento su più dati
centri che non è una caratteristica che è
veramente in mezzo mezzo siz non progettato
è quello di correre attraverso i datacenter
sicuramente non progettato per correre
data center quindi diventa una specie di
importante e otteniamo questo ordine superiore
funzionalità di rollback del controllo dello stato
possiamo costare che l’abbiamo personalizzato per guardare
presso la nostra infrastruttura particolare e
sapere cosa pensiamo sia un cattivo aspetto di implementazione
nel nostro si conosce il monitoraggio delle eccezioni
sistemi che tipo di cose ma mezzos
la maratona ha alcune caratteristiche della suite come
beh, già li hanno già costruiti tutti
questa roba per i maestri di alta disponibilità
con la coordinazione di guardiani dello zoo è una specie di
bello averlo già fatto come più
sposta davvero l’attenzione dall’individuo
istanze a cui piacciono i gruppi di lavoro
mezzo schiavi stanno seguendo individualmente
istanze ma quando un’istanza muore è
non come oh questa è la macchina che era
dedicato a eseguire quell’istanza che abbiamo
per riavviarlo sul posto è hey che hey
qualcosa è morto e lo schiavo riferisce
che esegue il backup del report del master master
impostare per il quadro il quadro
decrementa la sua corsa conta di uno e
la prossima volta riceverò un’offerta di cui ho bisogno
pianificare una nuova istanza di questo lavoro
da qualche parte sull’infrastruttura così noi
non mi importa davvero di quelle persone
istanze perché in un abbastanza grande
le cose infrastrutturali muoiono tutto il tempo
come se ti imbattessi in eccezioni fatali a sinistra
e giusto sai che non lo farò
sai che ottieni un capovolgimento di raggio cosmico e
improvvisamente qualcosa si blocca solo
succede così il tuo team ops lo farà
sicuramente lo apprezzo
caratteristico inoltre omogeneizza il
risorse del cluster quindi non sei veramente
pensando tanto all’individuo
server tanto quanto un vasto mare di CPU
e arieti, dischi e cose
e probabilmente starò solo seduto così
facciamo come stiamo andando a combinare
questi due stiamo solo andando a schiacciarle
insieme e buona vecchia composizione cosa
in realtà faremo è lasciarti
distribuire tipo di essere il cervello e l’interfaccia utente
che decide cosa viene schierato e quando
viene schierato e sorveglia
come la salute dei cluster e poi lasciamo
Mezzos Marathon gestisce la distribuzione
strategia di allocazione delle risorse
salute quel tipo di cose al primo ordine
approssimazione in questo diagramma va bene così
un’altra cosa bella è che rende l’auto
ridimensionare molto più facilmente spostando il
concentrati da dove vuoi esplicitamente
istanze da correre per darmi un po ‘
restrizioni operative e dimmi come
molti casi per eseguire la mezzos marathon
aiuta davvero a risolvere questo facendo il lavoro
parte del ridimensionamento è facile da scalare
l’app quindi è ciò che vogliamo automatizzare
il fare prendendo la decisione del ridimensionamento
quindi stiamo iniziando a lavorare ancora
in corso credo che stiamo iniziando a
affrontare questo in pratica siamo noi
guardando a correre tutto ciò che
ci schieriamo sotto un gruppo di mare o sotto un
finestra mobile contenitore dell’infrastruttura
supporta davvero entrambi i casi ma dà
sei un duro isolamento delle tue risorse
processi in esecuzione questo ti dà la giusta
metriche di utilizzo granulose per ogni
servizio che stai attraversando
la tua infrastruttura e poi da quella
puoi derivare la decisione di ridimensionamento in modo da te
può guardare una sorta di risorsa globale
utilizzo per te conosce il servizio API
e dire che questa cosa sta diventando troppo simile
novanta percento del suo utilizzo della CPU
questo probabilmente indica che è così
servire troppe richieste per
la quantità di lavoratori che sono là fuori
aumentiamo il numero di lavoratori
stiamo ancora lavorando su questo è
ovviamente devi stare molto attento
che non scrivi qualcosa
ridimensiona accidentalmente il servizio del server
a nulla o utilizza tutto il tuo cluster
risorse a causa di alcuni downstream
dipendenza o blip momentaneo c’è a
molto smorzamento, ma questo è
tra questi due tra fare il lavoro
di ridimensionamento e automatizzazione della decisione
scalare improvvisamente la tua squadra operativa
ha molto meno roba da fare quale è
che è piuttosto dolce, ho passato due anni
a uber come l’ultimo su richiesta
ogni politica di escalation e posso dirlo
tu che questo sarebbe stato questo sarebbe
hanno reso il venerdì notti molto di più
piacevole per quei due anni, quindi questo è
tutto ciò che fai interagire con una maratona
ed è in realtà abbastanza facile da scrivere
il tuo oh dio per scrivere il tuo
quadri per mezzos il the the
l’interfaccia è veramente tranquilla
semplice e così un giorno potremmo
portati solo a giocare e a promuoverlo
in un quadro mezzos completo per ora
la maratona ha già molte di queste cose
costruito in modo che ora lo stiamo usando
ci sono un milione di altri mezzos
le strutture là fuori sono davvero persone
come è davvero divertente da vedere in
mondo dell’infrastruttura alcuni ce ne sono una tonnellata
di messa a fuoco che sta succedendo a questo cluster
spazio di gestione quindi c’è il mezzo
google ha Cooper Nettie che è giusto
tipo di andato fuori quello che mi manca qui
gli stessi docker hanno appena rilasciato un
sciame che è un tipo simile di
motore di orchestrazione così le persone lo sono
davvero iniziando a cogliere questo
siamo davvero come un mondo come un
mondo delle infrastrutture ci stiamo allontanando
da bene ci stiamo allontanando dal piccolo
i sistemi che stiamo muovendo ci stiamo muovendo
verso il consumo di grandi gruppi di calcoli
capacità e un sacco di persone stanno mettendo
sforzo in questo e così le persone hanno
scritto una tonnellata di quadri mezzos che
è bello, c’è questo compito
scheduler c’è maratona twitter ha
il loro che è
fantastico, voglio dire, è praticamente tutto
caratteristica paragonabile alla maratona chiamata
Aurora puoi lanciare Hadoop sulla scintilla
tempesta Chronos Chronos è un airbnb
progetto per l’esecuzione di lavori di tipo cron su
le persone del tuo gruppo di mezzos stanno facendo
file system o archivi dati in modo da voi
può ottenere framework per Twitter di HDFS
appena rilasciato uno ha chiamato il mio Zoe per
eseguendo il mio sequel su mezzos non immagina
impostazione individuale dei miei server sequel
e sto solo avendo questo gigante mezzos
cluster che gestisce tutti i tuoi vari
carichi di lavoro e stai dicendo e tu sei
Mi piace come il mio sequel e così via
distribuisce automaticamente in voi sapete
topologie di replica appropriate
le macchine è carina, è piuttosto sorprendente
con come l’isolamento delle risorse quello
avresti bisogno del loro iper tavolo
Cassandra puoi ottenere elasticsearch
quadro c’è un quadro Jenkins così
puoi semplicemente far ruotare i tuoi schiavi Jenkins
molto facilmente sul cluster ms-dos e poi
c’è questo cray in questa lingua della cappella
c’è questa programmazione parallela
lingue che sono state essenzialmente
portato a lavorare sotto i mezzos
quadro per utilizzare le risorse di porzione
fuori dalla mesosfera i ragazzi stanno facendo un
lavoro piuttosto sorprendente con questo lì dentro
Gruppo di venture capital di San Francisco
alcuni penso dipendenti di Twitter e
gente da ogni parte e loro sono lì
sono davvero concentrati su
avanzare lo stato dell’arte con
mezzos che è abbastanza bello per
vedi così il lungo viaggio per arrivare qui noi
inizia da questa semplice pipeline di shell
avanzato a questi livelli più alti
il linguaggio dsl è quello che automatizza molto
dei dadi e bulloni nitty gritty di
questi sistemi per noi, una volta arrivati
ad una certa scala si ha realmente bisogno di
invertire il flusso di controllo così invece di a
spingere il modello hai una specie di modello di tiro
quindi ti piacerebbe una volta che arrivi
una scala ancora più grande che desideri
inizia ad astrarre anche il concetto
dei singoli server in una certa misura come
tanto quanto è possibile costruire sui blocchi
hai già
è così che non lo fai
a te non devi pensare a a
milioni di cose vanno male in una volta
pensa solo alla salute del tutto
e poi devi anche lavorare su questi
modelli di distribuzione a disponibilità più elevata
come ci si arriva da quando un server lo farà
non sarà in grado di alimentare il codice per
le tue migliaia di server nel tuo
infrastruttura che ovviamente è un bene
problema di avere così andare avanti e distribuire
come un genio del male e siamo una coppia
minuti presto felice di prendere qualsiasi
domande se ce ne sono su questo
Top titillating immagino che scusa per
il tuo sistema di ridimensionamento automatico per maggio così
signore usa come una specie di complesso
sistema di elaborazione degli eventi per quella luce
fonde la fusione o una grande domanda che ho
uno stagista che ha iniziato una settimana fa
oggi chi è come un junior e noi siamo
andando molto semplice per iniziare con quello che abbiamo
impostare il monitoraggio essenzialmente in modo che su
ogni nodo di lavoro su ogni nodo slave noi
stanno segnalando al nostro stat centrale
metriche di utilizzo del server per tutto il
istanze in esecuzione su quel particolare
nodo di lavoro e poi c’è un
aggregare in quel server stat che conosci
su un server di grafite che dice di sapere
Utilizzo della CPU al 95 ° percentile per
il servizio a è il settanta percento e lo siamo
in questo momento è letteralmente tirato fuori
o forse guarda i cinque minuti
una media finale di dieci minuti e poi e
e ho in mente un obiettivo oh, voglio questo
per essere questo dovrebbe essere sempre a sessanta
percentuale di utilizzo e poi se è spento
da quello calcolato in base al numero
di CPU che ogni istanza ottiene e il
numero di istanze che sono attualmente
schierato o ha bisogno di aumentare questo
molto o ridimensiona così tanto che sai
prima revisione sputa solo a
la seconda revisione della raccomandazione avrà
in realtà piace fare il cambiamento stesso
e poi lo renderemo di più
sofisticato lascia che reagisca più rapidamente
sai prima di tutto che vuoi essere veramente
molto attento con questo perché ho
conosci questo ragazzo seduto accanto a me lui
stava controllando come ubers
infrastruttura che risulta
la gestione è un po ‘sensibile
e quindi sì, è una specie di nostro
modello penso che ci vorrà un po ‘di tempo
prima di entrare in qualcosa di più
sofisticato come lo sai controller
meccanismo per farlo e farlo
rendere la matematica più interessante ma
che ci sarà di sicuro a un certo punto

Please follow and like us: