9일차_헬스 체크

최지웅·2024년 11월 14일
0

인프라

목록 보기
12/19

8-1. 헬스 체크를 지원하는 도커 이미지 빌드하기

  • 클러스터에서 제공하는 컨테이너 재시작 & 교체는 프로세스가 실행 상태임을 보장할 뿐 정상상태를 의미하는게 아니다. 컨테이너 런타임은 프로세스 안에서 어플리케이션이 정상적으로 동작 중인지 알 수 없다.
docker container run -d -p 8080:80 diamol/ch08-numbers-api

curl http://localhost:8080/mg
curl http://localhost:8080/mg
curl http://localhost:8080/mg

curl http://localhost:8080/mg # HTTP 500 'Internal Server Error'

docker container ls # 컨테이너 상태 확인 결과 여전이 Up으로 나옴
  • HEALTHCHECK 인스트럭션을 사용한 Dockerfile 스크립트
FROM diamol/dotnet-aspnet

ENTRYPOINT ["dotnet", "/app/Numbers.Api.dll"] # 상태 모니터링 프로세스도 dotnet
HEALTHCHECK CMD curl --fail http://localhost/health # 정상이면 200 'OK' 응답. --fail옵션은 전달받은 상태 코드를 도커에 전달함(성공은 0을 반환)

WORKDIR /app
COPY --from=builder /out/ .
  • Dockerfile 스크립트를 변경적용. 기본값은 30초 간격으로 연속 3회 실패시 이상 상태로 간주
ch ./ch08/exercises/numbers

docker image build -t diamol/ch08-numbers-api:v2 -f ./numbersapi/Dockefile.v2 . # -f 옵션으로 Dockerfile 스크립트 경로 지정 가능
  • 헬스 체크 결과는 docker container inspect 명령으로 볼 수 있다. FailingStreak 연속실패횟수, Log 가장 최근 수행한 헬스 체크 정보.
docker container inspect $(docker container ls --last 1 --format '{{.ID}}') # 가장 최근에 만든 컨테이너 정보를 inspect로 전달
  • un healty를 해결하기 위해 도커는 컨테이너를 재시작하거나 교체하진 않는다. 도커 엔진은 단일 서버에서 동작하기에 위 작업을 알아서 수행하면 데이터가 유실될 수 있기에 헬스체크만을 수행한다. 이를 해결하기 위한 작업은 클러스터가 수행한다.

8-2. 디펜전시 체크가 적용된 컨테이너 실행하기

profile
이제 3학년..

0개의 댓글