nginx를 통한 로드밸런싱 구성

nginx로 로드밸런싱 하는 무중단 배포 환경을 만든다.

인스턴스 복제

  • 머신 이미지 기능으로 복제한다.

    • 서비스마다 스냅샷이라고 부르는 곳도 있다.

  • 선택한 인스턴스와 동일한 환경을 가지게 된다.

    • 설치한 패키지만 해당되고 젠킨스, 도커 등의 설정은 해당되지 않는다.

복제된 인스턴스 연결

  • 젠킨스 설정에서 instance-2, 3을 추가한다.

  • instance-2, 3을 추가하고 빌드 스크립트를 똑같이 입력한다.

로그 설정

  • /dev/null에서 nohup.out으로 변경한다.

  • 젠킨스 빌드 후 instance-1로 가보면 배포에 실패한다.

  • 기존에 이미 8080 포트에 서비스가 떠있었기 때문이다.

  • instance-2, 3은 도커 데몬이 실행되지 않고 있어 실패했다.

  • 데몬 실행 명령어를 입력해준다.

nginx 인스턴스 생성

  • 인스턴스는 medium으로 생성한다.

nginx 설치

nginx 실행

  • nginx 인스턴스 외부 ip로 접속만 해도 페이지가 뜨는 게 확인되면 성공이다.

로드밸런싱 설정

  • nginx 설정 파일로 진입한다.

  • include와 server 사이에 내용을 추가한다.

  • server 내부에 추가한다.

  • esc

    • shift + ;

      • wq

        • enter

nginx 로드밸런싱 설정

nginx reload

  • 접속해보면 not found가 뜬다.

  • 설정이 완료되면 nginx를 reload 해줘야 하기 때문이다.

  • 하지만 reload 해도 에러가 발생한다.

  • 에러 로그를 살펴본다.

  • 구글링 해보면 자원을 액세스 하지 못하는 문제로, rule을 추가해야 한다고 한다.

  • 명령어를 실행하고 다시 페이지에 접속하면 정상적으로 결과가 나타난다.

  • nginx에 요청을 보낸 건데도 마치 그 뒤에 있는 CPU 바운드 애플리케이션이 응답한 것 같이 나온다.

systemctl reload vs restart

  • restart

    • 서비스를 shutdown 하고 다시 시작한다.

  • reload

    • 설정 파일만 다시 로드한다.

    • 특정 파일은 적용되지 않을 수도 있어 restart가 안전하다.

Last updated

Was this helpful?