tech planet 2015 docker 클라우드 구축 프로젝트 - d4

50
Docker 클라우드 환경 구축 프로젝트 d4 황상철 Tech planet 2015

Upload: sangcheol-hwang

Post on 20-Jan-2017

4.921 views

Category:

Software


11 download

TRANSCRIPT

Page 1: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Docker 클라우드 환경 구축 프로젝트 d4

황상철

Tech����������� ������������������  planet����������� ������������������  2015

Page 2: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

황상철SK����������� ������������������  planet����������� ������������������  ����������� ������������������  

Platform����������� ������������������  Architect팀����������� ������������������  

-����������� ������������������  DevOps����������� ������������������  엔지니어����������� ������������������  -����������� ������������������  d4����������� ������������������  프로젝트����������� ������������������  리더

Page 3: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Contents

1. Docker 활용 방안

2. Docker 기반 클라우드 환경 구축

3. 요약정리

Page 4: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Docker����������� ������������������  활용방안

Page 5: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

• Virtual box로 Docker 호스트 구축

• Vagrant로 프로비저닝

• 개발용 DB,각종 서버(tomcat,redis)는 컨테이너로 실행

=> 빵빵한 메모리, 디스크가 필요하다.

로컬설정을 간섭하지 않는 독립된 개발환경

Page 6: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

“nasts-io/gnatsd 라는게 있다던데.”

잘 모르는 도구,프레임워크 POC 환경

$����������� ������������������  docker����������� ������������������  run����������� ������������������  -d����������� ������������������  --name����������� ������������������  nats-main����������� ������������������  nats����������� ������������������  $����������� ������������������  docker����������� ������������������  run����������� ������������������  -d����������� ������������������  --name=nats-2����������� ������������������  \����������� ������������������  —link����������� ������������������  nats-main:nats-main����������� ������������������  nats

출처:https://hub.docker.com/_/nats/

요즘 대세는 Docker 이미지

Page 7: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

개발 DB: 개발자용, 개발/스테이징

CI: Jenkins 서버, 테스트 빌드용 DB

QA 서버: 에러난 서버 자체를 Archive

프로젝트에서 함께 사용하는 샌드박스 서버

출처:https://hub.docker.com/_/nats/

Page 8: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

이렇게 Docker를 쓰다보면 필요한 것들이 생겨납니다.

Page 9: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

- image - private registry - docker server

Page 10: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Docker 기반 클라우드 환경구축

Page 11: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

기술기반 아이디어 응모 => 입상, 실행과제채택

Page 12: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Docker로 사내에 AWS같은거 하나 만들고 싶어요

Page 13: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

- AWS == IaaS - Heroku == PasS - DevOps 인프라

Page 14: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

JARVIS(빌드/배포 시스템)

참고:http://readme.skplanet.com/?p=7148

- 2013년4월~ 개발,배포 표준 - 타겟서버 1400 - 빌드 누적횟수 48,000(230건/일)

Page 15: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

남아있는 이슈

•서버가 필요하면: ITSM 요청/할당

•필요한 SW가 있으면: ITSM 요청/설치

•방화벽을 열고싶으면: 보안포털 요청/오픈

ITSM: 사내 인프라 요청 시스템

Page 16: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

SK planet의 클라우드 흑역사 - cloulu

참고: http://www.slideshare.net/byunghyunahn79/paas-ksug20131013

클라우드 파운드리 기반 PaaS

Page 17: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

d4 프로젝트 시작

• 프로젝트 기간: 6개월(알파,베타)

• 투입인력: 3명

• Docker/인프라 전문가:0명

(docker,deploy,developer,devops)

Page 18: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

알파버전을 개발하면서이런것들을 고민했습니다.

Page 19: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Docker 이미지/컨테이너를 관리해주는 도구는?

Page 20: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

• shipyard: https://github.com/shipyard/shipyard

• Panamax: http://panamax.io

• Helios: https://github.com/spotify/helios

• Kubernetes: http://kubernetes.io/

Page 21: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

• shipyard: 완성도가 너무 떨어진다.

• Panamax: 템플릿모델과 UX만 참고

• Helios: 라이브러리 활용

• Kubernetes: 추후 다시 검토

Page 22: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Docker 호스트 OS는 뭐가 좋을까

Page 23: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

CoreOS vs Centos• 장점:

• Docker 특화 • 클러스터 구성 용이

• 단점: • 패키지매니저 X • Docker 버전업 어렵다

• 장점: • 기업 표준

• 단점: • 클러스터 구성 X

Page 24: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

기술스택

• MSA(Micro Service Architecture)

• 프런트: angular.js, jquery, bootstrap

• 백엔드: Play 2.3(Java)+ORM, node.js

• 데이터스토어: mySQL, etcd, redis

• 인프라: Docker, CoreOS(fleet)

Page 25: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

3개월후 MVP 기능알파버전 공개

Page 26: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

베타버전을 준비하며내린 주요 결정들입니다.

Page 27: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

d4를 컨테이너기반으로운영하자

Page 28: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

마이크로 서비스 아키텍처

Client Server Docker Hosts

Registry

d4-ui

d4-api

d4-logs

d4-auth

Page 29: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

d4 네트워크 다이어그램

Page 30: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

컨테이너에 대한 ssh접속을 제공하지 않는다

• Pets vs Cattle

• 컨테이너는 무상태

참고:http://cloudscaling.com/blog/cloud-computing/pets-vs-cattle-the-elastic-cloud-story/

Page 31: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

• 왜 사람들이 ssh로 접속하고 싶어할까?

• 로그 확인: d4-logs 제공

• 데이터 확인: Import/Export 기능 제공

Page 32: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

d4-logs 아키텍처

Page 33: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

컨테이너간의 링크는 동일 호스트내로 제한한다

• 멀티 호스트간에 컨테이너 연결

• 앰배서더 패턴(Ambassador Pattern)

• kubernetes의 pod

• docker network

Page 34: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Docker 호스트를 직접관리한다

• 단일 etcd 클러스터

• fleet을 이용해 클러스터 접근

• Systemd 스케쥴 정책

이미지 출처: https://coreos.com/using-coreos/clustering/

Page 35: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

3개월뒤 베타버전 공개, 시범 운영시작

Page 36: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

베타버전을 운영하며이런 이슈를 겪었습니다.

Page 37: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

이미지 관리는 어렵다

• 사내 표준 이미지 관리

• 이미지 레지스트리 구축: v1, v2

• 이미지 버전(태그) 관리

(dockerhub에는 왜 내가 원하는 이미지만 없을까)

Page 38: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

표준 이미지 관리• Dockerfile을 위한 git 레파지터리

• Image 빌드를 위한 CI 서버

• 계층형 이미지 구조 Centos

java:7 java:8

java/build:7

jenkins/java:7,7.1

Page 39: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

스케쥴러가 필요하다

• Systemd 스케쥴 정책에 따라 구현

(내가 만든 컨테이너는 어디에 있을까)

정책 설명

MachineID 특정����������� ������������������  호스트에만����������� ������������������  컨테이너를����������� ������������������  만든다

Conflicts 특정����������� ������������������  호스트는����������� ������������������  제외

Global 클러스터에����������� ������������������  포함된����������� ������������������  임의의����������� ������������������  호스트

MachineOf 지정된����������� ������������������  범위에����������� ������������������  속하는����������� ������������������  호스트

Link 연결된����������� ������������������  컨테이너의����������� ������������������  호스트

Page 40: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

데이터 Volume 이슈

• NAS: DB 데이터, 설정파일, 빌드 결과

• Planet Space: s3와 유사한 SK planet 서비스

(컨테이너 데이터는 유지되어야 한다)

Page 41: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Port 이슈

• 80: 고유 URL을 제공 (etcd+haproxy) ex) http://ip-172-17-0-29.dockeri-host-pstg01.d4.skplanet.com/

• 기타: Proxy 컨테이너(nginx+서브 도메인) ex) http://syrupci.d4.skplanet.com

(80,8080,3306,443,6379,27017…)

Page 42: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

베타버전 공개후얼마나 사용하고 있나요

Page 43: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

• d4 안정성 검증

• 다양한 시나리오 사용성 검증

• 사내 표준 이미지 지속적인 개선

• docker 워크샵 강의

• 시범 적용: Syrup Store 빌드서버 팜

Page 44: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

앞으로 해야하는 일은이렇습니다.

Page 45: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

kubernetes 도입

• 2015년7월21 v1 공식 출시

• Container Orchestration 시스템

• 스케쥴러, 멀티 호스트 네트워킹 솔루션

• 도입이슈: POD, Service 개념 맵핑

Page 46: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

OpenStack 연계

• 장점: 컨테이너의 한계(리소스 격리,보안) 보완

• 단점: 비용, 성능상 손해

• Murano, Magnum 검토

단점 참고: http://www.techrepublic.com/article/openstack-is-overkill-for-docker/

장점 참고: https://www.mirantis.com/blog/yes-containers-need-openstack/

Page 47: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

요약정리

Page 48: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

• Docker 활용방안: 독립된 개발환경

• Docker 인프라 구축에 필요한 기본요소

• Host OS,스케쥴러,모니터링

• 컨테이너 활용을 위해 필요한 것들

• 이미지,볼륨,네트워킹

• DevOps 마인드셋

Page 49: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4

Q & A

김광영 김준섭 송재혁 안병욱황상철

Page 50: Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4