Lastbalanse med Docker

Når du kjører en nettapplikasjon, vil du vanligvis få mest mulig ut av ressursene dine uten å måtte konvertere programvaren til å bruke multithreading eller komplekse hendelsesløkker. Docker tilbyr imidlertid en enkel måte for deg å lastebalanse applikasjonen din internt for å få mest mulig ut av serverressurser. Denne artikkelen vil vise deg hvordan du bruker Nginx til å lastebalanse nettapplikasjonen din ved å bruke Docker på CentOS.

Trinn 1: Lag en enkel applikasjon

Vi vil bruke rust for å bygge denne enkle applikasjonen. Forutsatt at du har rust installert, kjør cargo new webapp –bin. Ved suksess vil du se en katalog som heter webapp. Inne i webappvil du se en fil som heter Cargo.toml. Legg til følgende linjer:

[dependencies.iron]
version = "*"

Deretter, inne i src/main.rsfilen, fjern alt og fyll den med følgende:

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

Merk: Ikke endre IP-en i applikasjonen. Dette er konfigurert slik at Docker kan lytte til applikasjonen din.

Når du er ferdig, kompilerer du programmet ved å kjøre cargo build –release. Avhengig av serveren din, kan det ta noen minutter. Hvis det ikke er noen feil, test programmet ved å følge disse trinnene:

  • Løp target/release/webapp.
  • Naviger til http://0.0.0.0:3000/i nettleseren din. Erstatt 0.0.0.0med IP-adressen til serveren din.

Hvis alt fungerte som det skal, vil du se "Hei Vultr :)" på siden.

Trinn 2: Lag Docker-beholdere

Opprett en Dockerfileog fyll den med følgende:

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

Lagre filen. Deretter oppretter du en fil som heter deploy.shog fyller den med følgende:

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

Når du kjører dette skriptet, vil det bygge bildet og distribuere beholderen basert på mengden du har angitt (standard er 5). Hvis beholderen eksisterer, vil den drepe og fjerne den fra registret før den distribueres igjen.

Trinn 3: Konfigurer Nginx

Opprett nå en Nginx-konfigurasjonsfil og fyll den med følgende:

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

Erstatt 0.0.0.0med IP-adressen til serveren din.

Start Nginx på nytt ved å gjøre systemctl restart nginx. Løs eventuelle feil, og fortsett til neste trinn.

Trinn 4: Implementer applikasjonen

Distribuer applikasjonen ved å kjøre bash ./deploy.sh.

Du kan sjekke statusen til søknaden din med docker ps- det blir opprettet 5 bilder som starter med webapp. Nå, naviger til http://0.0.0.0:3000/i nettleseren din, vil du se "Hei, Vultr :)"-meldingen igjen.

Så, hvilken forskjell gjør dette egentlig?

Hvis du kjører en benchmark-test mot belastningsbalanserkonfigurasjonen, vil du legge merke til at flere av serverressursene dine blir brukt, noe du vil ha, spesielt hvis applikasjonen din er bygget på språk som Node der den normalt vil være entrådet. Hvis du noen gang trenger å oppgradere applikasjonen din, kan du gjøre det og kjøre på nytt for deploy.shå gjenoppbygge bildet og distribuere beholderne.

Legg igjen en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer