Balanç de càrrega amb Docker

Quan executeu una aplicació web, normalment voleu treure el màxim profit dels vostres recursos sense haver de convertir el vostre programari per utilitzar multiprocés o bucles d'esdeveniments complexos. Docker, però, ofereix una manera senzilla d'equilibrar la càrrega interna de la vostra aplicació per treure el màxim profit dels recursos del servidor. Aquest article us mostrarà com utilitzar Nginx per equilibrar la càrrega de la vostra aplicació web mitjançant Docker a CentOS.

Pas 1: creeu una aplicació senzilla

Farem servir òxid per crear aquesta senzilla aplicació. Suposant que teniu instal·lat òxid, executeu cargo new webapp –bin. En cas d'èxit, veureu un directori anomenat webapp. Dins de webapp, veureu un fitxer anomenat Cargo.toml. Afegiu-hi les línies següents:

[dependencies.iron]
version = "*"

A continuació, dins del src/main.rsfitxer, elimineu-ho tot i ompliu-lo amb el següent:

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

Nota: no canvieu la IP dins de l'aplicació. Això està configurat perquè Docker pugui escoltar la vostra aplicació.

Un cop hàgiu acabat, compileu l'aplicació executant cargo build –release. Depenent del vostre servidor, pot trigar uns quants minuts. Si no hi ha errors, proveu l'aplicació seguint aquests passos:

  • Corre target/release/webapp.
  • Navegueu fins http://0.0.0.0:3000/al vostre navegador. Substituïu 0.0.0.0-la per l'adreça IP del vostre servidor.

Si tot va funcionar correctament, veureu "Hola Vultr :)" a la pàgina.

Pas 2: creeu contenidors Docker

Creeu un Dockerfilei empleneu-lo amb el següent:

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

Desa el fitxer. A continuació, creeu un fitxer anomenat deploy.shi ompliu-lo amb el següent:

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

Quan executeu aquest script, crearà la imatge i desplegarà el contenidor en funció de la quantitat que hàgiu establert (el valor per defecte és 5). Si el contenidor existeix, el matarà i l'eliminarà del registre abans que es torni a desplegar.

Pas 3: configureu Nginx

Ara, creeu un fitxer de configuració Nginx i ompliu-lo amb el següent:

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

Substituïu 0.0.0.0-la per l'adreça IP del vostre servidor.

Reinicieu Nginx fent systemctl restart nginx. Resoleu els errors i, a continuació, aneu al pas següent.

Pas 4: implementeu l'aplicació

Desplegueu l'aplicació executant bash ./deploy.sh.

Podeu comprovar l'estat de la vostra aplicació amb docker ps- hi haurà 5 imatges creades que comencen per webapp. Ara, navegueu fins http://0.0.0.0:3000/al vostre navegador, tornareu a veure el missatge "Hola, Vultr :)".

Aleshores, quina diferència fa això, exactament?

Si executeu una prova de referència amb la configuració de l'equilibrador de càrrega, notareu que s'estan utilitzant més recursos del vostre servidor, que és el que voldríeu, sobretot si la vostra aplicació està construïda en idiomes com Node on normalment seria d'un sol fil. Si mai necessiteu actualitzar la vostra aplicació, podeu fer-ho i tornar deploy.sha executar per reconstruir la imatge i desplegar els vostres contenidors.

Deixa un comentari

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.

Atacs DDOS: una breu visió general

Atacs DDOS: una breu visió general

També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.

Us heu preguntat mai com guanyen diners els pirates informàtics?

Us heu preguntat mai com guanyen diners els pirates informàtics?

Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.

Invents revolucionaris de Google que us facilitaran la vida.

Invents revolucionaris de Google que us facilitaran la vida.

Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.

Divendres essencial: què va passar amb els cotxes impulsats per IA?

Divendres essencial: què va passar amb els cotxes impulsats per IA?

El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...

Singularitat tecnològica: un futur llunyà de la civilització humana?

Singularitat tecnològica: un futur llunyà de la civilització humana?

A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.

Funcionalitats de les capes darquitectura de referència de Big Data

Funcionalitats de les capes darquitectura de referència de Big Data

Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.

Evolució de lemmagatzematge de dades – Infografia

Evolució de lemmagatzematge de dades – Infografia

Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació