Docker networking and service discovery 요약
  * <https://www.oreilly.com/learning/docker-networking-service-discovery>
  * 2016-04-11
  * 저자는 Mesosphere 엔지니어, 편향된 의견이 있을 수 있음

개요
  * 도커 네트워킹과 서비스 디스커버리는 신규 영역이라 Best Practice 가 적다
  * 도커 네트워킹과 서비스 디스커버리 표준이 정립되려면 몇년 더 있어야할 것 같다

도커 네트워킹
  * 도커 네트워킹은 컨테이너를 위한 SDN 솔루션
  * 도커 네트워킹이 해결해야 하는 문제
    - 서로 다른 host에서 실행되는 컨테이너들끼리 어떻게 연결/통신하게 하나?
    - 컨테이너와 외부세계(인터넷)가 어떻게 연결/통신하게 하나?
    - 클러스터 내부의 상태 (IP 할당 등)를 어떻게 유지하나?
    - 기존 네트워크 인프라에 어떻게 통합하나?
    - 보안정책을 어떻게 적용하나?
  * 도커 네트워킹 솔루션
    - Overlay
      . 도커사는 2015년 3월 SDN 스타트업 SocketPlane을 인수
      . SocketPlane의 솔루션을 Docker Overlay Driver라고 명명
      . 도커 bridge mode 네트워크를 클러스터 레벨로 확장
      . Docker Swarm에 적용 (도커 버전 1.9+)
    - Flannel
      . 모든 컨테이너(pod)는 고유한 IP 주소로 통신 가능
      . k8s에 적용
    - 그밖에 Weave, Project Calico, Open vSwitch, Pipework, OpenVPN 등 존재

서비스 디스커버리 & 로드 밸런싱
  * 서비스 디스커버리
    - 컨테이너 스케줄링과 서비스 디스커버리는 동전의 양면
      . 두 기능은 반드시 동행하며,
      . 서로가 서로를 필요로 함
    - 서비스 디스커버리란?
      . 특정 컨테이너가 어느 host에서 실행되는지 알아내는 솔루션
      . register 기능과 lookup 기능으로 구성
    - 서비스 디스커버리는 로드 밸런싱과 밀접한 관계가 있다
    - 100~1000+ node 규모의 클러스터라면 서비스 디스커버리 부하 테스트 필요
    - 서비스 디스커버리 솔루션
      . Zookeeper : 검증된 솔루션, 설치가 어렵다는 평
      . etcd : 경량 솔루션
      . Consul
      . 기타 Mesos-DNS, SkyDNS, WeaveDNS 등
  * 로드 밸런싱
    - 로드 밸런싱으로 달성할 수 있는 것
      . throughput 최대화, response time 최소화
      . 특정 컨테이너에만 부하가 집중되는 것(hotspotting)을 방지
    - 도커 로드 밸런싱 솔루션
      . NGINX : 서비스 디스커버리 솔루션과 정합성 좋음
      . HAProxy : 도커사가 솔루션을 인수, 향후 도커의 네이티브 솔루션이 될 전망
      . Bamboo
      . Kube-Proxy : k8s에 적용

컨테이너 오케스트레이션
  * 스케줄링은 중요, 하지만 오케스트레이션의 일부일 뿐
  * 스케줄러는 컨테이너를 클러스터 위에서 배포/실행(deploy)하는 역할
  * 스케줄러가 deploy target node를 선택하는 기준
    - 머신의 사용 현황
    - app 실행에 필요한 자원 요구사항
    - app 실행 조건(constraint)
      . ex) SSD 가 설치된 머신에서 실행
  * 오케스트레이션 솔루션별 스케줄러 특성
    - Docker Swarm
      . Swarm의 스케줄러는 pluggable (다른 스케줄러로 교체 가능)
      . HA 기능 제공 (아직은 불완전하다는 평, 개발중)
    - Kubernetes
      . 구글의 10년 노하우를 결집
      . 모든 컴포넌트가 교체 가능


  * 오케스트레이션 솔루션 비교
    - 노드 규모에 따른 적합도

  Tool       | ~10 nodes | 10~100 nodes | ~1,000 nodes | 1,000+ nodes
-------------+-----------+--------------+--------------+--------------
Docker Swarm |    ++     |    +         |    ?         |    ?
-------------+-----------+--------------+--------------+--------------
Kubernetes   |    ++     |    ++        |    +         |    ?
-------------+-----------+--------------+--------------+--------------
Apache Mesos |    +      |    ++        |    ++        |    ++

    - 워크로드 종류에 따른 적합도

             | non-      |           |       | Long-   |           |

  Tool       | Container | Container | Batch | running | Stateless | Stateful
-------------+-----------+-----------+-------+---------+-----------+---------
Docker Swarm |  -        |  ++       |  +    |  ++     |  ++       |  +
-------------+-----------+-----------+-------+---------+-----------+---------
Kubernetes   |  -        |  ++       |  +    |  ++     |  ++       |  +
-------------+-----------+-----------+-------+---------+-----------+---------
Apache Mesos |  ++       |  ++       |  ++   |  ++     |  ++       |  +


(이상)

Posted by ingeeC
,

Kubernetes, Mesos DC/OS, Docker(Swarm) 비교

 

Kubernetes

Mesos DC/OS

Docker Swarm

특징

가장 안정적인 솔루션
.
다양한 테스트 시도를 모두 만족시킴

가장 화려한 솔루션
. UI
수준이 높고 기능이 풍부함

가장 쉬운 솔루션
.
새로 배울 개념과 도구가 거의 없음

운영 가능한 host 머신 수

1,000 node

10,000 node

1,000 node

라이선스 모델

아파치

아파치

아파치

버전 히스토리

v1.3.6 (latest, 2016-08-27)
v1.0 (2015-06-18)
v0.2 (2014-09-09)

v1.8 (latest, 2016-08-04)
2016.4
월 오픈소스화

v1.2.5 (latest, 2016-08-18)
v1.0 (2015-11-03)
v0.1 (2015-02-26)

Managed Service

Google Container Engine (구글)

Azure Container Service (MS)

Docker Cloud (도커)

비고

. 기술자료 풍부
. CNCF
와 긴밀히 협조

* CNCF: Cloud Native Computing Foundation

. 기술자료 부족
. MS
Mesosphere가 적극 드라이브

. 기술자료 풍부
.
개념/기능의 간결함이 인상적

 

 

Mesos DC/OS 상세 자료

·         트위터, AirBnB 에서 사용

·         MS Azure 에서 Managed 서비스 제공 ==> Azure Container Service

·         DC/OS ?

o   랩탑 컴퓨터를 쓰면서 어떤 어플리케이션이 어떤 코어에서 실행될지 관리한 적이 있는가?

§  어플리케이션이 실행될 코어를 스케줄링하는 것은 커널이 일이다

§  마찬가지로, 컨테이너가 실행될 host 머신을 선택하는 것은 오케스트레이터(DC/OS) 일이다

o   DC/OS 싱글 컴퓨터 OS 그런 것처럼 다양한 문제를 해결하기위한 다양한 도구를 포함한다,

o   GUI CLI 제공되지 않는 랩탑을 써본적이 있는가?

§  수백대의 host 머신을 ssh 접속으로 관리하는 것은 불편하다

§  DC 전체를 조감/관리할 있는 UI 필요하다

§  어떤 어플리케이션이 어느 host 에서 실행되는지 한눈에 있는 UI 필요하다

o   Service Discovery 위한 DNS 필요하다

o   모든 서비스들을 하나로 번들링한 패키지가 필요하다 ==> DC/OS!

·         DC/OS = Mesos + Marathon + Chronos

o   Mesos 데이터센터를 위한 분산 시스템 커널

o   Marathon 작업(컨테이너) 관리용 스케줄러 (Kubernetes 컨테이너 관리용 스케줄러로 사용 가능)

o   Chronos 배치작업용 스케줄러

o   1개의 DC/OS 클러스터에서 다수의 스케줄러 동시 이용 가능

·         DC/OS 구성 요소 process 실행 시퀀스

o   구성 요소 & 관계


 

o   process 실행 시퀀스


·         주요 기능

o   Stateful Storage Support

§  external persistent volume 지원

·         app 입장에서 사용 편리, 전통적인 disk 동일

·         elasticity replication 대가로 speed 희생 (느림)

§  distributed file system 지원

·         app 입장에서 storage 사용법이 생소

·         네트워크 기반으로 동작하기 때문에 느림

§  local ephemeral storage 지원

·         stateless, semi-stateless 12-factor, cloud native app 적합

·         stateful service에는 부적합

§  local persistent volume 지원

·         fast and persistent storage 제공

·         data replication, RAID drive & backup 프로세스 등을 함께 사용한다면 speed 저하 없이 강인한(fault tolerant) storage 사용 가능

o   Elastic Scalability

§  horizontal scaling 지원

·         Marathon 이용, service instance 숫자를 언제든지 쉽게 조정

·         Marathon Load BAlancer 이용, autoscaling 가능

§  vertical scaling 지원

·         Marathon 이용, 서비스 다운타임 없이 instance 용량 업데이트 가능

o   Zero Downtime Upgrade

§  다운타임 없이 서비스 자동 업데이트 가능

§  DC/OS 위에서 실행되는 서비스는

·         rolling, blue-green, canary deploy pattern 사용 가능

·         deploy 실패시 이전 시점으로 one-click 복구 가능

o   Service Discovery and Distributed Load Balancing

§  자동 DNS endpoint 생성 기능 제공

§  서비스 lookup API 제공

§  내부 통신 고속화를 위한 L4 virtual IP proxing 기능 제공

§  외부향 서비스를 위한 L7 load balancing 기능 제공



Docker (Swarm) 상세 자료

·         2016 7 Docker 1.12 릴리즈됨

·         소감:

o   k8s처럼 pod(관련 컨테이너들의 집합)라는 낯선 개념을 도입하지 않고도, 도커에 내장된 Swarm 통해

§  overlay-network,

§  replica 관리 (실행되는 컨테이너 수를 사용자 지정값과 같도록 관리),

§  scaling 처리,

§  service discovery,

§  load balancing 처리 기능을 k8s 동등하게 지원하는 것이 인상적 ==> 새로 배울 개념이 적다 !

o   docker 데몬/클라이언트에 내장된 명령으로 Swarm 클러스터를 관리 ==> 새로 배울 도구가 적다 !

·         Docker 1.12 특징

o   Swarm 명령이 native 지원됨 ==> The Best way to orchestrate Docker is Docker !

§  docker swarm 명령들이 추가됨

o   Service 모니터링

§  docker service 커맨드로 service desired state 지정/관리

§  health check

§  replica 관리 (실행되는 컨테이너 수가 설정된 값과 같도록 관리)

§  scaling 관리

o   Self Healing

§  service 죽으면 도커 엔진이 다시 스케줄링함

§  k8s 같은 별도의 오케스트레이션 도구 필요 없음

§  Swarm 클러스터 위에서 실행되는 컨테이너에 대해 지속 실행과 스케일링을 지원함

§  데모 동영상 ~ https://www.youtube.com/watch?v=F7hoq0KwHD4&t=8m13s

o   Security

§  도커에 인증서를 관리하는 CA 서버가 통합됨

§  추가 설정 없이 host 머신들 사이의 모든 통신을 암호화 처리함 (디폴트)

o   Load Balancing

§  클러스터 위에 service publish 하면 클러스터에 속한 모든 host 머신의 해당 port 접근 가능

§  도커가 모든 host 머신의 해당 port 들어오는 service request 적절한 컨테이너로 re-라우팅 & 로드밸런싱

o   Rolling Deploys

§  replica 실행 중에 컨테이너를 한개씩 또는 두개씩(개수 설정 가능) 업데이트

§  새로 추가된 명령어 한방으로 처리

§  데모 동영상 ~ https://www.youtube.com/watch?v=F7hoq0KwHD4&t=6m38s

o   도커 1.11 대비 1.12 개선점 요약

 

·         Docker 1.12 Networking Model

o   모든 컨테이너는 3 종류의 오버레이 네트워크에 연결됨

§  ingress

·         도커가 정의하는 오버레이 네트워크

·         port publish (-p 옵션) service ingress 네트워크에 붙음 (port publish 하지 않은 컨테이너는 ingress 네트워크에 붙지 않음)

§  docker_gwbridge

·         도커가 정의하는 오버레이 네트워크

·         클러스터 외부와 연결하기 위한 네트워크

§  user-defined overlay

·         사용자가 정의하는 오버레이 네트워크

·         사용자는 다수의 오버레이네트워크를 정의할 있음

·         $ sudo docker network create -d overlay mynet

§  오버레이네트워크는 host 머신에 처음 컨테이너가 할당되어 실행될 생성됨

o   Routing Mesh

§  도커는 내장된 Routing Mesh 도움으로 클러스터 안의 모든 host 머신으로 유입되는 요청이 컨테이너가 실행되는 적절한 host 머신으로 re-라우팅되도록 보장함

§  클러스터 외부의 로드밸런서는 도커 클러스터 내부의 컨테이너 실행 상황(어떤 컨테이너가 어떤 host 머신에서 실행되는지) 몰라도



Ref

·         Apache Mesos 소개

o   ~ http://www.mimul.com/pebble/default/2013/10/27/1382885361083.html

·         "Nexus: A Common Substrate for Cluster Computing"

o   ~ https://www2.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-158.pdf

·         "Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center"

o   ~ https://amplab.cs.berkeley.edu/wp-content/uploads/2011/06/Mesos-A-Platform-for-Fine-Grained-Resource-Sharing-in-the-Data-Center.pdf

·         범용 PaaS 플랫폼 mesos(mesosphere)

o   ~ http://www.slideshare.net/songaal/paa-s-mesosmesosphere

·         Mesosphere 튜토리얼

o   ~ http://docs.mesosphere.com/intro-course

·         Mesosphere DC/OS on Google Cloud Platform

o   ~ https://mesosphere.com/google/

·         Docker Swarm

o   ~ https://docs.docker.com/swarm/

·         Docker Swarm vs. Kubernetes

o   ~ https://outofbedlam.github.io/docker/2016/03/12/DockerSwarm-vs-Kubernetes/

·         What's New In Docker 1.12

o   ~ http://blog.nimbleci.com/2016/08/03/whats-new-in-docker-1.12/

·         Docker Engine 1.12 comes with built-in Distribution & Orchestration System

o   ~ http://collabnix.com/archives/1317

·         Docker 1.12 Networking Model Overview

o   ~ http://collabnix.com/archives/1391

Posted by ingeeC
,