SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
분산 커널 기반의
컨테이너 관리 시스템
컨테이너 기반의 SaaS/PaaS 인프라 구축 개요
yundream@gmail.com
http://www.joinc.co.kr
다룰 내용
● IaaS, PaaS, SaaS 개요
● VM과 Container의 주 차이점
● 분산 커널 관점에서의 컨테이너의 주요 특징
● 분산 커널 개요
● 분산 커널 환경에서의 컨테이너 스케쥴링
● 분산 커널 환경에서의 컨테이너 네트워크 시스템
● 분산 커널 환경에서의 컨테이너 스토리지 시스템
● 분산 커널 환경에서의 컨테이너 Discovery(Service discovery) 시스템
IaaS & PaaS & SaaS 구분
Networking
Storage
Virtualization
OS
Middleware
Runtime
Data
Application
Youmanage
Networking
Storage
Virtualization
OS
Middleware
Runtime
Data
Application
Youmanage
Networking
Storage
Virtualization
OS
Middleware
Runtime
Data
Application
Youmanage
Networking
Storage
Virtualization
OS
Middleware
Runtime
Data
Application
Vendormanage
Vendormanage
Vendormanage
Packaged
Software
IaaS PaaS SaaS
컨테이너는 프로세스다.
● VM과는 다르다.
● 컨테이너는 “격리된 프로세스"다.
○ 인터넷은 프로세스의 연결이다.
○ 프로세스를 연결하는데 굳이 VM을 띄울 필요는 없다.
○ 유저, CPU, Memory, 디스크, 네트워크를 격리 혹은 제한(limit)한 프로세스를 제공하자.
● 프로세스의 데이터 저장소. 파일 시스템 ? 블럭 스토리지 ?
○ VM(운영체제)과 달리 프로세스는 파일 시스템을 사용한다.
○ 파일 시스템을 격리 할 수 있는가.
○ 블럭 스토리지도 대안으로 사용 할 수 있는가
● 프로세스의 네트워크. 공개된 IP ? Port ?
○ VM과 달리 프로세스는 Port를 사용 한다.
○ Port forwarding과 NAT 기반으로 네트워킹 한다.
○ IP를 대안으로 사용 할 수 있는가 ?
컨테이너 기반의 분산 커널 시스템
● 커널의 추상화 : 분산된 자원을 관리하는 추상화된 커널
● 리소스 풀을 만들고
○ CPU, Memory, Network, Disk를 하나의 리소스로 관리
● 리소스를 모니터링 및 관리, 스케쥴링을 위한 정보를 생성
● 유저가 요청하면 스케쥴링 정보를 활용 프로세스를 실행
● 프로세스에 작업을 요청. Process discovery
○ 일반 커널 : PID
○ 분산 커널 : DNS를 이용한 Service discovery
● 프로세스의 STOP, CONT, KILL : SIGNAL
● 네트워크 제공 : PIPE
● MesOS
바퀴를 새로 만들 필요가 있는가 ?
● MesOS는 Berkeley 대학에서 만든 오픈소스다.
● 대학 연구소 환경에 최적화된 소프트웨어다.
○ Private 환경.
○ 정적 환경.
○ 관리 가능한 소프트웨어(Hadoop, spark)의 대량 배포.
○ LifeCycle를 관리. Batch
● 범용성이 떨어진다.
○ Public 환경
○ 동적인 인터넷 환경
○ 임의의 소프트웨어 배포
● 개발이 쉬워졌다. (정말 ?)
○ 분산 코디네이터
○ 클라우드
○ Docker API
○ 모니터링 툴
컨테이너 기반의 분산 커널 시스템
● MesOS 모델
MesOS
Slave
MesOS
Slave
MesOS
Slave
MesOS
Master
Leader
MesOS
Master
MesOS
Master
zookeeper
quorum
● Slave의 등록 및 자원 리포팅
○ CPU, Memory, Disk
○ Running Container
● 리포팅된 자원을 이용 스케쥴링
● DNS를 이용 프로세스 식별
컨테이너 기반의 분산 커널 시스템
● Leader 선출
MesOS
Master
Leader
MesOS
Master
MesOS
Master
zookeeper
quorum
/master/master-000001.json
/master-000002.json
/master-000003.json
SlaveOS
301 Redirect
Leader
컨테이너 실행과 접근 프로세스
MasterOS
- Resource Info
Process exec
SlaveOS-02
Docker
Container
SlaveOS-01
Docker
Container Run
DNS Table
- Container Domain Name
- SlaveOS-01 IP
- Container-02 Port
PID 에 해당
Load Balancer
Revers Proxy Server
container01.domain.com
DNS SRV Lookup
Storage Server
Remote mount
Service Discovery
● 전체 클러스터 노드에서 컨테이너를 식별할 수 있어야 한다.
● 인터넷 서비스에 사용 할 수 있는 DNS를 기반으로 한다.
● 네트워크 모델에 따라서 DNS Lookup 방식이 달라진다.
○ Port forwarding : DNS-SRV 레코드 LookUp
○ Direct IP : DNS A 레코드 LookUp
● 컨테이너 네트워크는 동적으로 바뀐다.
○ 동적인 DNS 시스템 구축
Service Discovery 모델 - Port forwarding
● DNS-SRV(Service Record)를 이용해서 서비스를 찾는다.
● Priority와 Weight를 이용 service backup과 QoS를 설정 할 수 있다.
_http._tcp.my-container.domain.com. 86400 IN SRV 0 100 8080 my-container.domain.com.
service
proto
name
TTL
class priority
weight
port target
# dig _http._tcp.example.com SRV @127.0.0.1
......
;_http._tcp.example.com. IN SRV
;; ANSWER SECTION:
_http._tcp.example.com. 86400 IN SRV 20 0 8080 backup.example.com.
_http._tcp.example.com. 86400 IN SRV 10 10 8080 smallbox2.example.com.
_http._tcp.example.com. 86400 IN SRV 10 10 8086 smallbox2.example.com.
_http._tcp.example.com. 86400 IN SRV 10 20 8080 smallbox1.example.com.
_http._tcp.example.com. 86400 IN SRV 10 60 8080 bigbox.example.com.
Service Discovery 모델 - Port forwarding
SlaveOS 10.0.0.2
80
172...01
80
172...02
80
172...03
9000
DNS
_http._tcp.a.b.com. 3600 IN SRV 0 40 9000 a-10-0-0-2.b.com.
_http._tcp.a.b.com. 3600 IN SRV 0 60 8722 a-10-0-0-3.b.com.
SlaveOS 10.0.0.3
80
172...01
80
172...02
80
172...03
8722
Proxy
Host: a.b.com
40% 60%
DNS
a.b.com proxy-ip
Service Discovery 모델 - Port forwarding
장점 및 단점
● 구현이 쉽다.
● HTTP 기반의 서비스에는 잘 작동한다 : 프로토콜에 Domain Name이 명시
● 응용 애플리케이션의 Port 설정이 어렵다.
○ mysql, mongodb, redis ....
○ Proxy server를 개발 할 수 없다.
SlaveOS 10.0.0.2
80
172...01
80
172...02
80
172...03
SlaveOS 10.0.0.3
3306
172...01
8080
172...02
3306
172...03
8756
mysql01.example.com:8756
Service Discovery 모델 - Direct IP
● 컨테이너에 IP를 직접 할당.
● IPv4 자원의 한계
○ VM과 달리 많은 수의 컨테이너를 만들 수 있다.
● IPv6
○ 사용이 제한 적이다. (ex. AWS)
Service Discovery 모델 - Direct IP
네트워크 구성 수정
SlaveOS 10.0.0.1
Docker
172.17.0.0/24
SlaveOS 10.0.0.2
Docker
172.17.1.0/24
SlaveOS 10.0.0.3
Docker
172.17.2.0/24
Router
Router
Internet
Service Discovery 모델 - Direct IP
장점 & 단점
● IP가 직접 할당 된다. VM 처럼 자유롭게 Port를 설정 할 수 있다.
● DNS-SRV lookup이 필요 없다.
● Routing Table 관리가 필요하다.
SlaveOS 10.0.0.2
80
172...01
80
172...02
80
172...03
SlaveOS 10.0.0.3
3306
172...01
8080
172...02
3306
172...03
mysql01.example.com:3306
mysql02.example.com:3306
Storage Service 모델
SlaveOS-02
Docker
Container
SlaveOS-01
Docker
Storage Server
Container
● Container Data Volume을 원격 Storage Server에 분리 한다.
● 가용성과 확장성 확보
Docker Image Container
RUN
DIFF
Data volume
AUFS
Native
FileSystem
Storage Service 모델 - NFS
● Container는 Process다. 따라서 파일 시스템이 무난해 보인다.
● 그러나 아래의 문제점이 있을 수 있다.
○ 격리가 어렵다.
○ Quota 설정이 어렵다.
○ ZFS나 Btrfs등을 이용 해서 격리 & Quota 설정이 가능하지만 관리가 어려워진다.
Storage Service 모델 - Block device
● Object file 단위로 컨테이너에 제공
● 격리 & Quota 설정이 자유롭다.
● 백업 & 복구 & 마이그레이션등 관리가 쉽다.
● 서버 & 클라이언트 모델의 NBD(Network Block Device)를 적용 할 수 있다.
Storage Node
nbd
server
SlaveOS
nbd
client
Container
Storage Service 모델 - Block device
QEMU - qcow2 Image
● Sparse file
● 증분 Snapshot
● Linked clone
● Transparent decompression
server # qemu-img create -f qcow2 container-name.img 5G
server # qemu-nbd --bind=0.0.0.0 --port=4000 container-name.img -x container-name
client # nbd-client -N container-name 10.x.x.x 4000 /dev/nbd0
client # mount /dev/nbd0 /containers/volumes/container-name
client # docker run --name=container-name -v /containers/volumes/container-name:/opt/mysql ubuntu
mysql-server
끝

Weitere ähnliche Inhalte

Andere mochten auch

람다아키텍처
람다아키텍처람다아키텍처
람다아키텍처HyeonSeok Choi
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신NAVER D2
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 2. functions
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 2. functions[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 2. functions
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 2. functionsNAVER D2
 
[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선NAVER D2
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님NAVER D2
 
Papago/N2MT 개발이야기
Papago/N2MT 개발이야기Papago/N2MT 개발이야기
Papago/N2MT 개발이야기NAVER D2
 
[D2 오픈세미나]2.모바일웹디버깅
[D2 오픈세미나]2.모바일웹디버깅[D2 오픈세미나]2.모바일웹디버깅
[D2 오픈세미나]2.모바일웹디버깅NAVER D2
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 3. generator
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 3. generator[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 3. generator
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 3. generatorNAVER D2
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 4. promise
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 4. promise[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 4. promise
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 4. promiseNAVER D2
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅NAVER D2
 
[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridappNAVER D2
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitiveNAVER D2
 
데이터분석과통계2 - 최재걸님
데이터분석과통계2 - 최재걸님데이터분석과통계2 - 최재걸님
데이터분석과통계2 - 최재걸님NAVER D2
 
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님NAVER D2
 
[한양대 aloha] 프로그래밍 경진대회 문제 풀이_Beginner part
[한양대 aloha] 프로그래밍 경진대회 문제 풀이_Beginner part[한양대 aloha] 프로그래밍 경진대회 문제 풀이_Beginner part
[한양대 aloha] 프로그래밍 경진대회 문제 풀이_Beginner partNAVER D2
 
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제NAVER D2
 
[D2CAMPUS] Algorithm tips - ALGOS
[D2CAMPUS] Algorithm tips - ALGOS[D2CAMPUS] Algorithm tips - ALGOS
[D2CAMPUS] Algorithm tips - ALGOSNAVER D2
 
[KAIST - RUN] 프로그래밍 경진대회 문제
[KAIST - RUN] 프로그래밍 경진대회 문제[KAIST - RUN] 프로그래밍 경진대회 문제
[KAIST - RUN] 프로그래밍 경진대회 문제NAVER D2
 
[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part
[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part
[한양대 aloha] 프로그래밍 경진대회 문제_Beginner partNAVER D2
 
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_advanced partNAVER D2
 

Andere mochten auch (20)

람다아키텍처
람다아키텍처람다아키텍처
람다아키텍처
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 2. functions
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 2. functions[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 2. functions
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 2. functions
 
[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선
 
텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님텀 프로젝트에서 제품 프로젝트로 - 성준영님
텀 프로젝트에서 제품 프로젝트로 - 성준영님
 
Papago/N2MT 개발이야기
Papago/N2MT 개발이야기Papago/N2MT 개발이야기
Papago/N2MT 개발이야기
 
[D2 오픈세미나]2.모바일웹디버깅
[D2 오픈세미나]2.모바일웹디버깅[D2 오픈세미나]2.모바일웹디버깅
[D2 오픈세미나]2.모바일웹디버깅
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 3. generator
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 3. generator[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 3. generator
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 3. generator
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 4. promise
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 4. promise[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 4. promise
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 4. promise
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
 
[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 
데이터분석과통계2 - 최재걸님
데이터분석과통계2 - 최재걸님데이터분석과통계2 - 최재걸님
데이터분석과통계2 - 최재걸님
 
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
JavaScript 비동기 프로그래밍 집중 탐구 - 조유성님
 
[한양대 aloha] 프로그래밍 경진대회 문제 풀이_Beginner part
[한양대 aloha] 프로그래밍 경진대회 문제 풀이_Beginner part[한양대 aloha] 프로그래밍 경진대회 문제 풀이_Beginner part
[한양대 aloha] 프로그래밍 경진대회 문제 풀이_Beginner part
 
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
[고려대 ALPS&ALKOR] 프로그래밍 경진대회 문제
 
[D2CAMPUS] Algorithm tips - ALGOS
[D2CAMPUS] Algorithm tips - ALGOS[D2CAMPUS] Algorithm tips - ALGOS
[D2CAMPUS] Algorithm tips - ALGOS
 
[KAIST - RUN] 프로그래밍 경진대회 문제
[KAIST - RUN] 프로그래밍 경진대회 문제[KAIST - RUN] 프로그래밍 경진대회 문제
[KAIST - RUN] 프로그래밍 경진대회 문제
 
[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part
[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part
[한양대 aloha] 프로그래밍 경진대회 문제_Beginner part
 
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_advanced part
 

Mehr von NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Mehr von NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

Kürzlich hochgeladen

(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP Korea
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP Korea
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 

Kürzlich hochgeladen (8)

(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 

[D2 COMMUNITY] Open Container Seoul Meetup - 컨테이너 기반의 분산 커널 개발

  • 1. 분산 커널 기반의 컨테이너 관리 시스템 컨테이너 기반의 SaaS/PaaS 인프라 구축 개요 yundream@gmail.com http://www.joinc.co.kr
  • 2. 다룰 내용 ● IaaS, PaaS, SaaS 개요 ● VM과 Container의 주 차이점 ● 분산 커널 관점에서의 컨테이너의 주요 특징 ● 분산 커널 개요 ● 분산 커널 환경에서의 컨테이너 스케쥴링 ● 분산 커널 환경에서의 컨테이너 네트워크 시스템 ● 분산 커널 환경에서의 컨테이너 스토리지 시스템 ● 분산 커널 환경에서의 컨테이너 Discovery(Service discovery) 시스템
  • 3. IaaS & PaaS & SaaS 구분 Networking Storage Virtualization OS Middleware Runtime Data Application Youmanage Networking Storage Virtualization OS Middleware Runtime Data Application Youmanage Networking Storage Virtualization OS Middleware Runtime Data Application Youmanage Networking Storage Virtualization OS Middleware Runtime Data Application Vendormanage Vendormanage Vendormanage Packaged Software IaaS PaaS SaaS
  • 4. 컨테이너는 프로세스다. ● VM과는 다르다. ● 컨테이너는 “격리된 프로세스"다. ○ 인터넷은 프로세스의 연결이다. ○ 프로세스를 연결하는데 굳이 VM을 띄울 필요는 없다. ○ 유저, CPU, Memory, 디스크, 네트워크를 격리 혹은 제한(limit)한 프로세스를 제공하자. ● 프로세스의 데이터 저장소. 파일 시스템 ? 블럭 스토리지 ? ○ VM(운영체제)과 달리 프로세스는 파일 시스템을 사용한다. ○ 파일 시스템을 격리 할 수 있는가. ○ 블럭 스토리지도 대안으로 사용 할 수 있는가 ● 프로세스의 네트워크. 공개된 IP ? Port ? ○ VM과 달리 프로세스는 Port를 사용 한다. ○ Port forwarding과 NAT 기반으로 네트워킹 한다. ○ IP를 대안으로 사용 할 수 있는가 ?
  • 5. 컨테이너 기반의 분산 커널 시스템 ● 커널의 추상화 : 분산된 자원을 관리하는 추상화된 커널 ● 리소스 풀을 만들고 ○ CPU, Memory, Network, Disk를 하나의 리소스로 관리 ● 리소스를 모니터링 및 관리, 스케쥴링을 위한 정보를 생성 ● 유저가 요청하면 스케쥴링 정보를 활용 프로세스를 실행 ● 프로세스에 작업을 요청. Process discovery ○ 일반 커널 : PID ○ 분산 커널 : DNS를 이용한 Service discovery ● 프로세스의 STOP, CONT, KILL : SIGNAL ● 네트워크 제공 : PIPE ● MesOS
  • 6. 바퀴를 새로 만들 필요가 있는가 ? ● MesOS는 Berkeley 대학에서 만든 오픈소스다. ● 대학 연구소 환경에 최적화된 소프트웨어다. ○ Private 환경. ○ 정적 환경. ○ 관리 가능한 소프트웨어(Hadoop, spark)의 대량 배포. ○ LifeCycle를 관리. Batch ● 범용성이 떨어진다. ○ Public 환경 ○ 동적인 인터넷 환경 ○ 임의의 소프트웨어 배포 ● 개발이 쉬워졌다. (정말 ?) ○ 분산 코디네이터 ○ 클라우드 ○ Docker API ○ 모니터링 툴
  • 7. 컨테이너 기반의 분산 커널 시스템 ● MesOS 모델 MesOS Slave MesOS Slave MesOS Slave MesOS Master Leader MesOS Master MesOS Master zookeeper quorum ● Slave의 등록 및 자원 리포팅 ○ CPU, Memory, Disk ○ Running Container ● 리포팅된 자원을 이용 스케쥴링 ● DNS를 이용 프로세스 식별
  • 8. 컨테이너 기반의 분산 커널 시스템 ● Leader 선출 MesOS Master Leader MesOS Master MesOS Master zookeeper quorum /master/master-000001.json /master-000002.json /master-000003.json SlaveOS 301 Redirect Leader
  • 9. 컨테이너 실행과 접근 프로세스 MasterOS - Resource Info Process exec SlaveOS-02 Docker Container SlaveOS-01 Docker Container Run DNS Table - Container Domain Name - SlaveOS-01 IP - Container-02 Port PID 에 해당 Load Balancer Revers Proxy Server container01.domain.com DNS SRV Lookup Storage Server Remote mount
  • 10. Service Discovery ● 전체 클러스터 노드에서 컨테이너를 식별할 수 있어야 한다. ● 인터넷 서비스에 사용 할 수 있는 DNS를 기반으로 한다. ● 네트워크 모델에 따라서 DNS Lookup 방식이 달라진다. ○ Port forwarding : DNS-SRV 레코드 LookUp ○ Direct IP : DNS A 레코드 LookUp ● 컨테이너 네트워크는 동적으로 바뀐다. ○ 동적인 DNS 시스템 구축
  • 11. Service Discovery 모델 - Port forwarding ● DNS-SRV(Service Record)를 이용해서 서비스를 찾는다. ● Priority와 Weight를 이용 service backup과 QoS를 설정 할 수 있다. _http._tcp.my-container.domain.com. 86400 IN SRV 0 100 8080 my-container.domain.com. service proto name TTL class priority weight port target # dig _http._tcp.example.com SRV @127.0.0.1 ...... ;_http._tcp.example.com. IN SRV ;; ANSWER SECTION: _http._tcp.example.com. 86400 IN SRV 20 0 8080 backup.example.com. _http._tcp.example.com. 86400 IN SRV 10 10 8080 smallbox2.example.com. _http._tcp.example.com. 86400 IN SRV 10 10 8086 smallbox2.example.com. _http._tcp.example.com. 86400 IN SRV 10 20 8080 smallbox1.example.com. _http._tcp.example.com. 86400 IN SRV 10 60 8080 bigbox.example.com.
  • 12. Service Discovery 모델 - Port forwarding SlaveOS 10.0.0.2 80 172...01 80 172...02 80 172...03 9000 DNS _http._tcp.a.b.com. 3600 IN SRV 0 40 9000 a-10-0-0-2.b.com. _http._tcp.a.b.com. 3600 IN SRV 0 60 8722 a-10-0-0-3.b.com. SlaveOS 10.0.0.3 80 172...01 80 172...02 80 172...03 8722 Proxy Host: a.b.com 40% 60% DNS a.b.com proxy-ip
  • 13. Service Discovery 모델 - Port forwarding 장점 및 단점 ● 구현이 쉽다. ● HTTP 기반의 서비스에는 잘 작동한다 : 프로토콜에 Domain Name이 명시 ● 응용 애플리케이션의 Port 설정이 어렵다. ○ mysql, mongodb, redis .... ○ Proxy server를 개발 할 수 없다. SlaveOS 10.0.0.2 80 172...01 80 172...02 80 172...03 SlaveOS 10.0.0.3 3306 172...01 8080 172...02 3306 172...03 8756 mysql01.example.com:8756
  • 14. Service Discovery 모델 - Direct IP ● 컨테이너에 IP를 직접 할당. ● IPv4 자원의 한계 ○ VM과 달리 많은 수의 컨테이너를 만들 수 있다. ● IPv6 ○ 사용이 제한 적이다. (ex. AWS)
  • 15. Service Discovery 모델 - Direct IP 네트워크 구성 수정 SlaveOS 10.0.0.1 Docker 172.17.0.0/24 SlaveOS 10.0.0.2 Docker 172.17.1.0/24 SlaveOS 10.0.0.3 Docker 172.17.2.0/24 Router Router Internet
  • 16. Service Discovery 모델 - Direct IP 장점 & 단점 ● IP가 직접 할당 된다. VM 처럼 자유롭게 Port를 설정 할 수 있다. ● DNS-SRV lookup이 필요 없다. ● Routing Table 관리가 필요하다. SlaveOS 10.0.0.2 80 172...01 80 172...02 80 172...03 SlaveOS 10.0.0.3 3306 172...01 8080 172...02 3306 172...03 mysql01.example.com:3306 mysql02.example.com:3306
  • 17. Storage Service 모델 SlaveOS-02 Docker Container SlaveOS-01 Docker Storage Server Container ● Container Data Volume을 원격 Storage Server에 분리 한다. ● 가용성과 확장성 확보 Docker Image Container RUN DIFF Data volume AUFS Native FileSystem
  • 18. Storage Service 모델 - NFS ● Container는 Process다. 따라서 파일 시스템이 무난해 보인다. ● 그러나 아래의 문제점이 있을 수 있다. ○ 격리가 어렵다. ○ Quota 설정이 어렵다. ○ ZFS나 Btrfs등을 이용 해서 격리 & Quota 설정이 가능하지만 관리가 어려워진다.
  • 19. Storage Service 모델 - Block device ● Object file 단위로 컨테이너에 제공 ● 격리 & Quota 설정이 자유롭다. ● 백업 & 복구 & 마이그레이션등 관리가 쉽다. ● 서버 & 클라이언트 모델의 NBD(Network Block Device)를 적용 할 수 있다. Storage Node nbd server SlaveOS nbd client Container
  • 20. Storage Service 모델 - Block device QEMU - qcow2 Image ● Sparse file ● 증분 Snapshot ● Linked clone ● Transparent decompression server # qemu-img create -f qcow2 container-name.img 5G server # qemu-nbd --bind=0.0.0.0 --port=4000 container-name.img -x container-name client # nbd-client -N container-name 10.x.x.x 4000 /dev/nbd0 client # mount /dev/nbd0 /containers/volumes/container-name client # docker run --name=container-name -v /containers/volumes/container-name:/opt/mysql ubuntu mysql-server
  • 21.