도커 스웜 (docker-swarm)은 도커에서 공식적으로 만든 오케스트레이션 툴 docker-swarm 입니다. 호스트 서버의 컨테이너들을 배포 및 관리를 위한 툴입니다. 쿠버네티스를 대신 할 도커에서 만든 컨테이너 관리를 위한 툴입니다.
[docker-swarm 구축 개요]
총 3대의 ubuntu 서버를에 docker-swarm cluster를 구축해 보는 것이 목표입니다.
docker-swarm-master> <docker-swarm-node1> <docker-swarm-node2>
192.168.56.111 192.168.56.112 192.168.56.113
1.docker-swarm cluster 생성
docker swarm init 명령어를 통해서 swarm 클러스터를 초기화 시켜줍니다. --advertise-addr 옵션을 통해 다른 도커 서버가 manager 노드에 접근할 수 있도록 매니저 노드 ip주소를 입력합니다.
기본적으로 클러스터 관리에 대한 통신 포트는 2377번 TCP 포트를 사용하고, Node간 통신에는 7946번 포트를 사용합니다. 그리고 overlay 네트워크에서 오고가는 트래픽에 대해서는 4789번 UDP 를 사용합니다.
kevin@docker-swarm-master:~$ docker swarm init --advertise-addr 192.168.56.111:2377
Swarm initialized: current node (8kkspf9mide6mdhnmu7qsxmw4) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-6c7vnsgf***************kt90qc3lt08-3qkzx2geiz2i68tepilfqee55 192.168.56.111:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
2.docker-swarm worker node 추가
위에서 발급된 토큰을 가지고 worker node로 삼을 서버에 가서 join을 해준다.
kevin@docker-swarm-node1:~$ docker swarm join --token SWMTKN-1-6c***********************y7h2j47kt90qc3lt08-3qkzx2geiz2i68tepilfqee55 192.168.56.111:2377
This node joined a swarm as a worker.
kevin@docker-swarm-node2:~$ docker swarm join --token ********************88d801w7jcoiyndy7h2j47kt90qc3lt08-3qkzx2geiz2i68tepilfqee55 192.168.56.111:2377
This node joined a swarm as a worker.
node 추가 후 master node에서 정상적으로 node가 추가 되었는지 확인합니다.
kevin@docker-swarm-master:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
8kkspf9mide6mdhnmu7qsxmw4 * docker-swarm-master Ready Active Leader 20.10.22
qdvs83tuqm1uc01lpdjfuoydv docker-swarm-node1 Ready Active 20.10.22
xlm5m74wsus22f6xg1xsui81n docker-swarm-node2 Ready Active 20.10.22
3.서비스 생성
docker service create 명령어를 통해 docker swarm mode로 컨테이너를 실행시킬 수 있습니다.
예로 아파치 이미지를 불러와서 실행시켜보겠습니다.
kevin@docker-swarm-master:~$ sudo docker service create --name apache -p 80:80 httpd
[sudo] password for kevin:
cm3121l8ewmxj5666sn1h8wb1
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
kevin@docker-swarm-master:~$ docker service ps apache
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
tno1vb8gxyuq apache.1 httpd:latest docker-swarm-master Running Running 10 seconds ago
해당 서버로 브라우저 접속 시 정상 동작하는 것을 확인할 수 있습니다.
4.서비스 확장
쿠버네티스의 deploy replicas와 비슷하게 service를 확장시킬 수 있습니다.
kevin@docker-swarm-master:~$ docker service scale apache=3
apache scaled to 3
overall progress: 3 out of 3 tasks
1/3: running [==================================================>]
2/3: running [==================================================>]
3/3: running [==================================================>]
verify: Service converged
kevin@docker-swarm-master:~$ docker service ps apache
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
tno1vb8gxyuq apache.1 httpd:latest docker-swarm-master Running Running 3 minutes ago
dt16yp4diu0r apache.2 httpd:latest docker-swarm-node2 Running Running 46 seconds ago
izer1edy1pkp apache.3 httpd:latest docker-swarm-node1 Running Running 46 seconds ago
모든 도커 노드에서 정상 작동을 확인할 수 있습니다.
'Docker' 카테고리의 다른 글
[Docker] Docker-Network-Bandwidth 대역폭 조절 (1) | 2023.06.01 |
---|---|
[Docker] docker: Error response from daemon: cgroups: cgroup mountpoint does not exist: unknown. 에러 해결 (1) | 2023.05.29 |
[Docker] ERROR x509: certificate has expired or is not yet valid: current time 해결하기 (0) | 2023.05.25 |
[Docker] Installation traefik (0) | 2023.05.17 |
Install Compose standalone (0) | 2023.05.17 |
댓글