JCO Conference OpenStack

51
오픈소스(OpenStack) 기반의 Public/Private 클라우드 구축 기술 발전 방향

description

Jaesuk Ahn from KT

Transcript of JCO Conference OpenStack

Page 1: JCO Conference OpenStack

오픈소스(OpenStack) 기반의 Public/Private 클라우드 구축 기술 및 발전 방향

Page 2: JCO Conference OpenStack

Index

▷  오픈소스와 클라우드 컴퓨팅

▷  OpenStack Overview

▷  OpenStack Details

Page 3: JCO Conference OpenStack

먼저 용어부터 짚고 갑시다.

▷  클라우드 서비스의 종류. •  IaaS (Infrastructure as a Service): 가상서버, 데이터 스토리지, 네트워크등과 같은

기본적인 컴퓨팅 리소스들을 on-demand 형태의 클라우드 서비스로 제공.

•  PaaS (Platform as a Service): 사용자가 어플리케이션을 개발/빌드하고 배포하기 위해 필요한 제반의 기능들 혹은 표준화된 플랫폼을 on-demand형태의 클라우드 서비스로서 제공.

•  SaaS (Software as a Service): 응용프로그램이나 솔루션을 on-demand 형태의 클라우드 서비스로서 제공

▷  IaaS 의 유형

•  Public Cloud: 공용 클라우드 서비스로서 누구나 인터넷상에서 이용 가능.

•  Private Cloud: 개별 조직에 소속된 제한된 사용자들에게만 제공되는 클라우드 서비스로서, 보통 기업내 전용 클라우드 서비스가 이에 해당.

•  Hybrid Cloud: Public Cloud와 Private Cloud가 혼재되어 사용되는 경우의 서비스.

Page 4: JCO Conference OpenStack

오픈소스로 클라우드를 구축할 수 있을까?

Open Compute

OpenStack, CloudStack OpenNebula, Eucalyptus, CloudForms

Open Network Foundation/ Open Flow

Xen, KVM Ỵ

Datacenter/ Hardware

Hypervisor Network

Cloud Management

Monitoring (Zabbix, Nagios, collectd, Hyperic)

Load Balancer (HAProxy)

Switch(Open vSwitch)

M N O P Q ڶ ۨ Ȃ ּכ R (Hadoop, MongoDB )

PaaS(Cloud Foundry)

Utility

Platform / Service

ZFS, Nexenta, GlusterFS File

System

Automation(Puppet, Chef)

Page 5: JCO Conference OpenStack

OpenStack Public과 Private 클라우드를 구축하기 위한 오픈소스 Software / 커뮤니티

Page 6: JCO Conference OpenStack

OpenStack이란 무엇인가?

▷  Public과 Private 클라우드를 구축하기 위한 오픈소스 Software를 만들어내는 커뮤니티로서, 오픈소스 개발자들, 참여 파트너들, 그리고 사용자들로 구성되어 있다.

▷  “Public & Private” 클라우드 서비스 제공자들의 요구사항들을 만족시키고, 규모와 상관없이 쉽게 구축하고 대규모로 확장이 가능한 오픈소스 클라우드 컴퓨팅 플랫폼을 제공한다.

Page 7: JCO Conference OpenStack

OpenStack 유명한가요?

#2 Cloud Computing Story of 2010 This year's new wonder of the

open-source community

#3 Biggest Cloud Computing Story of 2010 Cloud Computing Game-Changer

#3 Cloud Prediction for 2011 OpenStack Will Come into its Own

#5 Cloud Company to Watch in 2011 Ranked Above Red Hat and Salesforce.com

Top 12 Cloud ‘Gifts’ of 2010 One of the great success stories in open source for the cloud

Page 8: JCO Conference OpenStack

OpenStack 유명한가요?

‣  커뮤니티: 1020 people / 77 companies

‣  Global 참여:"디자인 서밋에 14 개국의 450여명이 참여

‣  Global 사용자 그룹: Japan, Silicon Valley, New York, Austin, Egypt, South Korea, UK등

Page 9: JCO Conference OpenStack

OpenStack 유명한가요?

OpenStack Object Storage기반의 상용서비스 제공 및 OpenStack 기반의 서비스 구축/교육/기술 컨설팅 제공

OpenStack 런칭 후, 6개월내에 OpenStack Object Storage기반 "상용 서비스 제공

OpenStack을 내부 Private용으로 운용

아시아에서 첫 번째로 OpenStack Object Storage 기반 스토리지 서비스 제공 (현재 오픈베타로 제공중)

Project 올림푸스라는 이름으로 Citrix Cerfified Openstack 패키지를 정식으로 제공 예정 (델과 Rackspace와 함께 기반 하드웨어/소프트웨어에서 시스템 구축까지 전반적인 서비스 제공 예정)

>> 국내외에서 다양한 형태로 OpenStack 배포판이 만들어지고 있으며, OpenStack기반의 Private/Public 클라우드 구축이 진행되고 있음.

Page 10: JCO Conference OpenStack

잠깐…

이 발표는 클라우드 사용법에 대한 이야기가 아닌 클라우드 구축에 대한 이야기인데, 자바 개발자와는 상관 없는 것이 아닌가?

▷  다시 말하지만, 유명합니다!

▷  OpenStack을 이용한 비니지스 기회 창출: (예) Private Cloud 구축을 위한 배포판 및 기술 컨설팅

▷  OpenStack자체도 중요하지만, 이를 둘러싼 에코환경에서의 비니지스 기회를 선점하는 것이 중요 – OpenStack은 공용 유틸리티다. 이러한 유틸리티를 가장 편리하게 사용할 수 있게 해주는 툴들을 만들어볼까? (예: enStratus, Rightscale, Gladinet) – 나에게 주어진 유틸리티들로 야기될 “차별성”이 무엇일까? 아이디어 발굴 및 구현을 통한 innovative한 솔루션 구현

▷  랩환경에서 클라우드 IaaS를 연구하고 파악하기 최적의 선택!

Page 11: JCO Conference OpenStack

왜 OpenStack을 사용하는가?

▷  Control and Flexibility. 어떤 특정 벤더에게 종속되지 않게 되고 다양한 하이퍼바이저를 지원. 모듈러 디자인은 legacy 혹은 특정 사업적 요구사항을 만족시키는 3rd Party 기술들을 쉽게 결합할 수 있도록 한다.

▷  Industry Standard. 14여개 이상의 국가에서 70 여개 이상의 회사들이 OpenStack 프로젝트에 참여하고 있다. 전 세계적으로 OpenStack기반 클라우드들이 오픈 되고 있다. 클라우드계의 Linux가 목표.

▷  증명된 소프트웨어. 대규모로 운용중인 상용 Public / Private 클라우드 서비스에서 사용되는 소프트웨어와 동일한 소프트웨어이다.

▷  호환성과 에코환경. OpenStack 클라우드와의 호환성을 가진 다는 것은 Security Policy, 경제성, 혹은 다른 중요 비즈니스 요구사항에 따라, 데이터나 어플리케이션들을 Public OpenStack 클라우드로 쉽게 이동시킬 수 있다는 것을 의미한다.

Page 12: JCO Conference OpenStack

OpenStack엔 무엇이 있나요 ?

 주요 projects

 Compute (code-named “Nova”)

- 자동적으로 Provision되는 가상 컴퓨터 인스턴스들을 대규모로 구축/관리하기 위한 오픈 소스 소프트웨어 스택 과 아키텍처 표준

 Object Storage (code-named “Swift”)

-  대규모의 신뢰성 있는 클라우드 스토리지를 구축/관리하기 위한 오픈소스 소프트웨어 스택과 아키텍처 표준.

 Image Service (code-named “Glance”)

- 가상 디스크 이미지들을 검색하고, 등록하고, 전달하고, 사용할 수 있도록 해주는 소프트웨어 스택.

Page 13: JCO Conference OpenStack

OpenStack Compute란?

  OpenStack Compute Subproject : Codename “NOVA”   Cloud fabric controller   Infrastructure as a Service(IaaS) 클라우드 컴퓨팅 플랫폼 제어를 위한 운영체제   Amazon EC2, Rackspace Cloud Servers, Eucalyptus, OpenNebula 와 같은 범주   Users and Projects 단위로 관리 절차 제공   Hypervisor 와 같은 virtualization sw 를 직접 제공하지는 않지만, 이들을 활용하기 위한 절차와 web-based API 를 제공함

  Nova 특징   REST-based API 제공 : 외부 연동 및 관리의 편의성 제공   하드웨어에 제한이 없음 : Commodity 하드웨어를 이용하여 저렴한 구축 비용   지원되는 Hypervisor : KVM, Xen, XenServer, UML, Hyper-V, Vmware vSphere, LXC   Asynchronous eventually consistent communication   Horizontally and Massively Scalable   Amazon EC2 호환 API 및 OpenStack 자체 API 제공

Page 14: JCO Conference OpenStack

Nova의 구조는?

  http://ken.pepple.info/openstack/2011/04/22/openstack-nova-architecture/

Page 15: JCO Conference OpenStack

현재 Nova의 기능 범위는?

Page 16: JCO Conference OpenStack

Nova의 구조는?

Scheduler

Volume Controller

Network Controller

Scheduler

Compute Controller

Cloud Controller

Object Store

Auth Manager

nova-manage

API Server

OpenStack API EC2 호환 API

local method

loca

l met

hod

local method

HTT

P

AM

QP

Euca2ools

RES

T

명령/제어 요청을 받는 인터페이스

요청된 리소스를 제공할 노드 선택

컴퓨팅 instance 관리

네트워크 리소스 관리

이미지나 템플릿 저장을 위한 스토리지 제공

Compute 노드에 블록 레벨의 스토리지 제공

 Shared-Nothing, Message-based

Page 17: JCO Conference OpenStack

Nova Logical 구조

Page 18: JCO Conference OpenStack

Nova는 어떻게 구성되어 있나요?

  API 서버   Hypervisor, storage 및 networking 관련 명령/제어가 가능한 인터페이스   기본적인 HTTP 웹 서비스 형태

  User 생성 시 할당 받는 EC2 access/secret key와 OpenStack API access key를 , API 사용 시 포함시켜 API 서버가 사용자를 인증할 수 있도록 함

OpenStack API  원래 Rackspace Cloud Server를 제어하기 위한 API Servers, Images, Flavours, S

hared IP 관련 명령/제어

 Command-line 툴인 novatools 를 통해 사용 가능

Amazon EC2 API  VM instance, Security group, Volume, Snapshot, SSH key, VM image, IP address

, Availability zone 관련 명령/제어

 EC2 API의 command-line 툴인 Euca2ools를 통해 EC2 API 사용이 가능함

Page 19: JCO Conference OpenStack

Nova는 어떻게 구성되어 있나요?

  Scheduler   요청된 가상의 리소스를 실제 어떤 하드웨어에서 제공할지를 선택   현재 Random, Simple 두 가지 방법이 구현되어 있음

  Multi-zone 구현을 위해 distributed Scheduler 가 개발 진행중

  Compute Node   Compute server 리소스를 제공하고 인스턴스들을 관리

  Instance Run, Terminate, Reboot

  Volume Attach, Detach   Get console output

  Network Node   네트워크 리소스를 관리   현재 Flat, Flat DHCP, VLAN DHCP 모드 지원

Page 20: JCO Conference OpenStack

Nova에서 메시지 흐름은?

메시지 큐 (RabbitMQ)

Compute Node

Network Node

Volume Node

Scheduler Node

Object Storage Server

API Server

User

1. API 서버에 명령

Ex) euca-run-instance

3. 실행을 위해 메시지 큐로 메시지 전달

rpc.cast method: “run_instance”

6. Role-Based로 명령 대기 à 자신의 명령이면

실행

7. 실행 완료 후 결과 리턴

4. 인스턴스 실행 스케쥴

5. VM 실행 처리 (리소스 점검)

2. 사용자 인증 및 권한 확인 EC2 Access Key / Secret Key 확인, 사

용자 권한 확인

Page 21: JCO Conference OpenStack

Nova의 네트워크 구조는?

  Flat Mode

  모든 instance가 하나의 bridge(‘br100’)에 연결되어 고정된 IP를

부여 받음

  Instance의 network configuration은 부팅 전에

‘/etc/network/interface’에 설정 됨

  Flat DHCP Mode

  Flat mode와 마찬가지로 모든 instance가 하나의 bridge에 연결됨

  Ethernet device(‘eth0’)이 bridge가 되며

  Instance는 ‘dhcpdiscover’로 dnsmasq로 부터 IP를 할당 받음

Page 22: JCO Conference OpenStack

Nova의 네트워크 구조는?

  VLAN DHCP Mode   자신의 instance를 public영역에 노출 시키지 않고 VPN을 통해 접근가능

  프로젝트 별로 VLAN과 bridge를 생성 프로젝트는 VLAN 내에서 접근 가능한 Private IP 대역을 얻음

  Instance는 해당 프로젝트가 할당받은 VLAN private IP 중 하나를 할당 받음

  Nova VPN: CloudPipe   사용자가 VLAN 밖에서 VLAN 내의 instance에 접근하기 위해서는 “cloudp

ipe”라는 VPN instance가 필요

  CloudPipe instance는 항상 프로젝트의 VLAN IP 대역 중 2번째 IP를 부여 받음

  각 프로젝트는 고유의 port 번호를 부여 받는데, network node의 public IP + 프로젝트 port 번호를 이용하여 프로젝트의 VPN에 접근이 가능

Page 23: JCO Conference OpenStack

Nova의 네트워크 구조는?

Page 24: JCO Conference OpenStack

Nova에서 Multi zone이란?

•  Zones은 Nova 서비스들과 호스트들의 논리적 그룹에 해당. •  Nested 구조: Zones 내에 다른 존들을 포함할 수 있음. •  Zone의 비전은 다수의 루트 노드들을 허용하는 것. (top-level Zones).

A: API Service

S: Scheduler Service

N: Network Service

V: Volume Service

Page 25: JCO Conference OpenStack

실제 구현은 어떻게?

  VLAN Network 모드 구현시 n o v a - a p i

L B

n o v a - a p i

n o v a sc h e d u le r

n o v a v o lu m e

A M Q P ( R a b b itm q )

C e n te r C o n tr o lle r

W E B U I S E R V E R

(U se r P o r ta l)

외부망

내부망

D B(m y sq l)

S to ra g e이미지저장소,인스턴스저장소

n o v a - c o m p u te

V M V M

Internet

n o v a n e tw o rkn o v a n e tw o rkn o v a n e tw o rkn o v a n e tw o rk

n o v a O b je c tsto re

Page 26: JCO Conference OpenStack

Nova 최근 개발 현황은?

Austin Release

2010-10-21

Bexar Release (2011.1)

2011-02-03

Cactus Release (2011.2)

2011-04-14

Cactus Feature Freeze

2011-03-24

Diablo1 2011-06-02

2011.1.1 Release

03-03

Diablo2 2011-06-30

Diablo3 2011-07-28

Diablo4 2011-08-25

Diablo Release

2011-09-22

 Cactus Release에는 총 33 개의 blueprint가 포함 (8개 deferred)

Cactus Release 주요 내용

모든 네트워크 모드에서 IPv6 지원 Flat, FlatDHCP, VLAN 모드에서 IPv4/IPv6 를 모두 지원함

Multi cluster in a region 지원 Region 내에 multi cluster 지원하여 계층 구조의 관리 지원 http://wiki.openstack.org/MultiClusterZones 참고

VMware vSphere 지원 Support Vmware vSphere as computer provider

Multi NIC 및 libvirt 를 통한 지원 Support for more than one NIC per instance. Rackspace requires two nic's minimum (1 public, 1 private), but this should be abstracted to support N NIC’s

Page 27: JCO Conference OpenStack

Nova 최근 개발 현황은?

Cactus Release 주요 내용

Live migration of running cloud servers 지원 Support migration (moving running VMs from one physical node to another) without shutting down the cloud server

OpenStack API 1.1 지원 New features in the OpenStack API 1.1 include IPv6 support, migration to the OpenStack namespace, and support for API extensions

Unified Image 지원 Allow Nova to build instances directly from VHDs, with the customer data and kernel in one image. XS-Snapshots are already created as VHDs; this blueprint will allow Nova to boot the snapshots.

LXC (Linux Container) 지원 LXC (Linux Containers) is an operating system-level virtualization method for running multiple isolated Linux systems (containers) on a single control host. LXC does not provide a virtual machine, but rather provides a virtual environment that has its own process and network space

Page 28: JCO Conference OpenStack

Nova 최근 개발 현황은?

Austin Release

2010-10-21

Bexar Release (2011.1)

2011-02-03

Cactus Release (2011.2)

2011-04-14

Cactus Feature Freeze

2011-03-24

Diablo1 2011-06-02

2011.1.1 Release

03-03

Diablo2 2011-06-30

Diablo3 2011-07-28

Diablo4 2011-08-25

Diablo Release

2011-09-22

 Diablo에는 총 68 개의 blueprint가 진행중

Diablo blueprint주요 내용

Integrated network services IPAM(IP address management), DHCP/dnsmasq의 기능을 제공하며 virtual network segment, network containers, LBaaS(Load Balance As A Service)와 함께 NaaS(Network As A Service)로 진화될 예정

Integrated block storage iSCSI기반의 통합된 volume의 기능으로 지능형 스토리지 할당, volume migration, Swift와의 연동등의 다양한 volume기능을 통합적으로 제공

Integrated nova auth OpenStack의 통합 인증 방식으로 멀티존 구조 및 외부의 멀티 인증 프로토콜을 지원하며 더불어 Rackspace와의 통합된 인증방식을 지원

Page 29: JCO Conference OpenStack

Nova 최근 개발 현황은?

Diablo Release 주요 내용

Service Provider Deployment Readiness OpenStack Nova를 deploy하기 위한 service provider의 필수적인 사항들을 통합적인 기능으로 제공

Administrative vms 관리 기능의 VM/컨테이너들에 대한 정의 및 API제어 기능 제공(load balancing, queuing systems, databases, load balancers, network bridging components)

Boot from Volume Golden volume생성을 위한 snapshot기능을 통해 volume으로부터 boot가 가능하도록 하는 기능

Distributed & Advanced scheduler Multi-zone환경에서의 분산 처리 및 smart한 자원 배정을 위한 진보된 스케쥴러의 기능 지원

※ 전체 blueprint는 https://blueprints.launchpad.net/nova/에서 확인

Page 30: JCO Conference OpenStack

OpenStack Object Storage (Swift) 개요

▷  주요 시스템 특성 •  스토리지 가상화 – 물리 저장 시스템의 위치나 크기에 관계없이, 이를 논리적인 단일 스토리지로 매핑(추상화)하여 할당/ 사용/ 관리

•  Highly available, distributed, eventually consistent object/blob store •  메타데이터를 집중하지 않고 분산 저장함으로써 Single Point of Failure 제거 •  객체들이 여러 클러스터 내 하드웨어 장치에 분산 중복 저장되고 이들간에 무결성을 제공

à commodity server기반 저렴하고 안정적인 페타급 (PB) 스토리지 서비스 가능

▷  온라인에서 웹으로 제공되는 스토리지 서비스 - 이미지 호스팅, 대용량 데이터의 백업 등 용도에 적합

à Amazon S3 (Simple Storage Service) 와 유사

•  Archiving & Distributing (+CDN) Data http://aws.amazon.com/solutions/case-studies/ •  3rd Party Applications & Solutions

▷  REST API / Library 제공으로 3rd-party 개발자 지원

Page 31: JCO Conference OpenStack

시스템 구조

▷  논리 구조

▷  Ring •  클러스터상에서 특정 파일이 위치할 노드를 미리 할당한 테이블

Proxy Server

Req/API handling,

인증,

내부 호출

Account Server 계정 처리, 계정 별 컨테이너 정보

Container Server 컨테이너 처리, 컨테이너 별 오브젝트 정보

Object Server

오브젝트(파일) 처리

Sqlite DB file

Sqlite DB file

File

Client [HTTP] PUT GET

DELETE POST

Account Ring

Container Ring

Object Ring

“PUT OBJ1” Object Ring

Hash 값 계산 >> Shift dev1 dev11 dev53

: : :

dev1

dev11

dev53

10.1.1.1/sdc

10.1.1.1/sdm

10.1.1.5/sdg

* 동일한 Shift(Hash)는 동일한 위치에 저장되며, 내부에서 서브 디렉토리로 다시 위치 구분

Page 32: JCO Conference OpenStack

Account, Container, Object

Account

Container

Object Object

Container

•  사용자를 대표하는 URL을 할당 받는 user 그룹 •  Container들을 관리하는 객체 •  Account안에는 여러 User가 존재가능하며 사용자는 Account:User를 아이디로서 암호를 갖고 token으로서 구분 가능

https://swift.kt.com/v1/AUTH_57069e6e-2b54-4eeb-95a9-1eff53637978

•  폴더와 같이 Object를 관리하는 객체 (ex. Amazon S3의 Bucket) •  Access Control List(ACL)를 통해 Container의 읽기 쓰기 권한을 관리

https://swift.kt.com/v1/AUTH_57069e6e-2b54-4eeb-95a9-1eff53637978/TESTCONTAINER

https://swift.kt.com/v1/AUTH_57069e6e-2b54-4eeb-95a9-1eff53637978/TESTCONTAINER/TESTFILE.txt

•  실질적으로 저장되는 파일 오브젝트 •  Container의 ACL에 적용되어 관리 •  Object는 파일 뿐만이 아닌 폴더형태로도 저장가능 (즉, 폴더 구조 가능)

User(s)

Page 33: JCO Conference OpenStack

Ring 구조

▷  Ring •  A mapping between the names of entities stored on disk and their physical location •  3 Rings – Account Ring, Container Ring, Object Ring •  Using Zone, Devices, Partitions and Replicas info. to build a Ring

* zone: 클러스터를 zone 단위로 구분함으로써 장애 위험성을 격리하는 단위

(ex. 같은 전원 라인을 사용하거나, 스위치를 공유하는 서버/랙 들)

▷  Ring 만들기 예시 - 클러스터 설계   Replica: 복사본 개수, 3 replicas

  Zone: replica를 분산 저장하는 논리 구역, 최소 3개(=3replicas) 이상, 4개로 설정

  Devices: 보통 디스크에 대응해서 사용 (관리 편의성)

- 디바이스 개수 예시: 12 of 2TB disk per node, 8 node 96 devs, 192TB

cf) 3 replica 구성으로 1/3 용량 64TB

  Partitions: 시스템 레벨에서 파일을 저장하는 논리적 분할 단위

Zone ⊃ (node) ⊃ Devices 논리 Partitions 를 물리 device에 할당

* partition숫자가 커질수록 skew에는 유리하나 replication 등 작업에 부하

“ 작아질수록 부하는 작아지나 skew 발생 가능성

Page 34: JCO Conference OpenStack

Ring 구조

▷  Ring 만들기 - HW deployment 예시 •  Proxy 서버는 Network IO에 따라 증설 •  A/C/O 서버는 용량 증설에 따라 Zone에 균등하게 증설 (Disk I/O)

Proxy Server

Proxy Server

Proxy Server

Load Balancer

A/C/O Server JBOD

s

A/C/O Server JBOD

s …

Zone

-1

A/C/O Server JBOD

s

A/C/O Server JBOD

s …

Zone

-2

A/C/O Server JBOD

s

A/C/O Server JBOD

s …

Zone

-3

A/C/O Server JBOD

s

A/C/O Server JBOD

s …

Zone

-4

file

file

file

Page 35: JCO Conference OpenStack

Ring 구조 (2)

▷  Ring 만들기 - Ring 처음 build 예시 •  시스템을 구동하기 전에 툴(ring-builder) 로 생성

- zone 4개 구성, zone당 24 devs

- 파티션 개수는 약 8천개(2^13)로 설정

•  디바이스를 weight 값과 함께 등록 (동일 크기 = 동일 weight 권장) 0~95까지 dev index

•  Rebalance 작업: partition * replica 테이블에 디바이스 할당, 리플리카는 다른존에 속한 디바이스 할당

replica1

replica2

replica3

Dev0 Dev24 Dev48

Dev1 Dev25 Dev49

… … …

: : :

2^13 Partitions

3 replicas

* 각 디바이스의 할당 개수는weight에 비례 디바이스 당 약 86*3

번씩 할당 ▷  증설에 따른 Ring 재 할당

•  2배 증설 가정 동일 weight 디바이스 (동일 크기 디스크) 96개 증설시,

•  전체 디바이스 관점에서, 기존 디바이스는 파티션 테이블에 과도하게 할당되었고, 신규 디바이스는 할당이 안된 상태

최종적으로 192개 dev가 43*3번씩 할당

* 전체 관점에서 1.5*2^13개 재 할당

▷  Rebalancing 규칙 1) 동일 weight device는 가능한 동일한 빈도로 할당 2) 데이터 보호를 위해서 한 파티션에 대해 replica 1개씩만 변경 * 한번에 최대 2^13개 재할당 가능 2배 증설 시 2회 나누어 rebalancing 수행 + replication

Page 36: JCO Conference OpenStack

Ring 구조 (2)

  Ring 이란? •  클러스터 환경에서 파일 위치를 찾는 테이블 •  Partitions * Replicas 개의 테이블, 미리 생성하고 클러스터 상에서 파일의 위치를 식별하기 위해 이용

* Cassandra의 ring처럼 둥글지는 않지만… hash값으로 노드/디바이스를 지정

•  링의 장/단점 •  장점: 정적 정보/파일로 구성되므로 링 자체를 백업하거나 관리하기 쉬움 •  단점: 링 정보가 실제 디스크 사용량과 무관 별도의 시스템 운영/관리 방안 필요 ex. 1) 가장 많이 사용된 디스크가 70~80% 이상이면 증설 + rebalancing

2) 증설 후 rebalancing 할 때 과도한 재할당이 일어나지 않도록 주의 필요

3) 증설할 수록 디바이스에 할당되는 partition 수가 줄어듦으로 초기 설계 주의

•  History of Ring, 일부 (http://swift.openstack.org/overview_ring.html) •  초기에는 동적 링 사용, Gossip 프로토콜로 변경된 정보 교환 오류 + 복구 어려움 •  링서버 구조 지연, Single point of failure, 실제로 링 정보가 자주 바뀌지 않음 •  링에 디바이스를 동적으로 할당 분산 저장 상태를 관리하기 어려움

Page 37: JCO Conference OpenStack

Related Info

▷  사이트 – http://swift.openstack.org •  swift 설치 및 administrator, developers guide 문서

▷  소스 코드: http://launchpad.net/swift •  버전업에 따라 업데이트, 현재: Swift-1.3.0 (Cactus)

•  Python 2.6, Ubuntu 10.04

•  xfs 파일 시스템 (xattr 파일 포맷)

•  Sqlite3 DB

▷  SAIO – Swift All-In-One •  단일 Virtual machine 에서 전체 시스템 구성

•  Debugging? eclipse + pydev plugin + pydevd.settrace()

▷  swift 최근 update 현황 (https://blueprints.launchpad.net/swift/diablo) •  속도 및 처리효율 개선

•  통계정보 보강

•  Multi-cluster 지원

•  S3 호환 API 개선 등

Page 38: JCO Conference OpenStack

Rackspace / Amazon 서비스 예시

▷  http://aws.amazon.com/solutions/case-studies/

▷  http://69.20.89.3/apps/backup_and_collaboration/online_file_storage/

Rackspace Cloudfiles   Email Hosting

  Email Archiving

  Email marketing

  File Sharing   Backup & Collaboration   Mobile applications

Amazon S3/EC2  Application Hosting  Backup and Storage  Content Delivery  E-Commerce  Media Hosting  On-Demand Workforce  Search Engines  Web Hosting

Page 39: JCO Conference OpenStack

Rackspace API 서비스 예시

▷  Rackspace CloudFiles API 활용을 통한 응용 예 •  각 응용 개발자들이, API 활용을 통한 응용 제공의 예

•  CyberDuck : 파일 전송 프로그램 •  Mobile App: 모바일 단말에서 파일 접근 (CDN) •  Plixi(Tweet Photo): 트위터 업로드 사진 저장

Page 40: JCO Conference OpenStack

KT ucloud storage

▷  KT 클라우드 스토리지 서비스 •  현재 오픈베타 진행 중

▷  cs.ucloud.com

•  cs: server •  ds: database service •  storage: storage service •  bs: backup service ...

Page 41: JCO Conference OpenStack

Swift API 기반 클라이언트 툴

▷  KT ucloud SS (Swift)와 연동 가능한 tools

도구 이름 설명 URL 연동 Cloud storage

Cyberduck Open source FTP, SFTP, WebDAV, Cloud Files, Google Docs & Amazon S3 Browser for Mac & Windows.

Cyberduck.ch Amazon S3 FTP, WebDav Google Docs Cloudfiles Window Azure Openstack Etc…

Gladinet Seamless access, aggregate, and backup to cloud storage

Gladinet.com Amazon S3 FTP, WebDav Google Docs Cloudfiles Internap Openstack Etc…

Cloudfuse Cloudfuse is a FUSE application which provides access to Rackspace's Cloud Files (or any installation of Swift).

ohloh.net/p/cloudfuse Cloudfiles Openstack(Swift)

Page 42: JCO Conference OpenStack

Swift API 기반 JAVA CLI client (1)

▷  JAVA와 ANT 설치

▷  소스 다운로드

•  https://github.com/rackspace/java-cloudfiles/archives/master

▷  프로퍼티 수정 •  설치폴더/cloudfiles.properties 수정

▷  ANT를 이용하여 빌드

version=v1 connection_timeout=5000 # Auth info auth_url=https://ssproxy.ucloud.com/auth/v1.0 auth_token_name=X-Auth-Token auth_user_header=X-Storage-User auth_pass_header=X-Storage-Pass

Page 43: JCO Conference OpenStack

Swift API 기반 JAVA CLI client (2)

▷  Windows 사용자용 스크립트 생성

▷  Linux, MAC 사용자용 스크립트 생성

▷  스크립트 실행 •  username에 사용 로그인 이메일 계정 입력 •  password에 API KEY 입력 (cs.ucloud.com 에서 확인 가능) •  account 정보는 Enter로 패스 •  이후 정보는 help command로 확인 가능

@echo off java -cp lib/commons-cli-1.1.jar;lib/httpcore-4.1.jar;lib/httpclient-4.0.3.jar;lib/commons-lang-2.4.jar;lib/junit.jar;lib/commons-codec-1.3.jar;lib/commons-io-1.4.jar;lib/commons-logging-1.1.1.jar;lib/log4j-1.2.15.jar;dist/java-cloudfiles.jar;.;classes; com.rackspacecloud.client.cloudfiles.sample.FilesCli pause

#!/bin/sh export CLASSPATH=lib/commons-cli-1.1.jar:lib/httpcore-4.1.jar:lib/httpclient-4.0.3.jar:lib/commons-lang-2.4.jar:lib/junit.jar:lib/commons-codec-1.3.jar:lib/commons-io-1.4.jar:lib/commons-logging-1.1.1.jar:lib/log4j-1.2.15.jar:dist/java-cloudfiles.jar:. java com.rackspacecloud.client.cloudfiles.sample.FilesCli

Page 44: JCO Conference OpenStack

Swift API 기반 JAVA CLI client (3)

▷  사용 가능 COMMAND •  get List the containers for this account •  get container List the contents of the given container •  get container/object destination Download the given object and store it at the destination •  head Get information about this account •  head container Get the container's information •  head container/object Get the objects's information and metadata •  put container Create the given container •  put container localfile Upload the local file to the container •  delete container Delete the container •  delete container/object Delete the given object •  help Print this help message •  exit Exit the program

Page 45: JCO Conference OpenStack

Swift API

종류 API 설명

Account and Authentication GET account GET accounts list PUT account DELETE account GET user GET users list PUT user DELETE user

Account 생성, 조회, 삭제 User 생성, 조회, 삭제 사용자 인증처리 (token, storage url) * 권한에 따라 사용 가능한 API 제한

Storage account service GET Storage account HEAD Storage account POST Storage account

Container 리스트, 수량 조회 Account 전체 사용량 조회 Account metadata 추가

Storage container service HEAD Storage container GET Storage container PUT Storage container DELETE Storage container POST Storage container : user metadata POST Storage container : ACL

Object 리스트, 수량 조회 Container 전체 사용량 조회 Container 생성, 삭제 Container metadata 추가 Container ACL설정

Storage object service HEAD Storage object GET Storage object PUT Storage object Chunked Transfer Encoding Copy Object POST Storage object DELETE Storage object

Object 정보조회 Object 업로드 및 다운로드 Object copy Object 삭제 Object metadata 추가

Page 46: JCO Conference OpenStack

OpenStack Image Service (Glance) 개요

▷  OpenStack이미지 서비스는 가상 디스크 이미지의 등록, 검색, 전달, 사용이 가능토록 하는 서비스.

▷  다양한 백엔드 저장소에 저장되어 있는 가상 디스크 이미지에 대한 정보를 query할 수 있는 Standard REST API제공

▷  Swift를 비롯한 다양한 스토리지를 백엔드 스토리지로 활용 가능

▷  다양한 포맷의 가상 이미지들을 upload가능 •  RawMachine (kernel/ramdisk outside of imge, a.k.a. AMI) •  VHD (Hyper-V) •  VDI (VirtualBox) •  Qcow2 (QEMU/KVM) •  VMDK (VMWare) •  OVF

Page 47: JCO Conference OpenStack

OpenStack 커뮤니티는?

‣  OpenStack 원 커뮤니티http://www.openstack.org

‣  OpenStack 한국 커뮤니티http://www.openstack.or.kr

Page 48: JCO Conference OpenStack

(부록) www.jclouds.org (multi-cloud library)

▷  jclouds 는 개발자들이 다양한 클라우드를 활용하고, �자바 개발 skill들을 재 사용 가능토록 하는 오픈소스 라이브러리이다.

▷  jclouds API는 Amazon, GoGrid, Microsoft Azure, vCloud, Rackspace, OpenStack등의 다양한 클라우드 환경을 지원하며, �개발자들이 각각 서비스들의 복잡한 API구성과는 상관없이, �자유롭게 클라우드 고유의 기능들을 자유롭게 사용할 수 있도록 함.

▷  (간단한 활용사례) How to change cloud providers without restarting your JVM: http://www.youtube.com/watch?v=SJ7sm3lhKnw

▷  Quick Start OpenStack: http://code.google.com/p/jclouds/wiki/QuickStartOpenStack

Page 49: JCO Conference OpenStack

(부록) www.jclouds.org (multi-cloud library)

Page 50: JCO Conference OpenStack

질문?

Openstack 한국그룹: www.openstack.or.kr

Facebook OpenStack Korea Group

트위터: @songerie

이메일: [email protected]

Page 51: JCO Conference OpenStack