이전 시간에
1. 도커 설치 https://azebook.tistory.com/5
2. 포테이너 설치 https://azebook.tistory.com/6
이번 시간에는 GPU클러스터를 위한 도커 스웜(Docker Swarm)에 대해서 배워보겠습니다.
구성 설명 매니져와 워커 노드
첫번째, 매니져 노드에 Swarm init 실행합니다.
ubuntu@ubuntu:/etc$ sudo docker swarm init
Swarm initialized: current node (vzpzk56a188zeoip4oebe3urz) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-5sd968iiff90k3f4h6gtvu9g5s2pahibhvvy4fs2yun6yy90bp-6sw92gaxrbez9rx5eqn5m0m0f 114.202.170.222:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
두번째, 매니져 노드외에 워커 노드에 Swarm Join 실행합니다.
jason2@jason-zk001:~$ sudo docker swarm join --token SWMTKN-1-5sd968iiff90k3f4h6gtvu9g5s2pahibhvvy4fs2yun6yy90bp-6sw92gaxrbez9rx5eqn5m0m0f 114.202.170.222:2377
This node joined a swarm as a worker.
정말 간단하고 쉽습니다. ^_^ 이제 잘 설치됐는지 확인해 봐야겠습니다. 매니져 노드에서 Swarm 클러스터 확인
ubuntu@ubuntu:/etc$ sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
mh9prz8rwn5baraec5hsm474o jason-zk001 Ready Active 18.09.6
vzpzk56a188zeoip4oebe3urz * ubuntu Ready Active Leader 18.09.6
이제 이전시간에 설치한 포테이너에 원격노드로 연결해보자 (이전 강의 참조 : Portainer 설치 https://azebook.tistory.com/6)
우선, [관리IP]:9000 주소로 접속합니다. 그리고, Endpoint 메뉴를 선택한후, 워커노드인 Remote 를 선택합니다.
아래 화면처럼 Host이름과 IP:Port를 입력하여 Join 합니다.
Swarm Join 도 수행했는데도 아래와 같이 " Failure Get ~~~ Connection refused " 에러 메시지가 나온다면,
아래와 같이 Failure 메세지와 함께 진행이 안된다면, 2375 Port를 Enable 시켜야 한다.
어 ! 명령어로 확인해봐도 2375 포트를 Listen하지 않네. 도커 이놈
내가 systemctl status docker 로 다 확인했다.
ubuntu@ubuntu:/etc/systemd/system$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-06-15 14:19:16 UTC; 43min ago
Docs: https://docs.docker.com
Main PID: 21371 (dockerd)
Tasks: 23
CGroup: /system.slice/docker.service
├─21371 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
└─21684 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9000 -container-ip 172.17.0.2 -container-port 9
해결방법은 의외로 간단하다.
매니져와 워커노드에 overridde.conf 파일 생성후 아래와 같이 수정해주면 됩니다.
파일 위치 : /etc/systemd/system/docker.service.d/override.conf
ubuntu@ubuntu:/etc/systemd/system/docker.service.d$ cat override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
그리고, Docker daemon reload, 도커 서비스 재시작합니다.
ubuntu@ubuntu:/etc/systemd/system/docker.service.d$ sudo systemctl daemon-reload
ubuntu@ubuntu:/etc/systemd/system/docker.service.d$ sudo systemctl restart docker.service
ubuntu@ubuntu:/etc/systemd/system/docker.service.d$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/docker.service.d
└─override.conf
Active: active (running) since Sat 2019-06-15 15:11:03 UTC; 8s ago
Docs: https://docs.docker.com
Main PID: 23584 (dockerd)
Tasks: 22
CGroup: /system.slice/docker.service
├─23584 /usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
└─23735 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9000 -container-ip 172.17.0.2 -container-port 9
정상적으로 2375 포트를 LISTEN 상태라는 것을 확인할수 있습니다.
그리고나서 다시, Portainer 웹을 접속하여 Endpoint 메뉴에서 Add Endpoint를 선택합니다.
다음 Host Name과 [Remote IP]를 입력하면 Join 이 완료된 것을 아래와 같이 확인할수 있습니다.
매니져 노드가 관리하는 정보는 /var/lib/docker/swarm 에 저장됩니다.
다음 시간에는 Docker Swarm 기능을 알아보겠습니다. ~