본문 바로가기

Micro Service Architecture/Docker

15. [docker] Container Health Check

반응형

1. 구동 중인 task에 health check 값을 줘서 실패시 마이그레이션 TEST

## docker1에서 curl <url>로 cmd를 주고 일정 시간간격으로 체크
## 주의 : cmd로 줄 명령어가 해당 컨테이너에 포함 되어 있어야 함.
[root@docker1 ~]# docker service update --health-cmd 'curl <url>' --health-interval 3s --health-retries 2 --health-timeout 2s test1
test1
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
 
[root@docker1 ~]# docker service inspect --pretty test1
 
ID:     9cojrp5cc4w5taf5dp89eze86
Name:       test1
Service Mode:   Replicated
...
Resources:
Networks: plo
Endpoint Mode:  vip
 Healthcheck:
  Interval = 3s
  Retries = 2
  StartPeriod = 0s
  Timeout = 2s
  Tests:
     Test = CMD-SHELL
     Test = curl <url>
 
 
## 호스트 iptables에서 <url> ip 주소를 막아보았다.
[root@docker1 ~]# iptables -I FORWARD -s <url ip> -j DROP
 
 
## 서비스 프로세스 관찰
## docker1에서 "task: non-zero exit" 에러 발생으로 shutdown 되며 새로운 task를 생성
## 최종 docker3에서 성공하여 running
 
 
[root@docker1 ~]# docker service ps test1
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR                              PORTS
k9yzy12hl3jk        test1.1             centos:7            docker3             Running             Running 3 minutes ago                                      
o4tv6bla0cij         \_ test1.1         centos:7            docker1             Shutdown            Failed 2 minutes ago     "task: non-zero exit (137): do…"  
gr3irhx4xn1n         \_ test1.1         centos:7            docker1             Shutdown            Failed 3 minutes ago     "task: non-zero exit (137): do…"  
woy12w1rmisz         \_ test1.1         centos:7            docker1             Shutdown            Failed 3 minutes ago     "task: non-zero exit (137): do…"  
890tszgo0gdn         \_ test1.1         centos:7            docker1             Shutdown            Shutdown 6 minutes ago                                     
 
 
 
## 몇번 테스트 해보지는 않았지만 docker1에서 실패하면 다른 node에서 task를 생성하는 것이 아니고 docker1에 또다른 task를 복제 하기를 몇번 반복 하였다.
## 이로인한 지연이 수분소요되어 replica 가 1인 서비스는 서비스 중단이 발생된다.
반응형