Il ridimensionamento orizzontale si riferisce alla rotazione di più computer, io.E, VM, contenitori o server fisici al fine di soddisfare qualsiasi aumento delle richieste. Ciò è in contrasto con il ridimensionamento 'verticalmente', che di solito si riferisce alla sostituzione di una macchina più lenta (con memoria e memoria più piccoli) con un più veloce 'più grandi' uno.
Con il ridimensionamento dei contenitori di entrambi i tipi è diventato molto dinamico. È possibile impostare quote per applicazioni specifiche impostando la quantità di CPU, memoria o archiviazione a cui potrebbero avere accesso. Questa quota può essere modificata in scala o in basso, se necessario. Allo stesso modo, puoi ridimensionare in orizzontale facendo saltare più contenitori che soddisfano un aumento della domanda e successivamente ridimensionali distruggendo l'eccesso di contenitori che hai creato. Se si utilizzano servizi ospitati cloud che ti fatture per ora (o minuto), ciò può ridurre sostanzialmente le bollette di hosting.
In questo articolo ci concentreremo solo sul ridimensionamento orizzontale che non è così dinamico come la descrizione sopra, ma è un buon punto di partenza per qualcuno che impara le basi. Quindi iniziamo.
Quando si avvia lo stack dell'applicazione passando il file di composizione alla CLI docker-compose Puoi usare il flag -scala per specificare la scalabilità di un particolare servizio specificato lì dentro.
Ad esempio, per il mio file Docker-Ongose:
Versione: "3"
Servizi:
ragnatela:
Immagine: "Nginx: ultimo"
Porte:
- "80-85: 80"
$ Docker -compose up -d -su scala web = 5
Qui, il servizio si chiama web nella dichiarazione YML ma può essere qualsiasi singolo componente della tua distribuzione, i.E, Web Front-End, Database, Monitoraggio del demone, ecc. La sintassi generale richiede di scegliere uno degli elementi nella sezione dei servizi di alto livello. Anche a seconda del servizio, potrebbe essere necessario modificare altre parti dello script. Ad esempio, la gamma 80-85 di porte host viene data alle istanze di accomodamento di 5 di contenitori NGINX che ascoltano sulla loro porta interna 80, ma l'host ascolta le porte che vanno dall'80-85 e reindirizzano il traffico da ciascuna porta unica a una delle una porta unica a una delle porte uniche Istanze Nginx.
Per vedere quale contenitore ottiene quale numero di porta è possibile utilizzare il comando:
$ Docker PS -a
Comando ID contenitore ID creato
d02e19d1b688 nginx: ultimo demone "nginx -g" di ... "circa un minuto fa
34B4DD74352D NGINX: ultimo Daemon di ... "Nginx -g di ..." circa un minuto fa
98549c0f3dcf nginx: ultimo demone "nginx -g" di ... "circa un minuto fa
Nomi delle porte di stato
Fino a circa un minuto 0.0.0.0: 83-> 80/TCP Project_Web_1
Fino a circa un minuto 0.0.0.0: 82-> 80/TCP Project_Web_3
Fino a circa un minuto 0.0.0.0: 81-> 80/TCP Project_Web_2
..
Per ridimensionare più di un servizio, è necessario menzionarli individualmente con il parametro di flag di scala e numero per garantire che il numero desiderato di istanze venga creato. Ad esempio, se hai due servizi diversi devi fare qualcosa del genere:
$ docker -compose up -d -scale servizio1 = 5 -su scala 2 = 6
Questo è l'unico modo per farlo, dal momento che non è possibile eseguire il comando Docker -Op -Scale due volte uno per ogni servizio. In questo modo ridimensionerebbe il servizio precedente a un singolo contenitore.
Successivamente vedremo come è possibile impostare il valore di scala per una determinata immagine, dall'interno del docker.YML. Nel caso in cui esista un'opzione di scala impostata nel file, l'equivalente CLI per l'opzione di scala sovrascriverà il valore nel file.
Scala
Questa opzione è stata aggiunta in file docker-compose versione 2.2 e può essere tecnicamente utilizzato, anche se non consiglio di usarlo. È menzionato qui per il bene della completezza.
Per il mio documento.File YML:
Versione: "2.2 "
Servizi:
ragnatela:
Immagine: "Nginx: ultimo"
Porte:
- "80-85: 80"
Scala: 3
Questa è un'opzione perfettamente valida. Sebbene funzioni per il motore Docker 1.13.0 e sopra.
Usa le repliche in produzione
Invece di utilizzare il comando di scala o il valore di scala obsoleto nel file di composizione, è necessario utilizzare la variabile replica. Questo è un intero semplice associato a un determinato servizio e funziona praticamente allo stesso modo della variabile di scala. La differenza cruciale è che Docker Swarm è esplicitamente pensato per il sistema distribuito.
Ciò significa che è possibile distribuire l'applicazione su più nodi VM o server fisici che si svolgono su più regioni diverse e più data center diversi. Ciò ti consente di beneficiare veramente della moltitudine di istanze di servizio che sono in esecuzione.
Ti consente di ridimensionare l'applicazione su e giù modificando una singola variabile inoltre offre una maggiore resilienza contro i tempi di inattività. Se un data center è inattivo o un collegamento di rete non riesce, gli utenti possono comunque accedere all'applicazione perché un'altra istanza è in esecuzione da qualche altra parte. Se si diffonde la distribuzione dell'applicazione in più regioni geografiche, E.G, UE, USA e Asia Pacifico ridurrà la latenza per gli utenti che cercano di accedere all'applicazione da detta regione.
Mentre la scala Docker-Opse è utile per piccoli ambienti come un host Docker single in esecuzione in produzione. È anche molto utile per gli sviluppatori che gestiscono Docker sulla loro workstation. Può aiutarli a testare come l'app si ridimensionerà in produzione e in circostanze diverse. Usando il comando di scala circente la seccatura di configurare un nuovo sciame Docker.
Se hai un'istanza Docker Swarm in esecuzione, sentiti libero di giocare con le repliche. Ecco la documentazione su quella materia,