Nginx의 Docker 컨테이너가 기본적으로 graceful shutdown이되어 조금 행복합니다.
3311 단어 nginx도커kubernetes
전제 조건
아래와 같은 분들에게 조금이라도 기쁨이 전해지면 다행입니다.
graceful shutdown이란?
위키 에 의하면 「프로그램이 중대한 에러를 검출해, 어떠한 제어에 의해 정상적으로 종료시키는 것」이라고 써 있습니다. 웹 서비스를 컨테이너로 제공하는 경우에 한정하면 다음과 같은 요구 사항이 될 것입니다.
지금까지 Nginx 컨테이너의 동작
지금까지 (v1.19.4 이하) Nginx 컨테이너를 종료하면
SIGTERM シグナル
가 전송되었습니다. (Nginx의 오류 로그 수준을 notice 이하로 볼 수 있습니다. 다음 로그는 v1.19.3의 경우)이것은, docker 나 Kubernetes 의 디폴트 동작으로 컨테이너 종료시에
SIGTERM シグナル
를 송신하기 (위해)때문에입니다.참조: docker stop , docker-compose , Kubernetes
문제는 Nginx가
SIGTERM シグナル
를 받으면 즉시 종료 동작으로 이동한다는 것입니다. ( Nginx 공식 부터)그 때문에, 디폴트 설정인 채로 운용하면 경우에 따라서는 502 에러가 나오는 경우도 있었습니다.
지금까지의 해결 방법
이 문제를 피하려면 Nginx 컨테이너에
SIGQUIT シグナル
를 보내면 됩니다. ( Nginx 공식 부터)대표적인 방법은 다음과 같습니다.
약간의 일입니다만, 어느쪽이나 「그런 것 몰랐다!」라든가 「가공의 한 번거로움이 번거롭다・・・」라고 하는 것을 느끼고 있었습니다.
앞으로의 해결 방법
아무것도 하지 않아도 됩니다.
Nginx 1.19.5 이상의 이미지는 상기의
STIOPSIGNAL
의 정의를 덧쓰기되어 디폴트로 SIGQUIT シグナル
가 송신됩니다. (이하 v1.19.5의 경우)이렇게하면 graceful shutdown을 위해 Dockerfile을 괴롭히거나 preStop을 정의 할 필요가 없습니다.
조금 기쁘다.
요약
graceful shutdown이 요구 사항 서비스에서 Nginx 컨테이너를 사용하는 경우 v1.19.5 이상을 사용하면 조금 더 쉬울 수 있습니다.
그러나 구성이나 도구에 따라 Nginx 단위의 graceful shutdown이 요구 사항을 충족하지 못할 수 있습니다.
Reference
이 문제에 관하여(Nginx의 Docker 컨테이너가 기본적으로 graceful shutdown이되어 조금 행복합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ynd/items/62ec382c69fb45710cb6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)