Lučki radnik

Docker-Compose skala

Docker-Compose skala
S pristanišnim kontejnerima treba postupati kao s govedom, a ne s kućnim ljubimcima. To znači da bi njihovo stvaranje, konfiguriranje, upravljanje i odlaganje trebalo automatizirati od vrha do dna. Ne stvaramo i ne konfiguriramo pojedinačne spremnike. Umjesto da se vodoravno skaliramo okretanjem više spremnika.

Horizontalno skaliranje odnosi se na okretanje više računala, tj.e, VM-ove, spremnike ili fizičke poslužitelje kako bi udovoljili bilo kojem naraslom zahtjevu. To je za razliku od skaliranja 'okomito ', što se obično odnosi na zamjenu sporijeg stroja (s manjom memorijom i pohranom) bržim 'veći' jedan.

S kontejnerima skaliranje obje vrste postalo je vrlo dinamično. Možete postaviti kvote za određene programe postavljanjem količine CPU-a, memorije ili pohrane kojima mogu imati pristup. Ovu se kvotu prema potrebi može mijenjati prema gore ili prema dolje. Slično tome, možete vodoravno skalirati okretanjem više spremnika koji će primiti povećanje potražnje, a kasnije smanjiti uništavanjem viška spremnika koje ste stvorili. Ako koristite usluge hostirane u oblaku koje vam naplaćuju po satu (ili minuti), to vam može znatno smanjiti račune za hosting.

U ovom ćemo se članku usredotočiti samo na vodoravno skaliranje koje nije toliko dinamično kao gornji opis, ali je dobra polazna točka za nekoga tko uči osnove. Pa krenimo.

Skalirajte putem CLI-ja za sastavljanje doker-a

Kada pokrenete stog aplikacija prosljeđivanjem datoteke za sastavljanje CLI-u docker-compose možete koristiti zastavu -ljestvica za određivanje skalabilnosti bilo koje određene usluge koja je tamo navedena.

Na primjer, za moju docker-compose datoteku:

inačica: "3"
usluge:
mreža:
slika: "nginx: najnovije"
luke:
- "80-85: 80"
 
$ docker-compose up -d --scale web = 5

Ovdje se usluga u yml deklaraciji naziva web, ali to može biti bilo koja pojedinačna komponenta vaše implementacije, tj.e, web front-end, baza podataka, nadgledanje demona, itd. Opća sintaksa zahtijeva da odaberete jedan od elemenata u odjeljku usluga najviše razine. Ovisno o vašoj usluzi, možda ćete morati izmijeniti i druge dijelove skripte. Primjerice, raspon host portova 80-85 daje pet smještajnih jedinica Nginx kontejnera koji svi slušaju na svom internom portu 80, ali host sluša na lukama u rasponu od 80-85 i preusmjerava promet sa svakog jedinstvenog porta na jedan od Nginx instance.

Da biste vidjeli koji spremnik dobiva broj porta, možete upotrijebiti naredbu:

$ docker ps -a
IZDAVLJENA ZAPOVJED SLIKA IDA KONTEJNERA             
d02e19d1b688 nginx: najnoviji "nginx -g 'demon od ..." prije oko minutu  
34b4dd74352d nginx: najnoviji "nginx -g 'demon od ..." prije oko minutu  
98549c0f3dcf nginx: najnoviji "nginx -g 'demon od ..." prije oko minutu  
STATUSNA LUČKA IMENA
Gore Otprilike minuta 0.0.0.0: 83-> 80 / tcp project_web_1
Gore Otprilike minuta 0.0.0.0: 82-> 80 / tcp project_web_3
Gore Otprilike minuta 0.0.0.0: 81-> 80 / tcp project_web_2
..

Da biste prilagodili više usluga, trebate ih spomenuti pojedinačno s oznakom razmjere i parametrom broja kako biste osigurali stvaranje željenog broja primjeraka. Na primjer, ako imate dvije različite usluge, morate učiniti nešto poput ovog:

$ docker-compose up -d - usluga skale1 = 5 - usluga skale2 = 6

To je jedini način da to učinite, jer ne možete pokrenuti naredbu docker-compose up -scale dvaput po jednu za svaku uslugu. Na taj bi se način prošla usluga vratila u jedan spremnik.

Kasnije ćemo vidjeti kako možete postaviti vrijednost razmjera za datu sliku, unutar dock-compose.yml. U slučaju da je u datoteci postavljena opcija razmjera, CLI ekvivalent za opciju razmjene poništit će vrijednost u datoteci.

Skala

Ova je opcija dodana u verziju datoteke docker-compose 2.2 i tehnički se može koristiti, iako ga ne preporučujem. Ovdje se spominje radi cjelovitosti.

Za moj docker-sastav.yml datoteka:

inačica: "2.2 "
usluge:
mreža:
slika: "nginx: najnovije"
luke:
- "80-85: 80"
ljestvica: 3

Ovo je sasvim valjana opcija. Iako radi za Docker Engine 1.13.0 i više.

Koristite replike u proizvodnji

Umjesto da koristite naredbu razmjere ili zastarjelu vrijednost razmjere u svojoj datoteci za sastavljanje, trebali biste koristiti varijablu replike. Ovo je jednostavan cijeli broj povezan s određenom uslugom i funkcionira gotovo na isti način kao i varijabla skale. Ključna razlika je u tome što je Docker Swarm izričito namijenjen distribuiranom sustavu.

To znači da vašu aplikaciju možete postaviti na više čvorova VM-a ili na fizičke poslužitelje koji se izvode u više različitih regija i više različitih podatkovnih centara. To vam omogućuje istinsku korist od mnoštva pokrenutih instanci usluga.

Omogućuje vam skaliranje aplikacije prema gore i dolje mijenjanjem jedne varijable, a osim toga nudi veću otpornost na zastoje. Ako podatkovni centar ne radi ili mrežna veza zakaže, korisnici i dalje mogu pristupiti aplikaciji jer se druga instanca izvodi negdje drugdje. Ako distribuciju aplikacije proširite na više geografskih regija, e.g, EU, SAD i azijsko-pacifički region smanjit će kašnjenje za korisnike koji pokušavaju pristupiti vašoj aplikaciji iz spomenute regije.

Zaključak

Iako je skala za sastavljanje dockera korisna za mala okruženja kao što je jedan domaćin Dockera koji radi u proizvodnji. Također je vrlo korisno za programere koji pokreću Docker na svojoj radnoj stanici. Može im pomoći da testiraju kako će se aplikacija skalirati u proizvodnji i pod različitim okolnostima. Korištenjem naredbe scale zaobilazi gnjavažu oko postavljanja novog Docker Swarma.

Ako imate pokrenut Docker Swarm, slobodno se poigrajte s replikama. Evo dokumentacije o tom pitanju,

Top 5 karata za hvatanje igara
Svi smo vidjeli i voljeli streaming reprodukcije na YouTubeu. PewDiePie, Jakesepticye i Markiplier samo su neki od najboljih igrača koji su zaradili m...
Kako razviti igru ​​na Linuxu
Prije deset godina malo je Linux korisnika predviđalo da će njihov omiljeni operativni sustav jednog dana biti popularna platforma za igranje komercij...
Luke komercijalnih igara s otvorenim kodom
Besplatne igre s otvorenim kodom i više platformi mogu se koristiti za igranje starih, kao i nekih prilično nedavnih naslova igara. U ovom će se člank...