[ec2] AWS ec2 가입부터 인스턴스 생성까지 글에서 포스팅했던것처럼 worker machine으로 사용할 인스턴스를 하나 더 만들어준다.
기존에 사용하던 인스턴스를 master, 새로 생성한 인스턴스를 worker로 실습을 진행한다.
: worker와 master는 서로 독립적인 machine이므로 두 machine 사이의 통신을 위해 port를 열어준다.
-> worker로 사용할 instance, master로 사용할 instance 둘 다 추가해준다.
sudo docker swarm init --advertise-addr={인스턴스의 private IP}
-> worker node에도 동일한 이미지가 있어야 실행 가능 & 이름도 같아야함
-> worker node에서 수행할 명령어가 안내됨
docker swarm join --token SWMTKN-1-3u2i7dnuhjgy2viaqsqti4owhqps4i03crgn107gcjdzasxrw0-bd9sn4zmf603bxm02dqqfxkqi 172.31.14.117:2377
-> 에 앞서서 worker machine에 docker를 먼저 설치해준다.
sudo apt-get update
sudo apt-get install docker.io
도커 설치 후, 위의 join 명령을 입력한다.
sudo docker node ls
: docker swarm에서 app 배포하기
작성한 dockerfile을 이용해서 master node와 같은 이름을 가진 image를 만든다.
sudo docker service create --name {서비스이름} --replicas {몇개의 container?} -p {port mapping} {image name}
sudo docker ps
로 확인하면 왼쪽 master node에서 2개, 오른쪽 worker node에서 2개가 돌아가고 있음을 알 수 있다.
worker host와 leader host 모두 잘 돌아감을 알 수 있다.
-> swarm 잘 돌아가는지 확인?
sudo docker rm -f $(sudo docker ps -a -q)
로 container를 다 지워도 처음에 설정한 5개의 container를 유지하기 위해 새 container가 생겨서 서비스가 계속 돌아감
sudo docker service scale {서비스이름}={container개수}
sudo docker service rm {서비스이름}
sudo docker swarm leave
sudo docker swarm leave --force