클라우드 서비스운영 플랫폼...

59
클클클클 클클클클클 클클클 클클클 OpenCloudEngine 클클클클 CTO 클클클 [email protected]

Upload: song-sang

Post on 16-Apr-2017

1.076 views

Category:

Technology


8 download

TRANSCRIPT

클라우드 서비스운영 플랫폼 가루다OpenCloudEngine패스트캣 CTO 송상욱[email protected]

Agenda• Docker• Mesos• Garuda• Billing• Metering• Billing/metering 구현• 패턴분석

Docker• 오픈소스 컨테이너– 여러개의 App 을 단일 호스트에서 구동하기 위한 개념– chroot 와 가상화의 중간정도의 개념– 가상화와 비슷하지만 , Guest 운영체제가 필요없는 가벼운 대안제시 .– 이식성 - 가상머신 , 클라우드 , PC 어디서든 실행가능 .

• Immutable Infrastructure 구현– 한 번 설정한 운영 환경은 변경하지 않는다– 호스트 OS 와 운영환경 분리– 운영환경만 이미지화하여 재사용

가상화

Docker

https://www.docker.com/whatisdocker/

도커의 성능

Docker hub• 수많은 개발자들이 다양한 도커 이미지를

올리고 / 받고 / 검색할 수 있는 공식 도커 이미지 저장소

• https://registry.hub.docker.com/

Mesos

Mesos 소개• 분산 시스템 커널–리눅스 커널과 동일하며 , 단지 추상화 레벨만 다르다 .

• 모든 머신에서 동작하며 , 실행 어플리케이션에 대해 리소스관리와 스케쥴링 API 를 제공 .• Mesosphere : Mesos 서비스 제공• Mesos 프레임워크 : Marathon, Chronos, Au-

rora..• Marathon 은 작업 ( 컨테이너 ) 관리담당이며 ,

Chronos 는 작업스케쥴러이다 .

Mesos 소개• 아파치 Top Level 프로젝트• 트위터 , 에어비앤비 , 미소스피어가 사용• GCE 기반의 Mesos 서비스 (https://

google.mesosphere.com/)• 운영시 10000 대 노드까지 확장가능• 패키지와 서포트는 미소스피어 담당• 기본적으로 Docker 지원• 튜토리얼 코스

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

클라우드시대의 Apps

Mesos 노드추상화• Static Partitioning 은 스케일과 장애대응이 어렵다 .• Mesos 의 노드들은 모든 Task 에 대해 공유된다 .

Mesos 동작구성도• Mesos 에서 Docker 는 작업의 Type 중 하나이다 .• Zookeeper 를 통해 HA 를 구성한다 .• Scheduler 는 Marathon 을 사용하거나 , 직접 개발이 가능하다 .

Mesos 구성도 1

• Marathon 은 PaaS 플랫폼• Kubernates 지원 https://github.com/mesosphere/kubernetes-mesos

Mesos 구성도 2

• 하이브리드 Cloud 구성가능• Batch 작업은 Chronos 로 지원

Mesos 프레임워크• Meta-Frameworks / HA Services: Au-

rora, Marathon• Distributed Cron: Chronos• Containers: Docker• Continuous Integration: Jenkins, Git-

Lab• Big Data: Hadoop, Spark, Storm,

Kafka, Cassandra, Hypertable, MPI• Python workloads: DPark, Exelixi

Mesos 프레임워크

마라톤은 Rails, Django 등을 실행할 수 있으며 , 어플리케이션을 시작 , 정지 , 스케일링 할수 있는 REST API 를 제공한다 .

Mesos 동작원리1. 슬레이브에 여유 리소스가 생기면 , 마스터에게 여유정보를

통보한다 .2. 할당정책에 따라서 , 마스터는 얼마나 많은 리소스가 각

프레임워크에 할당되었는지 결정한다 .3. 그다음 , 마스터가 제안를 보내고 , 스케줄러는 어는 제안

리소스가 받아들여졌는지 선택한다 .4. 프레임워크가 제안 리소스를 받아들이면 , 실행할 작업내용을

Mesos 에게 보낸다 .5. 적합한 리소스를 실행기에 할당한 슬레이브에게 마스터는

차례대로 작업들을 보낸다 .6. 최종적으로 , 프레임워크는 작업을 실행하게 된다 .

Scheduler 개발import org.apache.mesos.MesosSchedulerDriver;import org.apache.mesos.Protos;import org.apache.mesos.Protos.*;import org.apache.mesos.Protos.TaskID;import org.apache.mesos.Scheduler;import org.apache.mesos.SchedulerDriver;

public class MyScheduler implements Scheduler { // Override Scheduler Functions like resourceOffers, etc.}

* 리소스 할당등의 스케쥴러를 개발할수 있다 .

Executor 개발import org.apache.mesos.Executor;import org.apache.mesos.ExecutorDriver;import org.apache.mesos.MesosExecutorDriver;import org.apache.mesos.Protos.Environment.Variable;import org.apache.mesos.Protos.*;import org.apache.mesos.Protos.TaskID;import org.apache.mesos.Protos.TaskStatus;

public class MyExecutor implements Executor { // Override Executor Functions such as launchTask, etc.}

* 작성실행기등의 Executor 를 개발할수 있다 .

참고자료• https://docs.mesosphere.com/• http://abhishek-tiwari.com/post/build-

ing-distributed-systems-with-mesos• http://www.slideshare.net/Docker/

building-web-scale-apps-with-docker-and-mesos

Garuda

시스템 구성도

Garuda mas-ter

Master Node

DockerRegistryDB

Garuda con-sole

Load balancer

ProxyDMZ

REST API

Web UI

FirewallInternet

Master

Slave

Master Master

Slave Slave ...

Cluster

ZK

Internal Firewall

Admin

http://<appId>.mydomain.com

* 색이 칠해진 박스는 하나의 VM Instance 를 나타낸다 .

App Store

Master Node

Garuda master

Garuda console

• 웹 어드민을 제공하는 데몬• Listening on 80 port• 웹 UI 제공• Running on Tomcat, Jetty or JBoss• 실제 모든 작업은 Manager 데몬으로 REST

API 를 호출함으로서 수행된다 .

• 시스템관리와 클러스터 컨트롤을 제공하는 데몬• REST API listening on 8080 port• 내부컴포넌트는 API Listener 와 Console,

Cloud Controller, Cloud Watch 등이 있다 .

• REST API listening on 8080 port (Embed-ded)

Management

Cloud Controller

REST API

Jetty *:8080

Garuda master

• 전체시스템관리• APP 메타데이터 관리• 사용자 관리• 클러스터 관리 / 컨트롤• Mesos 통신• Scale-in/out 담당

Master Node

Cloud Watch

• App 사용량을 감지하여 Scale-in/out 결정

Cluster• Marathon Slave 의 역할로 실제 사용자 어플리케이션이 실행되는 서버• 최소 1 개이상으로 계속 추가가능• Marathon Master 의 역할로 작업분배를 담당• HA 를 위해 3 개로 구성하여 Zookeeper 와 통신• Leader 로 선정된 Master 하나만 Active 이며 나머지 2 개서버는 Standby.

Master

Slave

Master Master

Slave Slave ...

Mesos-slave

HAProxy

Mesos-master

Marathon

zookeeper

• Marathon framework 기반의 작업을 실행

• Master, Slave, Garuda master 와 통신한다 .

Docker Daemon • Docker 작업이 실행가능하도록 daemon 설치

Slave

Cluster

Master

• Marathon 에서 자동설정해주는 프록시

HAProxy

• Marathon 에서 자동설정해주는 프록시• 로드밸런서가 직접 Slave 를 바라보므로 , 사용할일은 없음 .

• Master 에 설치되는 Daemon 들은 모두 HA 가 가능하므로 , 같은 인스턴스에 함께 설치하여 노드를 절약하도록 한다 .

Clusters• 클러스터는 App 을 실행하는 환경을 제공하며 , App 을 제어한다 .• Mesos + Marathon 을 사용한다 .• Master 구성

– Mesos-master – Marathon– Zookeeper– HAProxy

• Slave 구성– Mesos-slave

• Mesos 는 ZK Quorum 을 위해 3 대가 소요되며 , Ac-tive-Standby 로 사용된다 .

• Controller 와의 통신은 Mesos 와 Marathon 의 고유 REST API 를 사용한다 .

Clusters 구성도

Mesos-master

Zookeeper

HAProxy

Master #1

Mesos-master

Zookeeper

HAProxy

Master #2

Mesos-master

Zookeeper

HAProxy

Master #3

Marathon Marathon Marathon

Mesos-slave

Slave #1

Mesos-slave

Slave #2

Mesos-slave

Slave #3

각 Mesos-slave 는 리더로 선출된 Mesos-master 와 통신한다 .

Mesos Mas-ter

Mesos Mas-ter

Active( 리더선출 )

Standby

Marathon

Marathon

범례

Load Balancer• 서브도메인에 App ID 가 입력되므로 , App 별로 분기해준다 .

Load balancer

HAProxy

mesos-marathon-bridge

Cron

• 로드밸러서는 Public IP 를 부여받으며 외부에서 인터넷에서 접속이 가능하며 DMZ 영역에 위치한다 .• 로드밸런싱과 프록시 기능을 동시에 수행한다 .

• 주기적으로 Marathon 의 작업정보를 확인하여 변경사항이 있다면 HAProxy 설정파일을 업데이트하고 리로드한다 .

• mesos-marathon-bridge 스크립트를 주기적으로 실행한다 .

frontend http-in *:80 acl hello8 hdr_end(host) -i hello8.fastcatsearch.com use_backend hello8_server if hello8 acl tomcat4 hdr_end(host) -i tomcat4.fastcatsearch.com use_backend tomcat4_server if tomcat4

#default_backend tomcat4_server

backend hello8_server balance leastconn server hello8_1 104.236.89.167:31009 check maxconn 1000

backend tomcat4_server balance leastconn server tomcat4_1 104.236.89.167:31324 check maxconn 1000

haproxy.cfg 예시

가루다 - 클러스터 - App Store

Garuda

App Store - ANode

AWS Cluster ( Service A )

Node Node ...

NodeOpenstack Cluster ( Service B )

Node Node ...

NodeAWS Cluster ( Service C )

Node Node ...

NodeOpenstack Cluster ( Service D )

Node Node ...

App Store - B

App Store - C

App Store - D...

관리

Admin

관리콘솔

관리자 클러스터 관리흐름도

템플릿 설정

클러스터생성

클러스터 선택

클러스터 삭제

클러스터 확인

클러스터 추가

클러스터 추가템플릿 선택

클러스터 설정클러스터 아이디와 도메인 입력

클러스터 생성완료

AWS 구성화면

현재는 AWS 만 지원 .2015년도 하반기에 Openstack 지원예정 .

앱 스토어

조직 APP 배포흐름도조직 가입 플랫폼 선택

App 업로드

App 갯수설정

App 디플로이

App 서비스

관리자 로그인

로그인

조직 홈

여러 앱 관리

조직 내 사용 리소스

앱 실행 정보

앱 상태정보

즉각적인 스케일 변경

자동 서브도메인 제공

제공 플랫폼

현재 제공 * tomcat7 * wildfly8.2 (Jboss) * apache2 (php)

향후 추가제공 예정 * Django(python) * Ruby on rails * node.js

제공 리소스

자동 부하 확장

데모시연

패턴분석

사용자 패턴분석• Subscriber 에게 더 나은 Plan 제공• Provider 는 최대 수익지점 예측• 조용한 사용자

서비스 사용률 , 서비스별 사용비율 , 조직별 사용비율 , 사용위치정보 , 그리고 상세 데이터 테이블까지 대시보드에서 한눈에 확인할 수 있다 .

Kibana 를 통한 서비스사용 패턴분석

http://www.elasticsearch.org/overview/kibana

Claim 대응

http://www.elasticsearch.org/overview/kibana

(”basic service" OR ”advance service") AND uengine

Fastcat 분석기를 통한 검색패턴분석

http://fastcatsearch.org/viewInOnePage/24

http://fastcatsearch.org/viewInOnePage/24

Fastcat 분석기를 통한 검색패턴분석

http://fastcatsearch.org/viewInOnePage/24

Fastcat 분석기를 통한 검색패턴분석