Micro Service Architecture/Docker
12. [docker] drain
ploz
2021. 3. 16. 17:54
반응형
- 운영중인 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>
반응형