1. lépés: Hozzon létre egy egyszerű alkalmazást
2. lépés: Hozzon létre Docker-tárolókat
3. lépés: Az Nginx konfigurálása
4. lépés: Telepítse az alkalmazást
Webalkalmazás futtatásakor általában a legtöbbet szeretné kihozni erőforrásaiból anélkül, hogy a szoftvert többszálú vagy összetett eseményhurkok használatára kellene átalakítania. A Docker azonban egyszerű módot biztosít az alkalmazás belső terhelési egyensúlyára, hogy a legtöbbet hozza ki a szerver erőforrásaiból. Ez a cikk bemutatja, hogyan használhatja az Nginxet webalkalmazásának terheléselosztásához a CentOS rendszeren futó Docker használatával.
1. lépés: Hozzon létre egy egyszerű alkalmazást
Rozsdát fogunk használni ennek az egyszerű alkalmazásnak az elkészítéséhez. Feltéve, hogy a rozsda telepítve van, futtassa a cargo new webapp –bin. Siker esetén megjelenik egy könyvtár, melynek neve webapp. A belsejében webappegy fájl fog megjelenni Cargo.toml. Adja hozzá a következő sorokat:
[dependencies.iron]
version = "*"
Ezután src/main.rstávolítson el mindent a fájlból, és töltse fel a következőkkel:
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();
}
Megjegyzés: Ne változtassa meg az IP-címet az alkalmazáson belül. Ez úgy van konfigurálva, hogy a Docker meghallgathassa az alkalmazást.
Ha végzett, fordítsa le az alkalmazást a parancs végrehajtásával cargo build –release. A szervertől függően ez eltarthat néhány percig. Ha nincs hiba, tesztelje az alkalmazást az alábbi lépésekkel:
- Fuss
target/release/webapp.
http://0.0.0.0:3000/Böngészőjében navigáljon ide . Cserélje 0.0.0.0ki a kiszolgáló IP-címét.
Ha minden megfelelően működött, az oldalon megjelenik a "Hello Vultr :)" felirat.
2. lépés: Hozzon létre Docker-tárolókat
Hozzon létre egy, Dockerfileés töltse ki a következőkkel:
FROM centos:latest
MAINTAINER User <user@localhost>
RUN yum update -y
COPY ./webapp/target/release/webapp /opt/
EXPOSE 3000
WORKDIR /opt
CMD ./webapp
Mentse el a fájlt. Ezután hozzon létre egy nevű fájlt, deploy.shés töltse fel a következőkkel:
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
A szkript futtatásakor a beállított mennyiség (alapértelmezett 5) alapján összeállítja a lemezképet és telepíti a tárolót. Ha a tároló létezik, megsemmisíti és eltávolítja a rendszerleíró adatbázisból, mielőtt újra telepítené.
Most hozzon létre egy Nginx konfigurációs fájlt, és töltse fel a következőkkel:
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;
}
}
Cserélje 0.0.0.0ki a kiszolgáló IP-címét.
Restart nginx csinál systemctl restart nginx. Javítsa ki az esetleges hibákat, majd folytassa a következő lépéssel.
4. lépés: Telepítse az alkalmazást
Telepítse az alkalmazást a futtatásával bash ./deploy.sh.
Alkalmazása állapotát a gombbal ellenőrizheti docker ps– 5 olyan kép jön létre, amelyek a következővel kezdődnek: webapp. Most navigáljon ide http://0.0.0.0:3000/a böngészőben, és ismét megjelenik a „Hello, Vultr :)” üzenet.
Szóval, mi a különbség ez pontosan?
Ha összehasonlító tesztet futtat a terheléselosztó konfigurációjával szemben, észreveheti, hogy a szerver erőforrásaiból több kerül felhasználásra, és ez az, amire szüksége van, különösen, ha az alkalmazás olyan nyelveken épül fel, mint a Node, ahol általában egyszálas lenne. Ha valaha frissítenie kell az alkalmazást, megteheti, és újrafuttathatja deploy.sha lemezkép újraépítéséhez és a tárolók üzembe helyezéséhez.