Ubuntu에서 Docker Swarm 클러스터를 구축합니다.
7593 단어 ubuntu16.04도커swarm
소개
Ubuntu 16.0.4의 서버를 3대 준비하고 그것을 Docker Swarm에서 클러스터를 짜서 그것을 정리했습니다.
구성
이번 구성은 3대 모두 manager&worker로 클러스터를 구성하는 구성입니다.
이미지
Docker 설치
우선 모든 서버에 docker-engine을 설치합니다.
이미지
먼저 apt를 https를 통해 사용할 수 있도록 라이브러리를 설치합니다.
필수 라이브라이 설치$ sudo apt-get install apt-transport-https ca-certificates
그런 다음 docker를 설치하는 데 사용할 리포지토리를 추가합니다.
리포지토리 추가$ sudo vim /etc/apt/sources.list.d/docker.list
$ cat /etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo ubuntu-xenial main
apt 업데이트$ sudo apt-get update
준비가 되면 docker-engine을 설치합니다.
docker 설치$ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ sudo apt-get install docker-engine
이번에는 사용하지 않지만 docker compose도 설치합니다.
compose 설치$ apt-get install docker-compose
또한 우분투 사용자가 docker 명령을 사용할 수 있도록 docker 그룹에 연결합니다.
그룹 추가$ sudo gpasswd -a ubuntu docker
추가한 후 다시 로그인하여 작업을 진행합니다.
마스터 (리더) 노드 만들기
이번에는 3대 모두 manager node로 합니다. 우선은 manager 의 master 가 되는 1대를 작성합니다.
이미지
manager (Leader) 만들기$ docker swarm init
Swarm initialized: current node (71uuiqwvlcizxln4bfk3gvr4a) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-5k87wh49qn3j7ml6b8kxiz5t7 \
172.31.17.88:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
여기서 init 했을 때에 나오는 것은 worker용의 token 입니다. 이번에는 manager용의 token 을 원하기 때문에 다음의 커멘드를 실행해 취득합니다.
manager용 token 취득$ docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-0blrkkwxwghkddo7hk5tkcy2y \
172.31.17.88:2377
이것으로는 각 노드가 되는 서버에 로그인해, 추가해 가는 작업이 됩니다.
노드에 참여
이제 node-2를 방금 만든 manager node에 추가합니다.
이미지
manager (Leader)에 노드 추가$ docker swarm join --token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-0blrkkwxwghkddo7hk5tkcy2y 172.31.17.88:2377
This node joined a swarm as a manager.
이제 추가되었습니다. 나머지 1대도 마찬가지로 추가합니다.
만약, manager 가 아닌 worker 로서 추가하고 싶은 경우는 --token 옵션의 값을 worker 로 해 주는 것만으로 OK입니다.
이상으로 완료입니다. 그럼 확인해 봅시다.
노드 확인$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
71uuiqwvlcizxln4bfk3gvr4a * node-1 Ready Active Leader
musl2m94jqx7gb0fa953rd43j node-3 Ready Active Reachable
nwhmqq24zkvgbxlbsq8zut4vo node-2 Ready Active Reachable
여기서 "*"가 붙어 있는 것이 명령을 실행한 node입니다. 즉 여기에서는 node-1 로 docker node ls
를 실행했다고 하는 것입니다.
또, MANAGER STATUS 가 Leader 가 되고 있는 것이 처음에 swarm init
한 master 가 되는 node 로 Reachable 가 되어 있는 것이 추가한 node 가 됩니다. 만약 worker 로서 node 를 추가했을 경우는, 여기의 항목은 blank 가 됩니다.
배포
클러스터를 만들었으므로 무언가를 배포해 보겠습니다.
이번에는 nginx 컨테이너를 배포해 보았습니다.
배포$ docker service create --replicas 1 --name web -p 80:80 nginx
zelm5elrp6czm1mtisk942ujx
배포가 완료되면 서비스를 확인해 봅니다.
배포 확인 (서비스)$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
zelm5elrp6cz web replicated 1/1 nginx:latest *:80->80/tcp
배포 확인(컨테이너)$ docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mjbwdr63zfyo web.1 nginx:latest node1 Running Running 3 minutes ago
node1에서 nginx 컨테이너가 1대 web라는 서비스명으로 기동하고 있는 것을 확인할 수 있었습니다.
그러면 이 서비스를 컨테이너 3대에 스케일 해 보겠습니다.
스케일$ docker service scale web=3
web scaled to 3
스케일 확인$ docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mjbwdr63zfyo web.1 nginx:latest node1 Running Running 4 minutes ago
jmm52jos2vgl web.2 nginx:latest node3 Running Running 8 seconds ago
sbpa751k6wwa web.3 nginx:latest node2 Running Running 8 seconds ago
각 노드에 1대씩 컨테이너가 기동하고 있는 것을 확인할 수 있었습니다.
결론
최근에는 kubernetes이 고조되고있는 것 같습니다만,
Swarm도 그렇게 이용성은 나쁘지 않을 것 같습니다. compose 의 yml도 그대로 이용할 수 있고, 어느 것을 사용할까는 경우에 따라서 뭐일까라고 생각합니다.
Reference
이 문제에 관하여(Ubuntu에서 Docker Swarm 클러스터를 구축합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kooohei/items/7cbf64154476a43ee250
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번 구성은 3대 모두 manager&worker로 클러스터를 구성하는 구성입니다.
이미지
Docker 설치
우선 모든 서버에 docker-engine을 설치합니다.
이미지
먼저 apt를 https를 통해 사용할 수 있도록 라이브러리를 설치합니다.
필수 라이브라이 설치$ sudo apt-get install apt-transport-https ca-certificates
그런 다음 docker를 설치하는 데 사용할 리포지토리를 추가합니다.
리포지토리 추가$ sudo vim /etc/apt/sources.list.d/docker.list
$ cat /etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo ubuntu-xenial main
apt 업데이트$ sudo apt-get update
준비가 되면 docker-engine을 설치합니다.
docker 설치$ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ sudo apt-get install docker-engine
이번에는 사용하지 않지만 docker compose도 설치합니다.
compose 설치$ apt-get install docker-compose
또한 우분투 사용자가 docker 명령을 사용할 수 있도록 docker 그룹에 연결합니다.
그룹 추가$ sudo gpasswd -a ubuntu docker
추가한 후 다시 로그인하여 작업을 진행합니다.
마스터 (리더) 노드 만들기
이번에는 3대 모두 manager node로 합니다. 우선은 manager 의 master 가 되는 1대를 작성합니다.
이미지
manager (Leader) 만들기$ docker swarm init
Swarm initialized: current node (71uuiqwvlcizxln4bfk3gvr4a) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-5k87wh49qn3j7ml6b8kxiz5t7 \
172.31.17.88:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
여기서 init 했을 때에 나오는 것은 worker용의 token 입니다. 이번에는 manager용의 token 을 원하기 때문에 다음의 커멘드를 실행해 취득합니다.
manager용 token 취득$ docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-0blrkkwxwghkddo7hk5tkcy2y \
172.31.17.88:2377
이것으로는 각 노드가 되는 서버에 로그인해, 추가해 가는 작업이 됩니다.
노드에 참여
이제 node-2를 방금 만든 manager node에 추가합니다.
이미지
manager (Leader)에 노드 추가$ docker swarm join --token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-0blrkkwxwghkddo7hk5tkcy2y 172.31.17.88:2377
This node joined a swarm as a manager.
이제 추가되었습니다. 나머지 1대도 마찬가지로 추가합니다.
만약, manager 가 아닌 worker 로서 추가하고 싶은 경우는 --token 옵션의 값을 worker 로 해 주는 것만으로 OK입니다.
이상으로 완료입니다. 그럼 확인해 봅시다.
노드 확인$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
71uuiqwvlcizxln4bfk3gvr4a * node-1 Ready Active Leader
musl2m94jqx7gb0fa953rd43j node-3 Ready Active Reachable
nwhmqq24zkvgbxlbsq8zut4vo node-2 Ready Active Reachable
여기서 "*"가 붙어 있는 것이 명령을 실행한 node입니다. 즉 여기에서는 node-1 로 docker node ls
를 실행했다고 하는 것입니다.
또, MANAGER STATUS 가 Leader 가 되고 있는 것이 처음에 swarm init
한 master 가 되는 node 로 Reachable 가 되어 있는 것이 추가한 node 가 됩니다. 만약 worker 로서 node 를 추가했을 경우는, 여기의 항목은 blank 가 됩니다.
배포
클러스터를 만들었으므로 무언가를 배포해 보겠습니다.
이번에는 nginx 컨테이너를 배포해 보았습니다.
배포$ docker service create --replicas 1 --name web -p 80:80 nginx
zelm5elrp6czm1mtisk942ujx
배포가 완료되면 서비스를 확인해 봅니다.
배포 확인 (서비스)$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
zelm5elrp6cz web replicated 1/1 nginx:latest *:80->80/tcp
배포 확인(컨테이너)$ docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mjbwdr63zfyo web.1 nginx:latest node1 Running Running 3 minutes ago
node1에서 nginx 컨테이너가 1대 web라는 서비스명으로 기동하고 있는 것을 확인할 수 있었습니다.
그러면 이 서비스를 컨테이너 3대에 스케일 해 보겠습니다.
스케일$ docker service scale web=3
web scaled to 3
스케일 확인$ docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mjbwdr63zfyo web.1 nginx:latest node1 Running Running 4 minutes ago
jmm52jos2vgl web.2 nginx:latest node3 Running Running 8 seconds ago
sbpa751k6wwa web.3 nginx:latest node2 Running Running 8 seconds ago
각 노드에 1대씩 컨테이너가 기동하고 있는 것을 확인할 수 있었습니다.
결론
최근에는 kubernetes이 고조되고있는 것 같습니다만,
Swarm도 그렇게 이용성은 나쁘지 않을 것 같습니다. compose 의 yml도 그대로 이용할 수 있고, 어느 것을 사용할까는 경우에 따라서 뭐일까라고 생각합니다.
Reference
이 문제에 관하여(Ubuntu에서 Docker Swarm 클러스터를 구축합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kooohei/items/7cbf64154476a43ee250
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo vim /etc/apt/sources.list.d/docker.list
$ cat /etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo ubuntu-xenial main
$ sudo apt-get update
$ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ sudo apt-get install docker-engine
$ apt-get install docker-compose
$ sudo gpasswd -a ubuntu docker
이번에는 3대 모두 manager node로 합니다. 우선은 manager 의 master 가 되는 1대를 작성합니다.
이미지
manager (Leader) 만들기
$ docker swarm init
Swarm initialized: current node (71uuiqwvlcizxln4bfk3gvr4a) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-5k87wh49qn3j7ml6b8kxiz5t7 \
172.31.17.88:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
여기서 init 했을 때에 나오는 것은 worker용의 token 입니다. 이번에는 manager용의 token 을 원하기 때문에 다음의 커멘드를 실행해 취득합니다.
manager용 token 취득
$ docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-0blrkkwxwghkddo7hk5tkcy2y \
172.31.17.88:2377
이것으로는 각 노드가 되는 서버에 로그인해, 추가해 가는 작업이 됩니다.
노드에 참여
이제 node-2를 방금 만든 manager node에 추가합니다.
이미지
manager (Leader)에 노드 추가$ docker swarm join --token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-0blrkkwxwghkddo7hk5tkcy2y 172.31.17.88:2377
This node joined a swarm as a manager.
이제 추가되었습니다. 나머지 1대도 마찬가지로 추가합니다.
만약, manager 가 아닌 worker 로서 추가하고 싶은 경우는 --token 옵션의 값을 worker 로 해 주는 것만으로 OK입니다.
이상으로 완료입니다. 그럼 확인해 봅시다.
노드 확인$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
71uuiqwvlcizxln4bfk3gvr4a * node-1 Ready Active Leader
musl2m94jqx7gb0fa953rd43j node-3 Ready Active Reachable
nwhmqq24zkvgbxlbsq8zut4vo node-2 Ready Active Reachable
여기서 "*"가 붙어 있는 것이 명령을 실행한 node입니다. 즉 여기에서는 node-1 로 docker node ls
를 실행했다고 하는 것입니다.
또, MANAGER STATUS 가 Leader 가 되고 있는 것이 처음에 swarm init
한 master 가 되는 node 로 Reachable 가 되어 있는 것이 추가한 node 가 됩니다. 만약 worker 로서 node 를 추가했을 경우는, 여기의 항목은 blank 가 됩니다.
배포
클러스터를 만들었으므로 무언가를 배포해 보겠습니다.
이번에는 nginx 컨테이너를 배포해 보았습니다.
배포$ docker service create --replicas 1 --name web -p 80:80 nginx
zelm5elrp6czm1mtisk942ujx
배포가 완료되면 서비스를 확인해 봅니다.
배포 확인 (서비스)$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
zelm5elrp6cz web replicated 1/1 nginx:latest *:80->80/tcp
배포 확인(컨테이너)$ docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mjbwdr63zfyo web.1 nginx:latest node1 Running Running 3 minutes ago
node1에서 nginx 컨테이너가 1대 web라는 서비스명으로 기동하고 있는 것을 확인할 수 있었습니다.
그러면 이 서비스를 컨테이너 3대에 스케일 해 보겠습니다.
스케일$ docker service scale web=3
web scaled to 3
스케일 확인$ docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mjbwdr63zfyo web.1 nginx:latest node1 Running Running 4 minutes ago
jmm52jos2vgl web.2 nginx:latest node3 Running Running 8 seconds ago
sbpa751k6wwa web.3 nginx:latest node2 Running Running 8 seconds ago
각 노드에 1대씩 컨테이너가 기동하고 있는 것을 확인할 수 있었습니다.
결론
최근에는 kubernetes이 고조되고있는 것 같습니다만,
Swarm도 그렇게 이용성은 나쁘지 않을 것 같습니다. compose 의 yml도 그대로 이용할 수 있고, 어느 것을 사용할까는 경우에 따라서 뭐일까라고 생각합니다.
Reference
이 문제에 관하여(Ubuntu에서 Docker Swarm 클러스터를 구축합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kooohei/items/7cbf64154476a43ee250
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ docker swarm join --token SWMTKN-1-0ymf7p2vy09a15usvwbb6ya04hqg7b0aaupj0xp3vfy137nrhr-0blrkkwxwghkddo7hk5tkcy2y 172.31.17.88:2377
This node joined a swarm as a manager.
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
71uuiqwvlcizxln4bfk3gvr4a * node-1 Ready Active Leader
musl2m94jqx7gb0fa953rd43j node-3 Ready Active Reachable
nwhmqq24zkvgbxlbsq8zut4vo node-2 Ready Active Reachable
클러스터를 만들었으므로 무언가를 배포해 보겠습니다.
이번에는 nginx 컨테이너를 배포해 보았습니다.
배포
$ docker service create --replicas 1 --name web -p 80:80 nginx
zelm5elrp6czm1mtisk942ujx
배포가 완료되면 서비스를 확인해 봅니다.
배포 확인 (서비스)
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
zelm5elrp6cz web replicated 1/1 nginx:latest *:80->80/tcp
배포 확인(컨테이너)
$ docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mjbwdr63zfyo web.1 nginx:latest node1 Running Running 3 minutes ago
node1에서 nginx 컨테이너가 1대 web라는 서비스명으로 기동하고 있는 것을 확인할 수 있었습니다.
그러면 이 서비스를 컨테이너 3대에 스케일 해 보겠습니다.
스케일
$ docker service scale web=3
web scaled to 3
스케일 확인
$ docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mjbwdr63zfyo web.1 nginx:latest node1 Running Running 4 minutes ago
jmm52jos2vgl web.2 nginx:latest node3 Running Running 8 seconds ago
sbpa751k6wwa web.3 nginx:latest node2 Running Running 8 seconds ago
각 노드에 1대씩 컨테이너가 기동하고 있는 것을 확인할 수 있었습니다.
결론
최근에는 kubernetes이 고조되고있는 것 같습니다만,
Swarm도 그렇게 이용성은 나쁘지 않을 것 같습니다. compose 의 yml도 그대로 이용할 수 있고, 어느 것을 사용할까는 경우에 따라서 뭐일까라고 생각합니다.
Reference
이 문제에 관하여(Ubuntu에서 Docker Swarm 클러스터를 구축합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kooohei/items/7cbf64154476a43ee250
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Ubuntu에서 Docker Swarm 클러스터를 구축합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kooohei/items/7cbf64154476a43ee250텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)