‫Quindi quel po 'di magia non era in realtà una magia. Era la rete di routing. La rete di instradamento è una
‫rete in entrata o di ingresso che distribuisce pacchetti per il nostro servizio alle attività per quel servizio, poiché
‫possiamo avere più di una attività.
‫Questo in realtà si estende su tutti i nodi, e sta usando le primitive del kernel che sono state utilizzate per un Quindi non stiamo parlando di qualche nuovo servizio di fantasia. Stiamo solo parlando delle funzionalità principali del
‫certo periodo in realtà chiamate IPVS. kernel Linux. Quello che fa qui è il bilanciamento del carico su
‫tutti i nodi e l'ascolto di tutti i nodi per il traffico.
‫Ci sono un paio di modi in cui possiamo parlare di come funziona.
‫Il primo esempio è da un contenitore all'altro.
‫Se il nostro sistema di backend,
‫come quello dei database, fosse aumentato a due
‫repliche, i frontend che parlavano con i backend, non parlassero direttamente al loro indirizzo IP.
‫Parlerebbero effettivamente con qualcosa chiamato
‫VIP o IP virtuale, che Swarm mette di fronte a tutti i servizi.
‫Questo è un IP privato all'interno della rete virtuale di Swarm e garantisce che il carico sia distribuito tra tutte le
‫attività per un servizio.
‫un ruolo di lavoratore nella tua applicazione, e avesse 10 diversi contenitori, non devi mettere un bilanciatore del carico di fronte a quello.
‫Quindi, se puoi immaginare se tu avessi
‫Questo lo fa per te.
‫Quando parli di traffico da un servizio all'interno della tua rete virtuale che parla
‫con un altro servizio all'interno della tua rete virtuale.
‫E il secondo esempio di come funziona la rete di routing è che il traffico esterno che entra nello sciame può effettivamente scegliere di colpire
‫uno qualsiasi dei nodi dello sciame.
‫Tutti i nodi worker avranno questa porta pubblicata aperta e in ascolto del traffico di quel contenitore, quindi reindirizzerà
‫il traffico al contenitore corretto in base al suo bilanciamento del carico.
‫Ciò significa che quando si distribuiscono container in uno sciame, non si deve
‫preoccuparsi di quale server è attivo perché ciò potrebbe spostarsi, giusto?
‫Se un contenitore fallisce e l'attività viene ricreata dallo sciame, potrebbe metterlo su un nodo diverso. E certamente non vuoi dover cambiare il tuo firewall
‫o le tue impostazioni DNS
‫per far funzionare nuovamente quel container.
‫La rete di routing risolve molti di questi problemi consentendo al nostro sito Web Drupal sulla porta 80 di essere accessibile da
‫qualsiasi nodo nello swarm. E in
‫sottofondo, sta prendendo quei pacchetti da quel server e poi li ha indirizzati al container. un nodo diverso, verrà instradato attraverso le reti virtuali.
‫Se si trova su
‫Se si trova sullo stesso nodo, verrà semplicemente reindirizzato alla porta di quel contenitore.
‫E non abbiamo dovuto fare nulla per abilitare questo.
‫Questo è stato tutto fuori dagli schemi.
‫Vediamo un diagramma di come potrebbe funzionare.
‫Se ho creato un servizio di newsform e gli ho detto di avere tre repliche. E ha creato tre compiti, con
‫tre contenitori, su tre nodi. All'interno di questa rete di sovrapposizione, in
‫realtà sta creando un IP virtuale mappato al nome DNS del servizio, giusto? nome DNS, è il nome del servizio.
‫E il servizio, per impostazione predefinita, il
‫In questo caso, ho creato un servizio chiamato my-web e tutti gli
‫altri contenitori
‫che ho nelle reti di overlay che hanno bisogno di parlare con quel servizio all'interno dello sciame, devono solo preoccuparsi di usare il mio web DNS. L'IP virtuale carica correttamente rimbalza il traffico tra tutte
‫le attività in quel servizio.
‫Questo in realtà non è DNS Round Robin. Questa è in realtà una configurazione leggermente diversa. Potremmo abilitarlo
‫se volessimo. C'è in realtà un'opzione per utilizzare DNS Round Robin.
‫cache DNS nelle nostre app ci impediscono di distribuire correttamente il carico.
‫I vantaggi dei VIP su Round Robin sono che molte volte le
‫Piuttosto che combattere con i nostri client DNS nella configurazione DNS, stiamo semplicemente facendo affidamento sul VIP, che è un po 'come quello che avresti se avessi acquistato
‫un sistema di bilanciamento del carico hardware dedicato.
‫Nel secondo esempio, questo mostra in realtà come
‫sarebbe con il traffico esterno in arrivo.
‫Questo è simile a ciò che abbiamo appena fatto con Drupal, dove quando ho creato quelle scatole gialle, creando un servizio, chiamato
‫il mio
‫web, e creato due compiti, e li ho applicati a due nodi diversi, ognuno di quei nodi ha una -nel servizio di bilanciamento del carico sull'indirizzo IP esterno. è quello che mi ha dato DigitalOcean.
‫Per me, perché sto usando DigitalOcean, quell'indirizzo IP Quando uso -p e lo pubblico su una porta, in questo esempio viene utilizzata la porta 80:80, qualsiasi
‫traffico che arriva a uno di questi tre
‫nodi raggiunge il bilanciamento del carico sulla porta 80:80. Il servizio di bilanciamento del carico decide quale contenitore
‫deve ricevere il traffico e se il traffico si trova o meno sul nodo locale o se
‫deve inviare il traffico sulla rete a un nodo diverso.
‫Di nuovo, questo in realtà accade tutto in background senza uno sforzo particolare da parte nostra.
‫Tutto ok. Vediamo questa rete di routing in azione.
‫Abbiamo già visto l'esempio con Drupal e come ascolta su tutti e tre i nodi.
‫Ma cosa succede se abbiamo avuto più attività che vedono che il bilanciamento del carico funziona.
‫Se creiamo un servizio di finestra mobile,
‫quello che faremo sarà utilizzare un contenitore Elasticsearch. Lo chiameremo ricerca e gli
‫daremo tre repliche. E voglio pubblicarlo sulla porta 9200, che è la sua porta predefinita.
‫In questo caso, vogliamo decisamente il: 2 in là perché è la
‫versione più semplice da implementare in questo momento. Durante la creazione, menzionerò solo che Elasticsearch
‫è in realtà un database di ricerca accessibile tramite un'API
‫web JSON.
‫Quindi è davvero facile colpire con il ricciolo e darci buoni esempi di come funziona.
‫Faccio una ricerca ps docker servizio, possiamo vedere che è stato creato intelligente ogni attività su un nodo diverso.
‫Se faccio solo un arricciamento sul mio localhost, sul
‫nodo uno sulla porta 9200 perché ho pubblicato quella porta, recupererò le informazioni di base di Elasticsearch. In parte questo creerà
‫effettivamente un nome casuale.
‫Questa è solo una caratteristica di Elasticsearch.
‫Foster,
‫e poi inizierà a ripetersi come tale.
‫Se lo faccio più volte, vedrai su questo è Patch, il server Patch, e poi una terza volta, Jane
‫Questo è in
‫realtà l'IP virtuale che funge da bilanciamento del carico e distribuisce il carico tra le tre attività.
‫Qualche altra nota sulla mesh di routing. Nel 17. 03, che è la versione su cui ti sto mostrando, la mesh di routing e il bilanciamento del carico sono attualmente un bilanciamento
‫del carico senza stato.
‫Se hai mai trattato con State all'interno del classico bilanciamento
‫del carico di Amazon o di altre tecnologie di bilanciamento del carico, sai di cosa si tratta.
‫comunicare con un client coerente, potrebbe essere necessario aggiungere alcune altre cose per risolvere il problema.
‫In pratica, questo significa che
‫se devi utilizzare i cookie di sessione nella tua applicazione o se un contenitore coerente deve
‫Immediatamente, ogni volta che si attiva un servizio con più attività, si otterrà potenzialmente
‫un risultato diverso.
‫Inoltre, se si entra nei dettagli di questo, si tratta in realtà di un sistema di bilanciamento del carico di livello 3, che funziona effettivamente a
‫livello di porta e IP.
‫In realtà non funziona al livello DNS.
‫porta, sullo stesso server, questo non lo farà ancora.
‫Se hai mai eseguito più siti Web sulla stessa
‫Avrai ancora bisogno di un altro pezzo del puzzle in cima a quello se in realtà stai volendo eseguire più siti web sulla stessa porta, sullo
‫stesso sciame.
‫Fortunatamente, questa è una richiesta abbastanza comune
‫e ci sono diverse opzioni che puoi fare per risolvere entrambi questi problemi.
‫Uno di questi è usare Nginx o HAProxy, che ci sono dei buoni esempi di contenitori che siederanno davanti alla
‫tua rete di routing,
‫e in realtà fungono da bilanciamento del carico con stato o da un livello per il bilanciamento del carico, che può anche fare il caching e molte altre cose. di questi nelle risorse di questa sezione.
‫Se ti serve, potresti voler controllare alcuni
‫Dovrei anche menzionare che se dovessi pagare un abbonamento all'edizione Docker Enterprise,
‫con esso viene qualcosa chiamato UCP o Docker Data Center, che è un'interfaccia web. Ma dovrei menzionare quell'edizione Docker Enterprise, se si ottiene un
‫abbonamento a questo per i propri nodi di sciame, in realtà viene fornito con un livello
‫incorporato per il proxy Web che consente di inserire
‫solo i nomi DNS nella configurazione Web dei servizi di sciame e tutto funziona e basta
‫