본문 바로가기

프로젝트 실습/Docker

Docker를 활용한 웹페이지 분산, 신규 컨테이너에 웹서버 구현

실습 목표

1. docker 컨테이너에서 웹페이지를 분산한다 (80, 81, 180) ← 3개의 포트를 활용한 분산 및 새로운 컨테이너를 생성하여 1800번 포트로 구현.

2. 신규로 생성된 컨테이너에서 새로운 웹 페이지 만들어서 띄우기.

 

1. docker 컨테이너의 80, 81, 180번 포트로 3개의 컨테이너를 생성한다.

- 3개의 컨테이너가 서로다른 포트로 서비스 하고 있는것을 확인 할 수 있다.

 

2. 2개의 컨테이너에 각각 다른내용이 나오도록 웹페이지 수정하기

- 위의 컨테이너 정보를 보면, 컨테이너의 갯수는 총 2개이다.

- 1개는 example, 또다른 하나는 example_01 이라는 컨테이너 2개가 생성되어 서로다른 포트로 서비스를 하고있다.

- exmaple은 3개의 포트를 나눠서 서비스를 하고있고, example_01은 1개의 포트에서 서비스가 되고 있는 것을 확인 할 수 있다.

- 이처럼 도커는 컨터이너별?(내가 이해한 바로는) 로 서비스가 가능한것 같다. 결론적으로 다양한 웹서버를 컨테이너별로 서비스 할 수 있으며, 컨터이너 안에서는 다수의 포트를 생성하여 동일한 서비스를 나눠서 제공할 수 있는것 같다.(부하분산?)

- 자원을 쪼개서 쓴다는 측면에서는 좋은 기술인것 같으나 설정이나 구성을 하는것에 있어 코딩요소가 들어가므로 그리고 완벽한 서비스 제어 프로세스를 이해하지 못하고선 정상적으로 서비스 하기가 힘들것 같은 생각이다.

 

3. 서로다른 도커 이미지에서의 서비스 확인하기

 

- 이해를 쉽게 하기위해 웹사이트에서의 설명을 더하겠다.

- 위의 웹사이트 순서대로 example 컨테이너의 81, 80, 180번 웹페이지를 수행한 결과이고, 마지막 php info 화면은 example_01컨테이너 에서의 1800번 포트로 접속한 결과이다.

- 다소 헷갈릴수 있으나, 이해하고나면 그리 복잡한 구조는 아니다. (결국에는 컨테이너 2개에서 다중서비스를 구현했나? 아니면 단일 서비스를 구현했는가에 차이)

- 그렇다면 도커 컨테이너안에서 포트별로 부하분산(LB)이 가능하게 구현 할 수 있지 않을까? 찾아보니 있다... ← 추후에 구현해보자

 

4. 추가로 example_01번의 index.php 파일을 수정해보자.

- 컨테이너별로 index.php파일을 수정하여 배포할 수 있다. 즉, 각각 다른 웹사이트를 배포할 수 있다는 점에서 가용성이 상당히 높다고 볼 수 있다.

- 다음에는 CloudFront를 웹서버 앞에 배치하는것과 docker이미지 안에서 부하분산을 하는 방법에 대해서 알아보자.