inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

애플리케이션 배포 자동화와 CI/CD

nginx를 활용한 무중단 배포 환경 만들기

무중단 배포시 질문

해결된 질문

375

hungryo

작성한 질문수 22

1

안녕하세요.

질문이 있는데요, 무중단 배포 진행하는 과정에서 Nginx 설정 다음과 같이 하잖아요.

upstream backend_servers {

3개 서버 설정

}

 

근데 배포할 때 1번 서버가 다운되고 재기동 되는데 10초가 걸린다하면 이 10초 사이에 클라이언트가 요청했는데 1번 서버로 가면 에러나는거 아닌가요?

Nginx가 알아서 서버 헬스체크해서 에러나면 정상적인 서버로 보내는건가요?

jenkins ci/cd nginx github-webhook

답변 1

1

이준형(Foo)

hungryo님 안녕하세요~

질문 주신 내용에 대해 답변드리겠습니다.

 

배포할 때 1번 서버가 다운되고 재기동 되는데 10초가 걸린다하면 이 10초 사이에 클라이언트가 요청했는데 1번 서버로 가면 에러나는거 아닌가요?

Nginx가 알아서 서버 헬스체크해서 에러나면 정상적인 서버로 보내는건가요?

 

라고 질문 주셨는데요, 말씀하신대로 1번 서버로가면 에러가 발생합니다. 그러나 정확히는 'connection refused'가 발생할겁니다. 방화벽에 의해 포트는 막혀있지 않지만, 해당 포트에 아무 프로세스도 떠 있지 않은 경우 주로 발생하는 에러입니다. 이 경우 nginx에서는 자동으로 실패한 요청을 자동으로 다른 upstream으로 다시 포워딩하게됩니다. 이건 주기적인 헬스체크를 통해서 해당 upstream이 살아있는지 확인하는 것과는 별개로 진행되는겁니다.

 

다만 이건 기본 설정이고, upstream에서 만약 5xx나 4xx 에러를 응답하는 경우에도 다른 upstream으로 보내고 싶을 수 있겠죠? 그런 경우라면 아래와 같은 형태로 설정을 하면 되겠습니다.

 

location / {
    proxy_pass http://backend_servers;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
    proxy_next_upstream_tries 3;
}

 

질문에 대한 답변이 됐을까요?

또 궁금한 내용이 있으면 질문 남겨주세요.

감사합니다.

2

hungryo

강의에서 말씀하신 무중단 배포가 환경에 따라 지금처럼 백엔드가 가벼울 경우는 문제 없는데 무거울 경우에는 더 보완해서 다운타임을 없애야 '무중단 배포'라는 용어?를 사용하는게 맞는걸까요?

아니면 지금과 같은 환경만 구성만해도 '무중단 배포'라 말할 수 있는건가요?

1

이준형(Foo)

'무중단 배포'라는 것은 서비스에서 어떤 기능을 하고 있느냐에 따라 정의도 다르고, 적용 방법도 다를 수 있습니다.

단순히 백엔드가 가볍냐, 무겁냐의 문제는 아닙니다.

 

강의에서 적용한 nginx를 활용한 무중단 배포의 경우 클라이언트에게 오는 API 호출에 대해서는 무중단으로 배포가 가능하지만, 만약 메시지 큐에 있는 메시지를 컨슘하여 처리하거나 데이터베이스 같은 곳에 있는 데이터를 배치로 처리하는 백엔드 애플리케이션이라면 여기서 소개한 배포 방법으로는 무중단으로 배포가 되지 않을 수도 있습니다.

(강의 6분 50초 부분) Workspace 안에 index.html이 비어있음

0

30

2

강의순서가 바뀌어 있습니다.

0

32

1

build.zip 퍄일이 없습니다.

0

39

1

무중단 배포

0

56

2

workflows/deploy.yml 궁금증

0

52

2

33강 도커 빌드 강의의 docker file

0

34

1

소스코드 빈파일 문의

0

55

1

.git-credentials 파일이 없이 배포가 성공한 이유가 궁금

0

56

1

(해결 - 정보공유) /home/runner/work/_temp/6be6e~0.sh: line 1: ./gradlew: Permission denied 오류

1

63

2

(확인 완료) git config --global creadential.helper store 후에도 비밀번호 물어보는 현상

1

71

2

질문_ 강의 순서 및 그외

0

70

2

무중단 배포 / 컨테이너 이미지 관리에 주로 어떤 인프라를 활용하시나요?

0

66

1

배포에대한 질의..

1

66

1

안녕하세요 무중단 배포에대해 질문드립니다.

1

85

2

수강 추천

1

71

2

안녕하세요

1

182

3

깃헙 웹훅

1

339

3

ssh 비밀번호 일치하는데 오류가 뜹니다

1

897

3

stage view 가 안보여요

1

244

2

webhook, jenkins 작동 안되는 문제

3

478

1

젠킨스->애플리케이션 서버 접속 안됨

1

547

2

Host key verification failed. 에러만 자꾸 발생하네요..

2

803

4

jenkins 플러그인 설치 오류

2

309

1

강사님 gift code 만료됐습니다.

1

446

3