Slodzes līdzsvars ar Docker

Palaižot tīmekļa lietojumprogrammu, jūs parasti vēlaties maksimāli izmantot savus resursus, nepārvēršot programmatūru, lai izmantotu vairākpavedienu vai sarežģītas notikumu cilpas. Tomēr Docker nodrošina vienkāršu veidu, kā iekšēji līdzsvarot lietojumprogrammu, lai maksimāli izmantotu servera resursus. Šajā rakstā tiks parādīts, kā izmantot Nginx, lai līdzsvarotu tīmekļa lietojumprogrammu, izmantojot Docker uz CentOS.

1. darbība. Izveidojiet vienkāršu lietojumprogrammu

Lai izveidotu šo vienkāršo lietojumprogrammu, mēs izmantosim rūsu. Pieņemot, ka ir instalēta rūsa, palaidiet cargo new webapp –bin. Veiksmes gadījumā jūs redzēsit direktoriju ar nosaukumu webapp. Iekšpusē webappjūs redzēsit failu ar nosaukumu Cargo.toml. Pievienojiet tam šādas rindas:

[dependencies.iron]
version = "*"

Pēc tam src/main.rsfailā noņemiet visu un aizpildiet to ar šādu informāciju:

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();
}

Piezīme: nemainiet IP lietojumprogrammā. Tas ir konfigurēts tā, lai Docker varētu klausīties jūsu lietojumprogrammu.

Kad esat pabeidzis, apkopojiet lietojumprogrammu, izpildot cargo build –release. Atkarībā no jūsu servera tas var ilgt dažas minūtes. Ja kļūdu nav, pārbaudiet lietojumprogrammu, veicot šādas darbības:

  • Skrien target/release/webapp.
  • http://0.0.0.0:3000/Pārlūkprogrammā dodieties uz . Aizstāt 0.0.0.0ar sava servera IP adresi.

Ja viss darbojās pareizi, lapā redzēsiet "Sveiks Vultr :)".

2. darbība. Izveidojiet Docker konteinerus

Izveidojiet Dockerfileun aizpildiet to ar šādu:

FROM centos:latest
MAINTAINER User <user@localhost>
RUN yum update -y
COPY ./webapp/target/release/webapp /opt/
EXPOSE 3000
WORKDIR /opt
CMD ./webapp

Saglabājiet failu. Pēc tam izveidojiet failu ar nosaukumu deploy.shun aizpildiet to ar šādu:

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

Palaižot šo skriptu, tas izveidos attēlu un izvietos konteineru, pamatojoties uz jūsu iestatīto summu (noklusējuma vērtība ir 5). Ja konteiners pastāv, tas iznīcinās un noņems to no reģistra, pirms tas tiks atkārtoti izvietots.

3. darbība: konfigurējiet Nginx

Tagad izveidojiet Nginx konfigurācijas failu un aizpildiet to ar šo:

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;
    }
}

Aizstāt 0.0.0.0ar sava servera IP adresi.

Restartējiet Nginx, veicot systemctl restart nginx. Atrisiniet visas kļūdas, pēc tam pārejiet pie nākamās darbības.

4. darbība. Izvietojiet lietojumprogrammu

Izvietojiet lietojumprogrammu, palaižot bash ./deploy.sh.

Jūs varat pārbaudīt savas lietojumprogrammas statusu, izmantojotdocker ps — tiks izveidoti 5 attēli, kas sākas ar webapp. Tagad http://0.0.0.0:3000/pārlūkprogrammā dodieties uz vietni, un jūs atkal redzēsit ziņojumu "Sveiki, Vultr :)".

Tātad, kāda ir atšķirība tieši?

Ja veicat slodzes līdzsvara konfigurācijas etalonpārbaudi, jūs pamanīsit, ka tiek izmantots vairāk jūsu servera resursu, un tas ir tas, ko jūs vēlaties, it īpaši, ja jūsu lietojumprogramma ir veidota tādās valodās kā Node, kur tā parasti būtu viena pavediena. Ja jums kādreiz ir jājaunina lietojumprogramma, varat to izdarīt un atkārtoti palaist lietojumprogrammu, deploy.shlai atjaunotu attēlu un izvietotu konteinerus.

Atstājiet komentāru

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.

DDOS uzbrukumi: īss pārskats

DDOS uzbrukumi: īss pārskats

Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.

Piektdiena: kas notika ar AI vadītām automašīnām?

Piektdiena: kas notika ar AI vadītām automašīnām?

Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.

Lielo datu atsauces arhitektūras slāņu funkcijas

Lielo datu atsauces arhitektūras slāņu funkcijas

Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.

Datu glabāšanas evolūcija – infografika

Datu glabāšanas evolūcija – infografika

Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk