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 -aIZDAVLJENA 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 = 6To 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,