ABOUT ME

내가 내 일상을 잊지 않기 위해 기록해두는 곳.

Today
Yesterday
Total
  • nginx를 사용한 무중단 배포 환경 구성
    IT/SpringBoot&AWS 2022. 5. 15. 16:12

    출처 : unsplash

     

    참고 도서 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

     

    앞선 실습에서 Travis CI를 사용해서 EC2에 배포 자동화 환경을 구성하였다.

    그런데 기본 포트인 8080 포트로만 접속이 가능하므로, 만약 배포를 하게 되는 경우 잠시라도 접속이 끊기는 현상이 발생한다.

    실제 고객이 사용하는 서비스라면 장애 상황이므로 중단없이 배포 가능한 환경 구성이 필요하다.

     

    chapter 10.에서는 nginx를 사용해서 무중단 배포 환경을 구성한다.

    nginx는 리버스 프록시(외부 요청을 받아 백엔드 서버로 요청을 전달하는 기능)가 있어 무중단 환경 구성이 가능하다.

    기존 EC2 인스턴스에 추가로 nginx를 설치하면 되고, 구조는 아래와 같다.

    출처 : 도서

     

    즉, nginx가 80(http), 443(https) 포트를 할당 받고 스프링 부트 1은 8081포트로 실행하고, 스프링 부트 2는 8082포트로 실행한다.

    사용자가 80(http) 혹은 443(https) 로 접속하면 nginx가 요청을 받고 연결된 스프링 부트로 전달한다.

    신규 서비스 배포가 필요한 경우 (예시로 nginx와 8081포트가 연결되어 있다고 가정) 연결되지 않은 8082포트로 배포한다.

    정상 배포가 되면 nginx는 nginx reload 명령을 통해 연결을 8081이 아닌 8082를 바라보도록 한다. 이후 새로운 서비스 배포가 필요한 경우 반대로 진행한다.

     

    필요한 설정 사항!

    • AWS EC2의 보안그룹에는 80 포트로 접속 가능하도록 허용한다.
    • 소셜 로그인 기능인 구글/네이버에도 리딕렌션 URI에 기존 8080포트 외에 기본 포트(80) 정보 등록한다.
    • nginx가 현재 실행 중인 스프링 부트를 바라볼 수 있도록 환경 설정한다.
      • nginx 설정파일: nginx.conf
      • 수정 후 재기동: sudo service nginx restart
    • 무중단 배포를 위한 스크립트 생성

     

    댓글

Designed by Tistory.