Docker ile Yük Dengesi

Bir web uygulaması çalıştırırken, yazılımınızı çok iş parçacıklı veya karmaşık olay döngülerini kullanmak üzere dönüştürmek zorunda kalmadan normalde kaynaklarınızdan en iyi şekilde yararlanmak istersiniz. Ancak Docker, sunucu kaynaklarından en iyi şekilde yararlanmak için uygulamanızı dahili olarak dengelemeniz için basit bir yol sağlar. Bu makale, CentOS'ta Docker kullanarak web uygulamanızı dengelemek için Nginx'in nasıl kullanılacağını gösterecektir.

1. Adım: Basit bir uygulama oluşturun

Bu basit uygulamayı oluşturmak için pas kullanacağız. Pas yüklü olduğunu varsayarak, çalıştırın cargo new webapp –bin. Başarılı olduğunuzda, adlı bir dizin göreceksiniz webapp. İçinde, webappadlı bir dosya göreceksiniz Cargo.toml. Aşağıdaki satırları ekleyin:

[dependencies.iron]
version = "*"

Ardından, src/main.rsdosyanın içinde her şeyi kaldırın ve aşağıdakilerle doldurun:

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

Not: Uygulama içindeki IP'yi değiştirmeyin. Bu, Docker'ın uygulamanızı dinleyebileceği şekilde yapılandırılmıştır.

İşiniz bittiğinde, uygulamayı yürüterek derleyin cargo build –release. Sunucunuza bağlı olarak, birkaç dakika sürebilir. Hata yoksa, aşağıdaki adımları izleyerek uygulamayı test edin:

  • Koş target/release/webapp.
  • http://0.0.0.0:3000/Tarayıcınızda adresine gidin . 0.0.0.0Sunucunuzun IP adresiyle değiştirin .

Her şey düzgün çalıştıysa, sayfada "Hello Vultr :)" ifadesini görürsünüz.

2. Adım: Docker kapsayıcıları oluşturma

A oluşturun Dockerfileve aşağıdakilerle doldurun:

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

Dosya 'yı kaydet. Ardından adlı bir dosya oluşturun deploy.shve aşağıdakilerle doldurun:

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

Bu komut dosyasını çalıştırdığınızda, görüntüyü oluşturur ve kapsayıcıyı ayarladığınız miktara göre dağıtır (varsayılan değer 5'tir). Kap varsa, yeniden dağıtılmadan önce onu öldürür ve kayıt defterinden kaldırır.

3. Adım: Nginx'i yapılandırın

Şimdi, bir Nginx yapılandırma dosyası oluşturun ve aşağıdakilerle doldurun:

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.0Sunucunuzun IP adresiyle değiştirin .

Nginx'i yaparak yeniden başlatın systemctl restart nginx. Hataları giderin, ardından bir sonraki adıma geçin.

4. Adım: Uygulamayı dağıtın

Uygulamayı çalıştırarak dağıtın bash ./deploy.sh.

Uygulamanızın durumunu ile kontrol edebilirsiniz docker ps- ile başlayan 5 resim olacaktır webapp. Şimdi http://0.0.0.0:3000/tarayıcınıza gidin , tekrar "Merhaba, Vultr :)" mesajını göreceksiniz.

Peki, bu tam olarak ne fark eder?

Yük dengeleyici yapılandırmasına karşı bir karşılaştırma testi uygularsanız, özellikle uygulamanız normalde tek iş parçacıklı olacağı Düğüm gibi dillerde oluşturulmuşsa, daha fazla sunucu kaynağınızın kullanıldığını fark edersiniz. Uygulamanızı yükseltmeniz gerektiğinde deploy.sh, görüntüyü yeniden oluşturmak ve kapsayıcılarınızı dağıtmak için bunu yeniden çalıştırabilirsiniz .

Yorum bırak

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.