1. samm: looge lihtne rakendus
2. samm: looge Dockeri konteinerid
3. samm: konfigureerige Nginx
4. samm: juurutage rakendus
Veebirakenduse käitamisel soovite tavaliselt oma ressursse maksimaalselt ära kasutada, ilma et peaksite tarkvara teisendama mitmelõimeliseks või keerukateks sündmustetsükliteks. Docker pakub aga lihtsat viisi oma rakenduse sisemiseks laadimise tasakaalustamiseks, et serveriressursse maksimaalselt ära kasutada. See artikkel näitab teile, kuidas kasutada Nginxit veebirakenduse laadimise tasakaalustamiseks, kasutades CentOS-is Dockerit.
1. samm: looge lihtne rakendus
Selle lihtsa rakenduse ehitamiseks kasutame roostet. Eeldades, et rooste on paigaldatud, käivitage cargo new webapp –bin
. Edu korral näete kataloogi nimega webapp
. Selle sees webapp
näete faili nimega Cargo.toml
. Lisage sellele järgmised read:
[dependencies.iron]
version = "*"
Järgmisena src/main.rs
eemaldage failist kõik ja sisestage see järgmisega:
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();
}
Märkus. Ärge muutke rakenduses IP-d. See on konfigureeritud nii, et Docker saab teie rakendust kuulata.
Kui olete lõpetanud, kompileerige rakendus, käivitades cargo build –release
. Sõltuvalt teie serverist võib selleks kuluda mõni minut. Kui vigu pole, testige rakendust järgmiselt.
- Jookse
target/release/webapp
.
- Liikuge
http://0.0.0.0:3000/
oma brauseris aadressile. Asenda 0.0.0.0
oma serveri IP-aadressiga.
Kui kõik töötas korralikult, siis näete lehel "Tere Vultr :)".
2. samm: looge Dockeri konteinerid
Looge Dockerfile
ja sisestage see järgmisega:
FROM centos:latest
MAINTAINER User <user@localhost>
RUN yum update -y
COPY ./webapp/target/release/webapp /opt/
EXPOSE 3000
WORKDIR /opt
CMD ./webapp
Salvestage fail. Seejärel looge fail nimega deploy.sh
ja sisestage see järgmisega:
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
Kui käivitate selle skripti, loob see pildi ja juurutab konteineri teie määratud summa alusel (vaikimisi on 5). Kui konteiner on olemas, tapab see enne uuesti juurutamist ja eemaldab selle registrist.
Nüüd looge Nginxi konfiguratsioonifail ja sisestage see järgmisega:
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;
}
}
Asenda 0.0.0.0
oma serveri IP-aadressiga.
Taaskäivitage Nginx, tehes systemctl restart nginx
. Lahendage kõik vead ja jätkake järgmise sammuga.
4. samm: juurutage rakendus
Juurutage rakendus, käivitades bash ./deploy.sh
.
Rakenduse olekut saate kontrollida nupuga docker ps
– luuakse 5 pilti, mis algavad tähega webapp
. Nüüd navigeerige http://0.0.0.0:3000/
oma brauseris aadressile ja näete uuesti teadet "Tere, Vultr :)".
Niisiis, mis vahet sellel täpselt on?
Kui käivitate koormuse tasakaalustaja konfiguratsiooni võrdlustesti, märkate, et teie serveriressursse kasutatakse rohkem, mida soovite, eriti kui teie rakendus on ehitatud sellistes keeltes nagu Node, kus see oleks tavaliselt ühe lõimega. Kui teil on kunagi vaja oma rakendust uuendada, saate seda teha ja uuesti käivitada, deploy.sh
et pilt uuesti üles ehitada ja konteinerid juurutada.