Skref 1: Búðu til einfalt forrit
Skref 2: Búðu til Docker gáma
Skref 3: Stilltu Nginx
Skref 4: Dreifðu forritinu
Þegar þú keyrir vefforrit vilt þú venjulega fá sem mest út úr auðlindum þínum án þess að þurfa að breyta hugbúnaðinum þínum í að nota fjölþráða eða flóknar atburðalykkjur. Docker veitir þér hins vegar einfalda leið til að hlaða jafnvægi á forritið þitt innbyrðis til að fá sem mest út úr auðlindum netþjónsins. Þessi grein mun sýna þér hvernig á að nota Nginx til að hlaða jafnvægi á vefforritið þitt með því að nota Docker á CentOS.
Skref 1: Búðu til einfalt forrit
Við munum nota ryð til að byggja þetta einfalda forrit. Að því gefnu að þú hafir sett upp ryð skaltu keyra cargo new webapp –bin
. Þegar vel tekst til muntu sjá möppu sem heitir webapp
. Inni í webapp
, munt þú sjá skrá sem heitir Cargo.toml
. Bættu eftirfarandi línum við það:
[dependencies.iron]
version = "*"
Næst, inni í src/main.rs
skránni, fjarlægðu allt og fylltu hana út með eftirfarandi:
extern crate iron;
use iron::prelude::*;
use iron::status;
fn main() {
Iron::new(|_: &mut Request| {
Ok(Response::with((status::Ok, "Hello Vultr :)")))
}).http("0.0.0.0:3000").unwrap();
}
Athugið: Ekki breyta IP innan forritsins. Þetta er stillt þannig að Docker geti hlustað á forritið þitt.
Þegar þú hefur lokið því skaltu setja saman forritið með því að keyra cargo build –release
. Það fer eftir netþjóninum þínum, það gæti tekið nokkrar mínútur. Ef það eru engar villur skaltu prófa forritið með því að fylgja þessum skrefum:
- Hlaupa
target/release/webapp
.
- Farðu
http://0.0.0.0:3000/
í í vafranum þínum. Skiptu út 0.0.0.0
fyrir IP tölu netþjónsins þíns.
Ef allt virkaði rétt muntu sjá "Halló Vultr :)" á síðunni.
Skref 2: Búðu til Docker gáma
Búðu til Dockerfile
og fylltu það út með eftirfarandi:
FROM centos:latest
MAINTAINER User <user@localhost>
RUN yum update -y
COPY ./webapp/target/release/webapp /opt/
EXPOSE 3000
WORKDIR /opt
CMD ./webapp
Vistaðu skrána. Búðu síðan til skrá sem heitir deploy.sh
og fylltu hana út með eftirfarandi:
DEFAULT_PORT=45710
APP_PORT=3000
DEPLOY=5
NAME="webapp"
docker build -t webapp:example .
for ((i=0; i<DEPLOY; i++)); do
docker kill $NAME$i ; docker rm $NAME$i
docker run --name $NAME$i -p 127.0.0.1:$(((i * 1000) + DEFAULT_PORT)):$APP_PORT -d webapp:example
done
Þegar þú keyrir þetta skriftu mun það byggja myndina og dreifa ílátinu miðað við magnið sem þú hefur stillt (sjálfgefið er 5). Ef gámurinn er til mun hann drepa hann og fjarlægja hann úr skránni áður en hann er notaður aftur.
Búðu til Nginx stillingarskrá og fylltu hana út með eftirfarandi:
upstream application {
server localhost:45710;
server localhost:46710;
server localhost:47710;
server localhost:48710;
server localhost:49710;
}
server {
listen 0.0.0.0:80;
location / {
expires 1w;
proxy_pass http://application;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
Skiptu út 0.0.0.0
fyrir IP tölu netþjónsins þíns.
Endurræstu Nginx með því að gera systemctl restart nginx
. Leysaðu allar villur og haltu síðan áfram í næsta skref.
Skref 4: Dreifðu forritinu
Dreifðu forritinu með því að keyra bash ./deploy.sh
.
Þú getur athugað stöðu umsóknarinnar með docker ps
- það verða búnar til 5 myndir sem byrja á webapp
. Nú, flettu http://0.0.0.0:3000/
í vafranum þínum, þú munt sjá "Halló, Vultr :)" skilaboðin aftur.
Svo, hvaða munur skiptir þetta nákvæmlega?
Ef þú keyrir viðmiðunarpróf gegn hleðslujafnvægisstillingunni, myndirðu taka eftir því að meira af netþjónaauðlindum þínum er notað, sem er það sem þú myndir vilja, sérstaklega ef forritið þitt er byggt á tungumálum eins og Node þar sem það væri venjulega einn þráður. Ef þú þarft einhvern tíma að uppfæra forritið þitt geturðu gert það og keyrt aftur deploy.sh
til að endurbyggja myndina og dreifa gámunum þínum.