Docker를 사용한로드 밸런싱

웹 응용 프로그램을 실행할 때는 일반적으로 소프트웨어를 멀티 스레딩 또는 복잡한 이벤트 루프를 사용하도록 변환하지 않고도 리소스를 최대한 활용하려고합니다. 그러나 Docker는 서버 리소스를 최대한 활용하기 위해 내부적으로 응용 프로그램을로드 밸런싱 할 수있는 간단한 방법을 제공합니다. 이 기사에서는 Nginx를 사용하여 CentOS에서 Docker를 사용하여 웹 애플리케이션을로드 밸런싱하는 방법을 보여줍니다.

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

참고 : 응용 프로그램 내에서 IP를 변경하지 마십시오. Docker가 응용 프로그램을들을 수 있도록 구성되어 있습니다.

완료되면를 실행하여 애플리케이션을 컴파일하십시오 cargo build –release. 서버에 따라 몇 분이 걸릴 수 있습니다. 오류가 없으면 다음 단계를 수행하여 응용 프로그램을 테스트하십시오.

  • 를 실행하십시오 target/release/webapp.
  • http://0.0.0.0:3000/브라우저에서로 이동 하십시오. 0.0.0.0서버의 IP 주소로 교체하십시오 .

모든 것이 제대로 작동하면 페이지에 "Hello Vultr :)"가 표시됩니다.

2 단계 : Docker 컨테이너 만들기

를 작성 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 단계 : Nginx 구성

이제 Nginx 구성 파일을 작성하고 다음으로 채우십시오.

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서버의 IP 주소로 교체하십시오 .

다음을 수행하여 Nginx를 다시 시작하십시오 systemctl restart nginx. 오류를 해결 한 후 다음 단계로 진행하십시오.

4 단계 : 응용 프로그램 배포

을 실행하여 응용 프로그램을 배포하십시오 bash ./deploy.sh.

로 응용 프로그램의 상태를 확인할 수 있습니다 . docker ps시작하는 5 개의 이미지가 생성됩니다 webapp. 이제 http://0.0.0.0:3000/브라우저에서 "Hello, Vultr :)"메시지가 다시 나타납니다.

그렇다면 이것이 정확히 어떤 차이가 있습니까?

로드 밸런서 구성에 대해 벤치 마크 테스트를 실행하면 더 많은 서버 리소스가 사용되고 있음을 알 수 있습니다. 특히 응용 프로그램이 일반적으로 단일 스레드 인 Node와 같은 언어로 구축 된 경우 더욱 그렇습니다. 응용 프로그램을 업그레이드해야하는 경우 업그레이드 한 deploy.sh후 이미지를 다시 실행하여 컨테이너를 배포 할 수 있습니다.



Leave a Comment

Alpine Linux 3.9.0에서 Docker Swarm 생성

Alpine Linux 3.9.0에서 Docker Swarm 생성

소개이 안내서는 여러 개의 Alpine Linux 3.9.0 서버 및 Portainer를 사용하여 Docker 스웜을 생성 및 구성하는 방법을 보여줍니다. 그쪽으로 알아주십시오

RancherOS에 Rancher 서버 설치

RancherOS에 Rancher 서버 설치

RancherOS는 시스템 서비스를 실행하기 위해 시스템 Docker 데몬을 PID 0으로 실행하는 매우 가벼운 운영 체제 (약 60MB)입니다.

Docker-compose를 사용하여 PHP 응용 프로그램 배포

Docker-compose를 사용하여 PHP 응용 프로그램 배포

PHP 응용 프로그램은 일반적으로 웹 서버, 관계형 데이터베이스 시스템 및 언어 인터프리터 자체로 구성됩니다. 이 튜토리얼에서 우리는 활용할 것입니다

Ubuntu 18.04에 Docker CE 설치

Ubuntu 18.04에 Docker CE 설치

소개 Docker는 컨테이너로 실행되는 프로그램을 배포 할 수있는 응용 프로그램입니다. 인기있는 Go 프로그래밍 언어로 작성되었습니다.

Ubuntu 14.04에 Docker 설치

Ubuntu 14.04에 Docker 설치

다른 시스템을 사용하십니까? Docker는 컨테이너로 실행되는 프로그램을 배포 할 수있는 응용 프로그램입니다. 인기있는 Go 프로그램에서 작성되었습니다.

Docker를 사용하여 Node.js 애플리케이션 배포

Docker를 사용하여 Node.js 애플리케이션 배포

이 기사에서는 Docker 컨테이너 내에 Node 응용 프로그램을 배포하는 방법을 보여줍니다. 참고 :이 튜토리얼은 Docker가 설치되어 있고 읽은 것으로 가정합니다.

CentOS 7에 Harbor를 설치하는 방법

CentOS 7에 Harbor를 설치하는 방법

Harbor는 Docker 이미지를 저장하고 배포하는 오픈 소스 엔터프라이즈 급 레지스트리 서버입니다. 하버, 오픈 소스 Docker Distribution b 확장

Ubuntu 14.04에서 LXC 컨테이너를 안전하게 배포 및 관리

Ubuntu 14.04에서 LXC 컨테이너를 안전하게 배포 및 관리

LXC 컨테이너 (Linux 컨테이너)는 단일 호스트에서 여러 개의 격리 된 Linux 시스템을 실행하는 데 사용할 수있는 Linux의 운영 체제 기능입니다. 그

CentOS 7에서 Kubernetes 시작하기

CentOS 7에서 Kubernetes 시작하기

Kubernetes는 서버 클러스터 전체에서 컨테이너화 된 애플리케이션을 관리하기 위해 Google에서 개발 한 오픈 소스 플랫폼입니다. 그것은 10 년을 기반으로하고

우분투 16.04에 Rancher 설치

우분투 16.04에 Rancher 설치

다른 시스템을 사용하십니까? 소개 Rancher는 컨테이너를 실행하고 개인 컨테이너 서비스를 구축하기위한 오픈 소스 플랫폼입니다. 목장주 기지

CentOS 7에서 Kubeadm으로 Kubernetes 배포

CentOS 7에서 Kubeadm으로 Kubernetes 배포

개요이 기사는 Kubernetes 클러스터를 kubeadm과 함께 시작하고 실행하는 데 도움을주기 위해 작성되었습니다. 이 가이드는 두 대의 서버를 배포합니다.

CoreOS에 docker-compose 설치

CoreOS에 docker-compose 설치

이 기사에서는 CoreOS에 docker-compose를 설치하는 방법에 대해 설명합니다. CoreOS에서는 / usr / 폴더를 변경할 수 없으므로 표준 / usr / local / bin 경로를 사용할 수 없습니다.

CentOS 7에 Rancher 설치

CentOS 7에 Rancher 설치

다른 시스템을 사용하십니까? 소개 Rancher는 컨테이너를 실행하고 개인 컨테이너 서비스를 구축하기위한 오픈 소스 플랫폼입니다. 목장주 기지

CentOS 7에 Docker 설치

CentOS 7에 Docker 설치

다른 시스템을 사용하십니까? Docker는 가상 컨테이너 내에 소프트웨어를 배포 할 수있는 응용 프로그램입니다. Go 프로그램에서 작성되었습니다.

CentOS 7에서 Docker Swarm (CE)을 사용한 고정 세션

CentOS 7에서 Docker Swarm (CE)을 사용한 고정 세션

다른 시스템을 사용하십니까? Docker Swarm은 개별 서버를 컴퓨터 클러스터로 전환하여 확장 및 고 가용성을 용이하게합니다.

데비안 9의 Docker Swarm (CE)과의 끈적한 세션

데비안 9의 Docker Swarm (CE)과의 끈적한 세션

다른 시스템을 사용하십니까? Docker Swarm은 개별 서버를 컴퓨터 클러스터로 전환합니다. 스케일링, 고 가용성

Docker 사용 방법 : 첫 번째 Docker 컨테이너 만들기

Docker 사용 방법 : 첫 번째 Docker 컨테이너 만들기

이 튜토리얼은 Docker 시작의 기본 사항을 설명합니다. Docker가 이미 설치되어 있다고 가정합니다. 이 튜토리얼의 단계는

CoreOS에서 고유 한 Docker 레지스트리 설정

CoreOS에서 고유 한 Docker 레지스트리 설정

우리는 여러 시스템에서 애플리케이션 컨테이너를 생성, 관리 및 배포 할 수있는 플랫폼 인 Docker를 알고 있습니다. Docker Inc.는 서비스를 제공합니다

Docker를 사용하여 CentOS 7에서 SQL Server 2017 (MS-SQL) 시작

Docker를 사용하여 CentOS 7에서 SQL Server 2017 (MS-SQL) 시작

전제 조건 Docker 엔진 1.8 이상. 최소 4GB의 디스크 공간. 최소 4GB의 RAM. 1 단계. Docker 설치 SQL-Server를 설치하려면 Docker mus

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.