Баланс оптерећења са Доцкер-ом

Када покрећете веб апликацију, обично желите да максимално искористите своје ресурсе без потребе да конвертујете свој софтвер да користи вишенитно или сложене петље догађаја. Доцкер вам, међутим, пружа једноставан начин да интерно уравнотежите оптерећење ваше апликације како бисте на најбољи начин искористили ресурсе сервера. Овај чланак ће вам показати како да користите Нгинк за балансирање оптерећења ваше веб апликације користећи Доцкер на ЦентОС-у.

Корак 1: Направите једноставну апликацију

Користићемо руст да направимо ову једноставну апликацију. Под претпоставком да имате инсталиран руст, покрените cargo new webapp –bin. Након успеха, видећете директоријум под називом webapp. Унутар webapp, видећете датотеку под називом Cargo.toml. Додајте му следеће редове:

[dependencies.iron]
version = "*"

Затим, унутар src/main.rsдатотеке, уклоните све и попуните је следећим:

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

Напомена: Немојте мењати ИП у оквиру апликације. Ово је конфигурисано тако да Доцкер може да слуша вашу апликацију.

Када завршите, компајлирајте апликацију тако што ћете извршити cargo build –release. У зависности од вашег сервера, може потрајати неколико минута. Ако нема грешака, тестирајте апликацију пратећи ове кораке:

  • Трчи target/release/webapp.
  • Идите на http://0.0.0.0:3000/у свом претраживачу. Замените 0.0.0.0ИП адресом вашег сервера.

Ако је све функционисало како треба, видећете „Здраво Вултр :)“ на страници.

Корак 2: Креирајте Доцкер контејнере

Направите а Dockerfileи попуните га следећим:

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

Сачувајте датотеку. Затим креирајте датотеку под називом deploy.shи попуните је следећим:

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

Када покренете ову скрипту, она ће изградити слику и применити контејнер на основу количине коју сте подесили (подразумевано је 5). Ако контејнер постоји, он ће га убити и уклонити из регистра пре него што се поново примени.

Корак 3: Конфигуришите Нгинк

Сада креирајте Нгинк конфигурациону датотеку и попуните је следећим:

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

Замените 0.0.0.0ИП адресом вашег сервера.

Поново покрените Нгинк тако што ћете урадити systemctl restart nginx. Отклоните све грешке, а затим пређите на следећи корак.

Корак 4: Поставите апликацију

Покрените апликацију тако што ћете покренути bash ./deploy.sh.

Можете проверити статус ваше апликације помоћу docker ps- биће креирано 5 слика које почињу са webapp. Сада, идите до http://0.0.0.0:3000/у свом претраживачу, поново ћете видети поруку „Здраво, Вултр :)“.

Дакле, каква је то разлика?

Ако покренете бенцхмарк тест у односу на конфигурацију балансера оптерећења, приметићете да се користи више ресурса вашег сервера, што бисте и желели, посебно ако је ваша апликација изграђена на језицима као што је Ноде где би иначе била једнонитна. Ако икада будете требали да надоградите своју апликацију, можете то учинити и поново покренути да deploy.shбисте поново направили слику и поставили своје контејнере.

Остави коментар

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више