Docker/Docker 입문

도커 입문 16 - 도커file ( nginx를 로비 서버로 활용 )

_Jin_ 2024. 12. 26.

 

 

 

😎다룰 내용

도커 파일로 NGINX를 로비서버로 설정하는 방법에 대해서 알아보자.( 단일 진입 경로 서버 )

 

NGINX를 사용해서 로비 서버를 구성하는 실습을 진행하기 위해서 아래와 가이 프로젝트의 폴더 구조를 구성했다.

 

각 서버 실행하기

server1과 server2 폴더가 있고

각 폴더 하에 있는 도커 파일은 아래와 같다. 

 

모두 nginx 서버 내용을 담은 도커 파일이다.

FROM nginx

COPY webapp /usr/share/nginx/html

ENTRYPOINT ["nginx", "-g", "daemon off;"]

 

그리고 각 폴더의 webapp에 있는 index.html은 아래와 같이 작성되었다. 

 

✅ server1 폴더의 index.html 파일 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h1>nginx server1</h1>
</body>
</html>

✅ server2 폴더의 index.html 파일 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h1>nginx server2</h1>
</body>
</html>

 

이제 각 폴더에 따른 build를 실행한다.

 

빌드 후에 각 이미지가 만들어진 상태를 확인할 수 있다. 

 

이제 각 이미지를 8080 port와 8070port로 실행하고 접속하여 확인해보면 잘 작동함을 확인할 수 있다.

 

server 1 - 8080 port 으로 접근

 

server 2 - 8070 port 으로 접근

 

이와 같은 과정을 거쳐서 각 서버가 제대로 실행되고 있다.

그리고 이제 nginx를 가지고 LB 서버를 만들려고 한다. 

 

로비 서버 만들기( LB 서버 )

LB서버란 아래의 그림과 같이 각 서버로 진입하기 위한 단일 진입 경로로 작동하는 서버이다.

(프록시 서버라고도 부른다 - 프록시 = 대행자

 

그리고 이에 대한 기능을 LB 폴더에서 진행할 것이다.

 

그리고 conf 파일에서 다음과 같은 구성 파일을 작성하였다.

먼저 upstream 변수는 server 설정에서 NGINX가 받아들인 요청을 어떤 서버로 흘려보내 줄 것인지 결정할 때 사용된다. 보통 위와 같이 IP와 PORT를 지정해주는 것으로 설정이 끝난다.

 

여기서 각 IP에 대한 정보는 inspect 명령어를 통해서 살펴볼 수 있다.

아래의 과정을 살펴보면, 컨테이너에 대한 inspect를 실행하고 하단에서 컨테이너에 대한 IP주소를 살펴볼 수 있다.

 

< docker inspect 컨테이너ID > 명령어를 통한 ip 주소 확인

 

IP 주소 

 

그리고 서버 설정에서 /server1 url로 요청이 들어오면, upstream에서 지정한 IP주소로 http://+IP주소에 맞춰 할당된다.

이제 해당 설정을 컨테이너에 넣기 위한 docker file을 아래와 같이 작성하고 build 후에 컨테이너로 실행한다.

 

FROM nginx

COPY conf/nginx.conf /etc/nginx/conf.d/default.conf

ENTRYPOINT ["nginx", "-g", "daemon off;"]

 

 

이제 각 서버에 직접 접근하는 방식이 아닌 lb 서버에 접근하여 url에 따른 각 서버로 접근할 수 있게 되었다.

 

 

댓글