본문으로 바로가기

docker

category Server 2021. 9. 15. 19:18
    반응형

    docker swarm

    https://upcloud.com/community/tutorials/load-balancing-docker-swarm-mode/

    docker health check

    docker service create
    --name simple
    --publish published=8000,target=5000
    --health-cmd 'curl -f http://localhost:5000/health'
    --health-timeout=3s
    --health-retries=3
    --health-interval=10s
    --health-start-period=10s
    --replicas=2
    madvirus/simplenode:0.2
    주요 옵션은 다음과 같다.

    --health-cmd : 정상 상태인지 확인할 때 사용할 명령어를 입력한다. 이 명령어는 컨테이너 내에서 실행된다.
    --health-timeout : 명령어의 실행 시간 제한을 지정한다. 이 시간 내에 명령어 실행이 끝나면 정상이 아닌 것으로 판단한다.
    --health-retries : 지정한 횟수만큼 연속해서 실패하면 정상이 아닌 것으로 간주한다.
    --health-interval : 헬스 체크를 실행할 주기를 지정한다.
    --health-start-period : 컨테이너 시작 후 지정한 시간 동안은 헬스 체크에 실패해도 실패로 간주하지 않는다.
    헬스 체크가 잘 되는지 확인해보자. 두 개의 컨테이너가 떠 있다고 가정하고 http://192.168.1.101:8000/?slow=true 요청을 보내자. 앞서 app.js 코드를 보면 slow 파라미터 값이 true이면 /health 요청의 응답 시간을 5초로 바꾼다. 헬스 체크 제한 시간은 3초이므로 이 URL을 실행하면 컨테이너의 헬스체크에 실패한다.

    헬스 체크 간격이 10초이고 3회 시도하므로 잠시 뒤에 simple service ps simple 명령어로 컨테이너 목록을 보자. 한 컨테이너가 실패 상태에 있고(Failed) 이를 대체할 새로운 컨테이너를 준비한 것을 확인할 수 있다.

    반응형