본문 바로가기

Micro Service Architecture/Docker

12. [docker] drain

반응형

  • 운영중인 Docker Host나 Docker데몬에 유지보수를 위한 점검을 진행 할 경우 속해있는 task를 다른node로 이전 작업 후 진행 해야한다.
  • 점검 대상 노드를 drain 상태로 변경 후 원복하는 작업을 진행한다.
## nginx_test2라는 서비스에 아래와 같이 task가 3개의 node에 할당 되어져있다.
[root@docker1 bin]# docker service ps nginx_test2
ID            NAME           IMAGE         NODE     DESIRED STATE  CURRENT STATE           ERROR  PORTS
rtl4atm0aeey  nginx_test2.1  nginx:latest  docker1  Running        Running 29 seconds ago        
u2epfwd3ygea  nginx_test2.2  nginx:latest  docker2  Running        Running 1 second ago          
omb1m7sssjnn  nginx_test2.3  nginx:latest  docker3  Running        Running 1 second ago          
 
 
[root@docker1 bin]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
b7mvawujkbh9wv11rypk5z6k3 *  docker1   Ready   Active        Leader
miuah480u64gb1ppxzuiullun    docker3   Ready   Active        Reachable
uh0oje50u4ye5wefng70g2b9d    docker2   Ready   Active        Reachable
 
 
## 점검 대상은 docker3을 drain상태로 변경
[root@docker1 bin]# docker node update --availability drain docker3
docker3
 
 
## docker3이 drain 상태로 변경 되었다.
## worker 로서의 기능이며 manager로서는 아직 동작 중이다.
[root@docker1 bin]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
b7mvawujkbh9wv11rypk5z6k3 *  docker1   Ready   Active        Leader
miuah480u64gb1ppxzuiullun    docker3   Ready   Drain         Reachable
uh0oje50u4ye5wefng70g2b9d    docker2   Ready   Active        Reachable
 
 
## drain상태가 되면 가지고 있는 task는 다른 node로 이전된다.
## 또한 Overlay Network도 정상 동작 한다.
[root@docker1 bin]# docker service ps nginx_test2
ID            NAME               IMAGE         NODE     DESIRED STATE  CURRENT STATE            ERROR  PORTS
rtl4atm0aeey  nginx_test2.1      nginx:latest  docker1  Running        Running 5 minutes ago          
u2epfwd3ygea  nginx_test2.2      nginx:latest  docker2  Running        Running 4 minutes ago          
o5eovusbby93  nginx_test2.3      nginx:latest  docker1  Running        Running 10 seconds ago         
omb1m7sssjnn   \_ nginx_test2.3  nginx:latest  docker3  Shutdown       Shutdown 10 seconds ago

 

  • 원복
## docker3을 다시 active 상태로 돌린다.
[root@docker1 bin]# docker node update --availability active docker3
docker3
 
 
## docker3이 active상태로 변경되었다.
[root@docker1 bin]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
b7mvawujkbh9wv11rypk5z6k3 *  docker1   Ready   Active        Leader
miuah480u64gb1ppxzuiullun    docker3   Ready   Active        Reachable
uh0oje50u4ye5wefng70g2b9d    docker2   Ready   Active        Reachable
 
 
## task를 확인해보면 nginx_test2.3 task가 docker3 node가 원복 되었다고 다시 docker3으로 task 재배분 하지는 않는다.
[root@docker1 bin]# docker service ps nginx_test2
ID            NAME               IMAGE         NODE     DESIRED STATE  CURRENT STATE                ERROR  PORTS
rtl4atm0aeey  nginx_test2.1      nginx:latest  docker1  Running        Running 10 minutes ago             
u2epfwd3ygea  nginx_test2.2      nginx:latest  docker2  Running        Running 10 minutes ago             
o5eovusbby93  nginx_test2.3      nginx:latest  docker1  Running        Running 5 minutes ago              
omb1m7sssjnn   \_ nginx_test2.3  nginx:latest  docker3  Shutdown       Shutdown about a minute ago

 

  • 참고 :  pause는 기존 task는 유지하고 신규 task 할당은 하지 않게 됨
--availability <active|drain|pause>

 

반응형