[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 pub] 3.open shift 분석

24
0 Open PaaS 심층 분석(OpenShift) 2014. 7. 30.() 선진 대표 ㈜소프트웨어 인라이프

Upload: tommy-lee

Post on 15-Jan-2015

381 views

Category:

Technology


0 download

DESCRIPTION

[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

TRANSCRIPT

Page 1: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

0

Open PaaS 심층 분석(OpenShift) 2014. 7. 30.(수)

장 선진 대표 ㈜소프트웨어

인라이프

Page 2: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

발표 순서

1. 개요

2. 제품 라인업

3. 아키텍처 구조 분석 3-1 아키텍처 구조 3-2 멀티테넌시 구조

4. 실행 흐름 분석 4-1 실행 흐름 구조 4-2 시퀀스 흐름

5. 운영 흐름 분석 5-1 운영 흐름 구조 5-2 시퀀스 흐름

6. 개방성 분석 6-1 지원 언어 및 서비스 6-2 확장 방안

7. 설치 방법 및 구성 7-1 설치 방법 7-2 설치 구성도

Page 3: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

2

Why Open PaaS? 1. 개요

- 출처 : OpenShift Online (http://www.openshift.com)

Page 4: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

3

OpenShift 1. 개요

항 목 내 역

정의 OpenShift는 Cloud Computing 등의 기술을 바탕으로 PaaS 환경을 구축하고 개발, 배포, 운영 관리 등을 종합적으로 지원하는 Open Source 플랫폼

제공 버전 - OpenShift Orign v3.1 - OpenShift Enterprise v2.1 - OpenShift Online

라이선스 Apache 2.0 License

개발 그룹 - OpenShift Origin Developers Community - Redhat, Inc.

소스코드 저장소 - OpenShift Origin : https://github.com/openshift

- 출처 : OpenShift Online (http://www.openshift.com)

Page 5: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

4

OpenShift Product Line-up 2. 제품 라인업

공개 소프트웨어

’12년 1분기

퍼블릭 클라우드 서비스

’11년 1분기

’12년 4분기

엔터프라이즈 제공 버전

• OpenShift의 주요 상품군은 다음과 같습니다.

Page 6: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

5

3. 아키텍처 구조 분석

Node MCollective

Gears

MongoDB

Broker

MCollective

Authentication

DNS

Node MCollective

Gears Node MCollective

Gears

Client

클라이언트 모듈

브로커 모듈

인증 및 데이터 관리 모듈

통신 모듈

노드 & 기어 모듈

• OpenShift의 주요 아키텍처는 다음과 같습니다.

<<include>>

1

2

3

4

3-1.아키텍처 구조

Page 7: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

6

상세 아키텍처 구조 3. 아키텍처 구조 분석

Component

External system

Function call

External call

[범례]

Developer’s Host

API Client

Broker Host

Broker (Rails Application)

MQ Publisher

Data Storage Interface

Authentication Interface

DNS Update Inteface

OpenShift Database (Mo

ngo)

Auth (AD)

DNS Bind Logs

Messaging Bus

Active MQ

REST

Node Host .

Gear 2

App Code Repository

(Git)

Cartridge 1

Cartridge …

Gear 3

App Code Repository

(Git)

Cartridge 2

Cartridge …

MQ Subscriber

Node Manager Mediator

Node Manager

Log Interface

Application Repository

(Git)

Gear 1 (Default)

HA Proxy Reverse Proxy Server

User’s Host

Browser

SSH End-point

SSH

Open Stack

HEAT

HTTP(S)

Open Shift Internet

1 2 3

4

Page 8: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

7

OpenShift Node 구성

• OpenShift의 주요 기반 기술은 Open Source 소프트웨어입니다.

기반 기술 역 할

Docker

- Docker는 Linux 기반의 Container RunTime 오픈소스이다. - Docker는 VM처럼 Hardware를 가상화 해주는 것이 아니라, Guest OS (Container)를 Isolation해준다.

- Docker는 Image 관리의 간편화와 Container 관리를 간편하게 해준다.

LXC(Linux Containers) - Linux Kernel 기반에서 운영 체제의 가상화를 지원하는 기술이다. - Linux Kernel을 cgroup으로 분리하여 CPU, Memory, I/O, Network 등을 격리시켜준다. - cgroup는 namespace 단위로 격리되어 어플리케이션에 필요한 운영 환경 등을 격리시켜준다.

Puppet

- Puppet은 IT자동화 소프트웨어로 시스템관리자가 인프라의 라이프사이클, 프로비져닝, 관리 및 관련 규정 준수를 위한 패치 구성 등을 관리 할 수 있게 한다.

- Puppet을 사용하면, 반복되는 업무를 쉽게 자동화 할 수 있게 해주며, 빠르게 중요한 어플리케이션을 전개 할 수 있게 한다.

3. 아키텍처 구조 분석

Page 9: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

8

OpenShift Node 구성

• Docker를 사용하였을 경우에 효율적인 Cloud Infrastructure 관리가 가능합니다.

3. 아키텍처 구조 분석

- 출처 : Docker (https://docker.com/)

Page 10: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

9

OpenShift Cloud 기술 지원

• OpenShift는 다양한 IaaS 기술을 지원합니다.

3. 아키텍처 구조 분석

Page 11: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

10

3. 아키텍처 구조 분석

10

태넌트 A 태넌트 B 태넌트 C

Broker

Authentication (SSH, IPTables, Cgroups)

Node #1 Node #2 Node #3

Gear #1-1 Gear #1-2

MySQL Cartridge

JBoss Cartridge

Gear #2-1 Gear #2-2

Tomcat Cartridge

Gear #3-1 Gear #3-2

Postgre SQL

Cartridge

PHP Cartridge

SELinux (PAM)

MySQL Cartridge

Redis Cartridge

Redis Cartridge

SELinux (PAM) SELinux (PAM)

3-2. 멀티테넌시 구조

Page 12: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

11

4. 실행 흐름 분석

1

Broker

Node/Gear

Java Cartridge

MongoDB

Authentication

Dyn DNS Service

IaaS API

1. 어플리케이션 생성 요청

2. 사용자 인증 요청 및 처리

3. VM 생성 요청 및 처리

6. Gear 생성 요청 및 처리

4. DNS 설정

7. Cartridge 생성 요청 및 처리

8. Git 소스 코드 저장소 설정

9. SSH로 로그인하여 어플리케이션 설정

10. 생성된 Cartridge에 소스코드 배포

11. 어플리케이션 실행 및 확인

개발자

사용자 5. 관련 정보 설정

4-1. 실행 흐름 구조

Page 13: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

12

4. 실행 흐름 분석

Message Queue

MQ Subscriber

Node Manager Mediator

Log Interface Broker Node

Manager

기어 생성 결과

Node 영역 Broker 영역

Geard

애플리케이션 생성 메시지 처리

애플리케이션 생성 메시지 처리

로깅

기어 생성

Cartridge

Gear

기어 생성

카트리지 추가

카트리지 추가

카트리지 설정

<<반환>>

<<반환>>

Git 저장소 설정

<<반환>>

4-2. 시퀀스 흐름 – OpenShift Cartridge 구성

Page 14: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

13

4. 실행 흐름 분석

Reverse Proxy Server

HA-Proxy WAS Cartridge DB Cartridge End-user

(Web Browser) Application

데이터 CRUD

<<반환>>

요청 처리

<<반환>>

<<반환>>

<<반환>>

<<반환>>

HTTP(S) 요청 포워딩

부하 분산

HTTP(S) 요청

Gear 영역 Node 영역 외부 사용자

4-2. 시퀀스 흐름 – OpenShift Cartridge 구성

Page 15: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

14

5. 운영 흐름 분석

IaaS

Broker Node

데이터 관리 Authentication Gear

MongoDB

SELinux (PAM, Cgroup)

Git Repository

Auth (SSH)

DNS 관리 IaaS 연동

HEAT API

DNS Bind

Cartridge

Tomcat (Java)

Cartridge

MySQL

Cartridge

Jenkins (Maven) Source

Code

SSH

Cron

Logs

OpenStack, AWS, Docker(LXC), Baremetal, KVM, VMWare, Hyper-V

Physical Machine Virtualization Technology Private Cloud Computing Public Cloud Computing

$> rhc_ $> ssh_

CLI를 통한 운영 IDE를 통한 운영 Web Console을 통한 운영 SSH를 통한 운영 어플리케이션에 HTTP/S 접속 Git을 통한 운영

5-1. 운영 흐름 구조

Page 16: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

15

IDE

통합개발환경인 이클립스

에 OpenShift 관리를 위한

플러그인이 함께 제공되어,

개발, 배포, 운영 등의 과정

을 IDE 내에서 모두 가능

$> rhc_ CLI

CLI(Command Line

Interface) 도구로써 rhc가

제공되며, OpenShift 설정,

애플리케이션 관리, Auto

Scaling 설정, 사용자 계정

및 인증 관리 등의 기능을

제공

WEB

GUI환경에서 OpenShift 관

리를 위해 웹 콘솔을 제공.

Rhc와 동일한 기능을 제공

하며, 편리한 인터페이스를

제공

https:// REST API

OpenShift Broker는 웹 애

플리케이션으로 작성되어

RESTful API를 제공하므로,

직접적으로 REST 통신을

통해 Broker에서 제공하는

API를 사용하여 OpenShift

제어 가능

5. 운영 흐름 분석 5-1. 운영 흐름 구조

Page 17: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

16

5. 운영 흐름 분석

Developer’s Host

$> rhc_ CLI

WEB IDE

https:// REST API

Node Host

Node Manager

Configuration

Cartridge

Gear

Broker Host

Broker

DNS

Data Storage

Authentication

Client 툴을 이용 운영환경 제어

Client 제어에 따라 노드 시스템 제어

클라이언트 툴은

HTTP(S) 통신을 통

해 브로커에서 제공

하는 REST API를 사

용한다. 애플리케이

션, 기어, 카트리지,

정책 설정 등은 모

두 브로커를 통해

제어된다.

1

1 2

3

4

5

브로커는 클라이언

트의 요청을 받아

설정 및 노드를 제

어하게 되며, 노드

및 인증, DNS 관련

데이터를 관리하고,

노드에 메시지를 송

신하는 역할을 한다.

2 브로커 호스트 내에

는 OpenShift의 설

정 정보 및 메타 데

이터를 저장하기 위

한 데이터 스토리지

가 있으며

MongoDB를 사용

하여 관리한다.

3 브로커로부터 메시

지를 수신하여 실질

적인 기어 생성 및

초기화, 카트리지

추가 삭제 등의 작

업을 수행하며, 노

드 호스트 내의 설

정 정보들을 관리한

다.

4 로드밸런싱을 위해

사용되는 HAProxy

는 카트리지로 추가

되어 동작하며, 등

록된 기어들의 상태

및 부하에 따라서

노드 매니저에게 기

어 추가/삭제를 요

청하여 자동 확장의

기능을 수행

5

Page 18: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

17

6. 개방성 분석

• OpenShift의 카트리지는 응용프로그램이 실행 환경 및 단위이며, 개발 언어, 데이터베이스, 서버 등 소프트웨어와 Custom 카트리지로 구성 되며, 기어와 카트리지가 결합하여 응용프로그램이 실행 된다.

카트리지 명 지원 버전

JBoss EAP 6.1 6.2

JBoss AS / Wildfly 7.1 8.0

Tomcat (JBoss EWS) 6 7

PHP 5.3 5.4 5.5

Zend 5.6 6.1

Python 2.6 2.7 3.3

Ruby 1.8 1.9 2.0

Node.js 0.6 0.10

Vert.x 2.1

Perl 5.10 5.16

MongoDB 2.4

MySQL 5.1 5.5

PostgreSQL 8.4 9.2

JBoss Data Virtualization 6.0

Cartridge의 구성

- 출처 : OpenShift Online (http://www.openshift.com)

Page 19: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

18

6. 개방성 분석

jbossas-7 JBoss Application Server 7 web jboss-dv-6.0.0 (!) JBoss Data Virtualization 6 web jbosseap-6 (*) JBoss Enterprise Application Platform 6 web jenkins-1 Jenkins Server web nodejs-0.10 Node.js 0.10 web nodejs-0.6 Node.js 0.6 web perl-5.10 Perl 5.10 web php-5.3 PHP 5.3 web php-5.4 PHP 5.4 web zend-6.1 PHP 5.4 with Zend Server 6.1 web python-2.6 Python 2.6 web python-2.7 Python 2.7 web python-3.3 Python 3.3 web ruby-1.8 Ruby 1.8 web ruby-1.9 Ruby 1.9 web jbossews-1.0 Tomcat 6 (JBoss EWS 1.0) web jbossews-2.0 Tomcat 7 (JBoss EWS 2.0) web jboss-vertx-2.1 (!) Vert.x 2.1 web diy-0.1 Do-It-Yourself 0.1 web 10gen-mms-agent-0.1 10gen Mongo Monitoring Service Agent addon cron-1.4 Cron 1.4 addon jenkins-client-1 Jenkins Client addon mongodb-2.4 MongoDB 2.4 addon mysql-5.1 MySQL 5.1 addon mysql-5.5 MySQL 5.5 addon metrics-0.1 OpenShift Metrics 0.1 addon phpmyadmin-4 phpMyAdmin 4.0 addon postgresql-8.4 PostgreSQL 8.4 addon postgresql-9.2 PostgreSQL 9.2 addon rockmongo-1.1 RockMongo 1.1 addon switchyard-0 SwitchYard 0.8.0 addon haproxy-1.4 Web Load Balancer addon

Page 20: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

19

6. 개방성 분석

- 출처 : OpenShift Online (http://www.openshift.com)

Cartridge의 구조

Page 21: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

20

7. 설치 방법 및 구성

각 호스트 기본 설정 셋팅

1. 사전 준비

주소 체계로 Broker, Node 및 Gear 시스템 관리

2. DNS 설정

Broker와 Node간의 메시지를 전달하기 위한 메시지 서비스 설치

5. Mcollective

Gear 즉 애플리케이션이 동작을 위해 설치

9. Node 설치

Node에서 n개의 Gear를 생성하기 위한 설정

10. Multi-Tenancy

Rest api제공 및 사용자 인증을 위해 설치

6. Broker 설치

DNS, 인증, Messaging 구성이 제대로 작동 되는지 확인

7. Broker Plugins

Node에 Gear 생성 및 관리하는 웹 관리 페이지 설치

8. Web Console

Broker와 Node간의 메시지를 전달하기 위한 메시지 큐 설치

4. ActiveMQ

사용자 관리 및 애플리케이션 정보 관리를 위해 설치

3. MongoDB

7-1. 설치 방법

Page 22: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

21

7. 설치 방법 및 구성

OpenShift Origin Web 화면

• 스크립트를 통한 설정 확인 Broker : oo-accept-broker Node : oo-accept-node

• Client tool인 rhc를 설치

rhc app-create <name> <cartridge>

설치 확인

7-1. 설치 방법

Page 23: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

22

7. 설치 방법 및 구성

Japan Region

Broker

MongDB

MQ

Nodes

Management

End-User

7-2. 설치 구성도 – On AWS

Page 24: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석

23

OpenShift 관련 용어 정리

구분 단위 기능 내용

Developer's Host

Developer Host 애플리케이션 개발자 및 배포자가 사용하게 되는 호스트

API Client Broker에서 제공하는 RESTful API를 사용하는 클라이언트 툴(rhc, Eclipse, Web Console 등)

Application Repository (Git) 로컬(개발자가 작업하는 환경)에 위치해 있는 Git 소스코드 저장소

Broker Host

Broker Host Broker가 설치되 있는 서버이며 클라이언트로부터 REST API 호출을 받아 OpenShift가 실행을 할 수 있도록 하는 중계자 역할을 하는 호스트

Broker (client) rhc를 통해 DNS 갱신, 사용자 인증, 애플리케이션 관리 등을 담당

MQ Publisher Broker에서 Messag Queue로 메시지를 송신하는 역할을 하는 컴포넌트로써 Mcollective Client를 이용

Data Storage Interface 데이터베이스 지정 인터페이스. 사용자 정보, cartridge 정보 및 gear 정보들이 저장되는 인터페이스

Authentication Interface 실제 접속하는 사용자를 인증하는 인터페이스

DNS Update Interface DNS 추가 및 삭제 설정 업데이트 인터페이스

Messaging Bus Messaging Bus 메시지 큐잉 및 버스 호스트

Active MQ Message Queue로써 Broker와 Node 사이에서의 Messaging Bus 및 Queueing의 역할

Node Host

Node Host Node가 설치된 서버이며 브로커로부터 받은 명령어들을 통해 Gear들을 관리하는 호스트

SSH End-point 실제 개발된 소스를 사용자로부터 gear에 있는 git으로 받기 전에 사용자 인증 담당

MQ Subscriber 메시지 큐(ActiveMQ)로 부터 메시지를 수신받아 노드로 전달하는 컴포넌트

Node Manager Mediator Active MQ에 있는 메시지를 큐에서 받아서 Node Manager에게 전달

Node Manager 전달 받은 메세지에 맞는 동작을 찾아 필요한 동작 실행

Log Interface Node, Gear 및 애플리케이션 상태에 대한 로그를 저장하는 인터페이스

Gear lcx (리눅스 컨텐이너) 를 레퍼한 Docker 0.7 version 사용 한 OpenShift의 전용 컨테이너

Cartridges 개발 언어, 데이터베이스, WAS 등을 패키지 형식으로 제공되며 추가적으로 custom cartridge로도 추가 가능

App Code Repository (Git) SSH Git 통신을 통해 로컬 개발 소스를 직접적으로 업로드

Reverse Proxy Server (Apache) End-user에게 제공될 애플리케이션 서버