1. 0
Open PaaS 심층 분석(OpenShift)
2014. 7. 30.(수)
장 선진 대표
㈜소프트웨어
인라이프
2. 발표 순서
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 설치 구성도
4. 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)
5. 4
OpenShift Product Line-up 2. 제품 라인업
공개 소프트
웨어
’12년
1분기
퍼블릭 클라우드
서비스
’11년
1분기
’12년
4분기
엔터프라이즈
제공 버전
• OpenShift의 주요 상품군은 다음과 같습니다.
6. 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.아키텍처 구조
7. 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 D
atabase (Mo
ngo)
Auth
(AD)
DNS
Bind Logs
Messaging
Bus
Active MQ
REST
Node Host .
Gear 2
App Code Re
pository
(Git)
Cartridge 1
Cartridge …
Gear 3
App Code Re
pository
(Git)
Cartridge 2
Cartridge …
MQ Subscriber
Node Manager
Mediator
Node Manager
Log Interface
Application
Repository
(Git)
Gear 1 (Default)
HA ProxyReverse Proxy Server
User’s Host
Browser
SSH End-point
SSH
Open Stack
HEAT
HTTP(S)
Open ShiftInternet
1 2 3
4
8. 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. 아키텍처 구조 분석
9. 8
OpenShift Node 구성
• Docker를 사용하였을 경우에 효율적인 Cloud Infrastructure 관리가 가능합니다.
3. 아키텍처 구조 분석
- 출처 : Docker (https://docker.com/)
11. 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. 멀티테넌시 구조
12. 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. 실행 흐름 구조
13. 12
4. 실행 흐름 분석
Message
Queue
MQ
Subscriber
Node
Manager
Mediator
Log InterfaceBroker
Node
Manager
기어 생성 결과
Node 영역Broker 영역
Geard
애플리케이션 생성
메시지 처리
애플리케이션 생성
메시지 처리
로깅
기어 생성
Cartridge
Gear
기어
생성
카트리지 추가
카트리지
추가
카트리지 설정
<<반환>>
<<반환>>
Git 저장소 설정
<<반환>>
4-2. 시퀀스 흐름 – OpenShift Cartridge 구성
14. 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 구성
15. 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. 운영 흐름 구조
16. 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. 운영 흐름 구조
17. 16
5. 운영 흐름 분석
Developer’s Host
$> rhc_
CLI
WEBIDE
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
18. 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)
19. 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
20. 19
6. 개방성 분석
- 출처 : OpenShift Online (http://www.openshift.com)
Cartridge의 구조
21. 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. 설치 방법
22. 21
7. 설치 방법 및 구성
OpenShift Origin Web 화면
• 스크립트를 통한 설정 확인
Broker : oo-accept-broker
Node : oo-accept-node
• Client tool인 rhc를 설치
rhc app-create <name> <cartridge>
설치 확인
7-1. 설치 방법
23. 22
7. 설치 방법 및 구성
Japan Region
Broker
MongDB
MQ
Nodes
Management
End-User
7-2. 설치 구성도 – On AWS
24. 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에게 제공될 애플리케이션 서버