Docker | Node Express 로드 밸런싱(Load Balancing)을 ?!? [1편]

DoItDev·2021년 5월 2일
0
post-thumbnail

👂 들어가기 앞서서

저번 포스팅에 이어서 도커로 빌드를 해보는 시간을 알아보면서
로드 밸런싱을 구현을 해보고자 한다.
일단 하는 이유중 하나는 로드 밸런싱을 말로만 많이 듣기만 해본상황이라 여러가지로 구현을 해보자 라는 마인드로 포스팅을 하기 시작했고 타입스크립트 와 노드 로 쉽게 가보려고자 했다.

🧐 로드 밸런싱이란?

로드밸런서는 한대의 특정 서버에 많은양의 사용자가 접속함으로써 발생하는 시스템 부하, 속도저하, 서버다운 등의 문제를 해결하기 위해 두대이상의 서버 구성을 통해 네트워크 트래픽을 분산하여 트래픽 폭증 및 서버의 장애상황이 발생하더라도 안정적인 사이트 운영을 보장하는 고가용성 부하분산 서비스 입니다.
참조: 로드벨런싱

azure-loadbalancer

🥸 노드 서버 도커(Docker)로 빌드하기

지난시간에 이어서 시작을 하려고 합니다. 지난번에 만들었던 node & typescript 를 이용하여서 간단하게 서버를 만들었습니다.
아래의 화면에서 보면 4000 포트로 서버를 띄었었는데요. 이제 이 노드 서버를 도커로 빌드하려고 합니다.

스크린샷 2021-05-01 오후 8 09 16

Dockerfile 작성하기

잠깐 설명을 하자면 node 버전의 서버에서
Root 유저로 webapp 에서
서버의 package.json 을 복사를 해서
npm을 설치를 하고
카피를 해서 src 에서
npm start 을 한다.

FROM node:12-alpine
USER root
WORKDIR /webapp
COPY package.json /webapp/package.json
RUN npm install
COPY . /src
WORKDIR /src
CMD npm start

Docker Build

Docker build 커맨드

docker build -t 테그명:테그버전 dockerfile path
docker build -t nodeapp:latest .

스크린샷 2021-05-01 오후 9 05 00

Docker Push

docker push 를 하는 이유는 이 도커 이미지를 Docker Hub 에 이미지를 올리려고 한다.
일단 서버에 인터넷도 되는 상황이고 docker설치 를 해놓은 상황이라 hub를 이용하여 서버에 올리려고 한다.

스크린샷 2021-05-01 오후 9 04 43

Docker Container

도커 이미지를 컨테이너로 띄어주면 된다.

docker run -it -d -p [local port]:[application port] 이미지명

스크린샷 2021-05-01 오후 9 10 36

하나를 4000 포트로 띄어주고 두개 더 똑 같은 방식으로 띄어준다.
4001 , 4002 포트로 열어 주 었다.

스크린샷 2021-05-01 오후 9 10 28

🤑 마치며

이렇게 컨테이너를 3개를 넣어 올려 놓고 마무리를 다음편에서 하려고 한다.
nginx 와 몇가지 설정을 마치고 작성을 하려고 한다.
이렇게 로드밸런싱을 구현을 한번 해보고 나중에 현업에서 사용을 기회가 된다면 사용을 해보려고 한다.
기회가 날지 안날지 모르겠지만 .... 그래도 로드밸런싱이라는 것을 아는것에 의미를 두고 포스팅을 끝내고 다음편에 이어서 하도록 하겠다
이상!! 👊

profile
Back-End Engineer

0개의 댓글