Docker Swarm
- 기본적으로 3개의 manager 구성(replica)
Swarm mode 핵심 개념
Node
Manager Node : 기본적으로 manager 도 worker 이다. 전용으로 사용할 수도 있다.
Worker Node
Service 와 tasks
Service: Swarm에서 배포한 노드의 묶음. 실제의 배포 유닛(container collections)
task: 세부 구성하는 container를 task.
Load Balancing
* Discovery Service
- Swarm 1에서는 consul을 사용하였다.
- Swarm 2에서는 etcd를 discovery 로 사용한다.
- 각 Manager에는 etcd가 들어 있다.
- Raft가 Master를 선정하고 운영한다. 3개 노드 이상을 manager로 잡는다.
- docker swarm --help
- docker swarm init을 하면 master를 만들어준다.
- join으로 참여할 tocken을 만들어 준다. 복사해서 join 하면 된다.
- docker node ls 를 통해 확인할 수 있다.
- join-tocken을 새로 생성할 수 있다.
- manager로 승격 시키거나 worker로 내릴 수 있다.
- service가 배포 되는 단위로 보면 된다(compse의 stack과 같다)
- ingress 가 overlay로 생성되고 내부 통신을 한다.
- ingress는 내부 LB를 통해 외부와 통신할 수 있도록 한다.
- -P 옵션을 통해 외부와 통신을 하게 되는 것이다.
- overlay network 을 대체하기 위해 zookeeper를 설치해도 된다. swarm이 설치되면 기본적으로 etcd가 동작한다.
- docker_gwbridge는 내부 통신이 안되는 외부 통신에서만 사용하는 bridge 이다.
* 로드 밸런싱과 DNS
- 내부 DNS는 127.0.0.11 (Swarm을 통해 만들어 진다)
- no value: worker
- Leader: single master
- Reachable: manager node
- Unavailable: 이상이 있다.
- 서비스 배포가 안되는 경우
: pause, drain, label이 설정된 경우, resource 제약이 넘어간 경우는 서비스 배포가 안된다.
* 서비스 백업
* 라벨을 사용한 노드 그룹화.
* 서비스 관리
- service가 배포 단위이다.
- task는 container의 패키지로 배포된 단위이다.
- replica에 따라 각 호스트에 배포된다.
- global service 는 host에 하나씩 배포되는 서비스로 agent나 monitoring에 사용된다.
- replicated는 일반적 서비스
* 서비스 실행
- replica가 없으면 기본적으로 한개
- -P 가 없으므로 외부가 안된다.
#docker service create --name web nginx |
- 외부로 서비스가 연동 된다.
#docker service create --name web -p 80 -p 443 nginx |
- docker service scale hi=5
- docker service rm hi
# docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6 |
* Secret
- container로 올라가는 순간 decoding 된다.
- 기본 경로는 /run/secret 이다.
* 서비스 외부로 오픈하기
#docker service create --name my_web --replicas 3 --publish 8080:80 nginx |
* 오버레이 네트워크 추가하기
- overlay network 을 만들면 클러스터의 모든 노드에 생긴다.
#docker network create --driver overlay my-network |
nslookup tasks.my-web2 하면 tasks의 모든 서버를 찾을 수 있다.
'디지털 양피지 > Docker' 카테고리의 다른 글
6. Kubernetes 설치 (0) | 2017.06.30 |
---|---|
6. Kubernetes (0) | 2017.06.30 |
5. Docker Compose (0) | 2017.06.29 |
4. Docker 네트워킹 (0) | 2017.06.28 |
4. 컨테이너 스토리지 (0) | 2017.06.28 |