본문 바로가기

프로젝트 실습/Docker

아파치 웹서버 + Docker 테스트

# 테스트 환경 설명

1. 테스트 설명

2개의 EC2 인스턴스안에 Docker 컨테이너를 1개씩 설치 포트 포워딩은 9090:80으로 설정했으며, 실제 대상그룹에서 통신하는 포트는 9090이 된다. 9090:80 → 9090은 외부로 서비스할 포트이고, 80은 원래 애플리케이션이 사용하고있는 포트이다.

예를들어, SpringBoot에서 백엔드 서비스의 포트번호를 9999라고 설정하고 빌드 후 Docker에서 8888번 포트로 서비스를 하고싶을 경우에는 8888:9999 라고 포트번호를 설정해 주어야 한다. (이게 별거 아닌데 가끔하면 은근히 헷갈림)

 2. 대상그룹이 바라보는 로드밸런서는 docker-test-9090 라는 로드밸런서 이고 정보는 아래와 같다.

- 부하 테스트를 위해 로드밸런서의 DNS 이름과 :80 으로 접속하여 테스트를 수행하자. 

 3. 위의 테스트 환경에 대해서 간략하게 설명을 하자면 

- EC2 2개 → 각각 Docker 컨테이너 설치 (컨테이너9090:80) → 대상그룹에 9090으로 인스턴스를 등록(9090은 Docker 서비스 포트임) → 그리고 로드밸런서에 대상그룹을 연결하면 대상그룹에 등록된 인스턴스에게 부하를 전달함(DNS주소:80(서비스포트)) → DNS주소 : 80으로 웹페이지를 접속하면 → EC2인스턴스 아파치 로그에는 ELB 헬스체크 로그만 쌓이고 아파치 접속로그는 쌓이지 않음 → Docker 컨테이너의 아파치 로그에 새로고침 F5 할때마다 번걸아 가면서 로그가 쌓임 → 결론 → Docker 컨테이너에 정상적으로 로그 쌓임 (설계도 처럼 표시하면 더 좋지 않을까?) 
- 다음작업: Docker Replicas를 생생하면 어떻게 쌓일지 궁금함... 
- Docker 컨테이너 부하 테스트도 수행 해야함

 - 여기서 주의할 점은 도커 컨테이너의 상태포트와 대상그룹의 포트가 일치해야 대상그룹에서 상태확인 시 정상으로 체크를 수행한다. 
 - 그러면 도커 컨테이너의 상태포트:서비스 포트를 80:80으로 할경우, 그리고 대상그룹의 서비스 포트를 80으로 할 경우 깔끔하게 모든 서비스가 80으로 되는거 아닐까? 
위 내용에 대해서 추후 테스트를 해봐야 겠다. 

    - [ ]  80:80 으로 변경 후 테스트
    - [ ]  리플리카 생성 후 LB 테스트 → 번갈아 LOG 찍히는지