ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Django] - AWS CloudWatch 사용시 로그가 2번 찍히는 이유
    공부/Django 2023. 5. 27. 23:44

    AWS ECS Fargate로 서비스를 운영하고 있는데, 로그를 확인 해 보면 동일한 로그가 2번씩 찍히는 모습을 확인 할 수 있다.

    해당 부분에서 내가 어떤 문제를 겪고 있나,,,, 혹시 테스크 2개로 돌리고 있는건 아닐지 걱정은 했지만, 2가지 모두 문제는 아니였다.


    일반적으로 django 서버를 실행하는 구조가 Nginx - Gunicorn - Django 이다.
    AWS 에서 실행을 할 때에도 동일한 구조인데, 여기서 ALB(LB-로드밸런서)의 Health Check는 Django의 상태를 확인하기 위해서 사용된다. 

    ALB의 Health Check는 웹 서버의 상태를 확인하기 위해서 주기적으로 상태를 확인하는 요청을 보낸다.(나는 30초로 설정하였다.)

    ALB는 Nginx를 통해 Django로 요청을 전달하고, Django는 Gunicorn을 통해 요청을 처리한다.
    여기서 로그가 2번씩 보이는 것이다.

    다시 설명하자면,

     

    1. ALB는 웹 서버 Health Check를 위해 Django에 요청을 보낸다. (ALB -> Django)

    2. Django의 구조 상 Nginx가 요청을 먼저 처리하기 때문에 Nginx에서 로그를 생성한다.(ALB -> Nginx)

    3. Django는 Nginx에서 요청을 받는다. (Nginx -> Django)

    4. Django는 요청에 대한 응답을 Gunicorn 통해 처리한다. 이때 Django에서 로그를 생성한다.(Django(Gunicorn)-> Nginx)

    5. Nginx는 다시 ALB로 전달한다. 이때도 Nginx는 로그를 생성한다.

    6. ALB는 응답을 확인하고 Django의 상태를 확인한다.

     

    실제로 Django와 Nginx는 각 2번의 로그를 생성한다.(요청과 응답을 반복하기 때문에)

    실제로 Nginx의 로그만 2번이 찍혀있는데, 이유는 클라이언트와 직접 통신을 하는건 Nginx이고, Django는 직접 통신이 아닌 Gunicorn을 통해서 실행을 하고 Gunicorn이 Nginx와 통신을 하기때문이다.

     

    - 어떤 문제를 해결하기 위해 검색하고 블로그에 작성한 글입니다. 부족한점이 많지만 틀린점이나 부족한점이 있다면 말씀해주시면 감사하겠습니다.

     

     

    댓글

Designed by Tistory.