디지털 양피지/Docker2017. 6. 29. 11:07

Docker Swarm


- 기본적으로 3개의 manager 구성(replica)

Related image

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
Posted by 빨간 양말