openstack swift overview

31
swift openstack object-storage 이어형

Upload: -

Post on 10-May-2015

1.711 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Openstack Swift overview

swiftopenstack object-storage

이어형

Page 2: Openstack Swift overview

Index• What is Swift?

• Swift Components

• Install and Configuration

• Using Swift

• Manage Account, Container, Object

• CLI commands and Rest API

Page 3: Openstack Swift overview

What is Swift? openstack object storage

!

• 비정형성 데이터를 저장하기에 적합

• 멀티미디어(동영상,이미지), 디스크이미지, …

!

• 각각의 오브젝트들은 고유한 URL을 갖고 API로 제어

• 외부 어플리케이션, 웹 등에서 직접 동시에 접근 가능

!

• 멀티 테넌트로 구현가능하며 저장공간에 제약이 없음

• 계정마다 저장공간을 할당받는 것이 아닌 모든 저장 공간을 같이 씀

A

BC

A B

C

file://xxx… http://swift…

Page 4: Openstack Swift overview

What is Swift? File vs Block vs Object Storage

File Storage

Block Storage

Object Storage

단위 파일 블록 오브젝트(파일+메타데이터)

프로토콜 NFS,CIFS,… SCSI,SATA,… HTTP(REST,SOAP)

장점 간편한 사용 고성능 확장성

단점 데이터 센터간 확장에 취약

데이터 센터간 확장에 취약

자주 변경되는 데이터 관리에 취약

적합한 분야 파일 공유 정형 데이터 관리(ex. 데이터베이스) 비정형 데이터 관리

Page 5: Openstack Swift overview

What is Swift? strength of swift

!• 확장성

• 페타규모의 클러스터로 확장가능하며 확장시에도 downtime이 없이 간단하게 확장가능

• 내구성

• 복제본은 격리된 환경(Zone)으로 관리하여 안전하게 보관

• 가용성

• 비공유 구조(shared-nothing)로 단일 장애점(single point of failure)이 없기 때문에 높은 가용성 보유

• 저비용

• 하드웨어 선택에 특정한 벤더 lock-in이 되지 않았으며 opensource를 사용하여 적은 비용에 구축가능

Page 6: Openstack Swift overview

Swift Components service architecture

request capacity

request capacity

s

torage capacity

s

torage capacity

s

torage capacity

s

torage capacity

s

torage capacity

Internet

ZONE #1

ZONE #2

ZONE #3

ZONE #4

ZONE #5

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Proxy Servers

Page 7: Openstack Swift overview

Swift Components proxy server

!• 사용자의 URL Request를 받아서 Account, Container, Object Server(줄여서 Storage Server)중 한 곳을 선택

• account request의 url: http://…/account

• container request의 url: http://…/account/container

• object request의 url: http://…/account/container/object

• 이 후 해당 Request가 어떤 물리적인 서버에서 처리해야 할지Ring을 이용해서 결정 후 Storage Server로 request

Internet

ZONE #1

ZONE #2

ZONE #3

ZONE #4

ZONE #5

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Proxy Servers

ring

Page 8: Openstack Swift overview

Swift Components storage server

• 3종류의 데이터를 각각(Account, Container, Object)의 서버가 관리하며동일한 로직으로 Ring에서 접근됨 (아래의 데이터는 모두 파일임)

• Account 데이터(File Database)

• Account의 상태정보

• Container의 리스트

• Container 데이터(File Database)

• Container의 상태정보

• Object의 리스트

• Object 데이터(File)

• 실질적인 오브젝트 파일

Internet

ZONE #1

ZONE #2

ZONE #3

ZONE #4

ZONE #5

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Proxy Servers

ring

Page 9: Openstack Swift overview

Swift Components logical view

• Account

• 사용자의 계정으로 다수의 사용자들이 권한(ACL)에 따라 사용을 정의가능 함

• Account의 상태 정보를 저장

• Container의 리스트를 관리

• Container

• 사용자들의 권한(ACL)에 따라 사용가능이 결정되는 폴더와 같은 단위

• Container의 상태 정보를 저장

• Object의 리스트를 관리

• Object

• 실질적으로 관리되는 파일(+메타데이터)

• Container의 ACL에 적용되어 사용 가능 여부 결정

CAB

Account

Container ContainerCA B

사용가능 사용가능

Object Object Object Object

FILEMETA

FILEMETA

FILEMETA

FILEMETA

Page 10: Openstack Swift overview

Swift Components daemon

• replicator

• 데이터(File Database, File)를 복제해주기 위한 데몬

• 데이터 잘못되었을 경우 혹은 Ring의 변경으로 인한 이동시 수행

• updater

• object가 추가,삭제시 이를 container list에서 변경될 수 있도록 처리 해야 하나 만약 문제시 이를 나중에 다시 처리 해줌(eventually consistency)

• object가 추가된 것에 따라 전체 account가 가진 file size total값을 갱신해 줌

• auditor

• 파일의 무결성을 검사

• object-expirer

• object가 특정 시간 이후 삭제시 이를 돕기 위한 데몬

• 그 외도 많은 daemon들 …

Page 11: Openstack Swift overview

Swift Components logical hierarchy

• object

• 실제 파일과 메타데이터로서 파티션에 담겨서 복제 됨

• partition

• partition은 복제와 균등분배를 위한 단위

• partition은 수십만,수천만 생성해야 함으로 디렉토리가 적합

• device

• device는 증설 혹은 제거를 위한 단위

• device는 증설/제거를 위한 단위로 생각했을때 디스크가 적합

• zone

• zone은 데이터를 안전하게 보관하기 위한 단위(같은 데이터의 복제본는 다른 zone에 저장되어야 함)

• zone은 랙(스위치 단위), 서버가 적합 ZONE

DEVIC

E

PARTIT

ION

OBJEC

T TEXT

HTML

IMAGE MOVIE

AUDIO

Page 12: Openstack Swift overview

Internet

ZONE #2

ZONE #3

ZONE #4

ZONE #5

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Account, Container, O

bject Servers

Proxy Servers

ring

ZONE

DEVICE

PARTITION

OBJECT

HTML

ringring

Partition index: 3

Zone : #1

Server : A

Disk : B

1 2 3 4

2^n. . .

...

Swift Components ring

• swift의 분산의 핵심

• static한 파일 데이터로 모든 서버에서 동일한 파일을 사용

• Account, Container, Object 마다 따로 다른 ring으로 관리(Account, Container Database도 File Database이기 때문에 Object와 비슷하게 File로 관리되어 모든 메카니즘이 비슷하게 작동)

• 모든 Account, Container, Object는 다른 URL을 가지고 있기 때문에 해당 고유한 URL을 Hash 하여 그 값을 이용(분산 해쉬 테이블 DHT)

• 자세한 설명은 아래 링크를 참조

• http://leoh0.blogspot.kr/2014/04/ring-swift.htmlZone #1

Server A

A

B

3

Disk B

Partition 3

URL Hash

URL Hash & mod -> partition Index

Page 13: Openstack Swift overview

Install and Configuration• 정식 swift all in one 버전 설치 가이드

• http://docs.openstack.org/developer/swift/development_saio.html

• 해당 내용을 기본적인 기능만 작동할 수 있도록 정리한 스크립트 (ubuntu 14.04에서 테스트)

• https://gist.github.com/leoh0/893ab4de7f4c05940cc2

Page 14: Openstack Swift overview

Install and Configuration add user(option)

Page 15: Openstack Swift overview

Install and Configuration Installing dependencies

Page 16: Openstack Swift overview

Install and Configuration Using a loopback device for storage

Page 17: Openstack Swift overview

Install and Configuration Common post device setup

Page 18: Openstack Swift overview

Install and Configuration Getting the code

Page 19: Openstack Swift overview

Install and Configuration Setting up rsync

Page 20: Openstack Swift overview

Install and Configuration Configuring each node

Page 21: Openstack Swift overview

Install and Configuration Setting up scripts for running swift

Page 22: Openstack Swift overview

Install and Configuration setup environment variable for cli

Page 23: Openstack Swift overview

Using Swift with CLI commands Account API

• 계정 정보 조회

• CLI commands:

• swift stat

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test -X HEAD -H "X-Auth-Token:<TOKEN>"

• 컨테이너 리스트 조회

• CLI commands:

• swift list

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test -X GET -H "X-Auth-Token: <TOKEN>"

Page 24: Openstack Swift overview

Using Swift with CLI commands Container API

• 컨테이너 생성

• CLI commands:

• swift post <container>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container -X PUT -H "Content-Length: 0" -H "X-Auth-Token:<TOKEN>"

• 컨테이너 상세 조회

• CLI commands:

• swift stat <container>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container -X HEAD -H "X-Auth-Token: <TOKEN>"

Page 25: Openstack Swift overview

Using Swift with CLI commands Container API

• 오브젝트 리스트 보기

• CLI commands:

• swift list <container>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container -X GET -H "X-Auth-Token:<TOKEN>"

• 컨테이너 삭제

• CLI commands:

• swift delete <container>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container -X DELETE -H "X-Auth-Token:<TOKEN>"

Page 26: Openstack Swift overview

Using Swift with CLI commands Container API

• 컨테이너 메타데이터 업데이트

• CLI commands:

• swift post <container> -m <meta>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container -X POST -H "X-Auth-Token:<TOKEN>" -H "<META>"

Page 27: Openstack Swift overview

Using Swift with CLI commands Object API

• 오브젝트 업로드

• CLI commands:

• swift upload <container> <object>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container/object -X PUT -H "X-Auth-Token:<TOKEN>"

• 오브젝트 상세 보기

• CLI commands:

• swift stat <container> <object>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container/object -X HEAD -H "X-Auth-Token:<TOKEN>"

Page 28: Openstack Swift overview

Using Swift with CLI commands Object API

• 오브젝트 다운로드

• CLI commands:

• swift download <container> <object>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container/object -X GET -H "X-Auth-Token:<TOKEN>"

• 오브젝트 삭제

• CLI commands:

• swift delete <container> <object>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container/object -X DELETE -H "X-Auth-Token:<TOKEN>"

Page 29: Openstack Swift overview

Using Swift with CLI commands Object API

• 오브젝트 메타데이터 업데이트

• CLI commands:

• swift post <container> <object> -m <meta>

• REST API:

• curl -i http://127.0.0.1:8080/v1/AUTH_test/container/object -X POST -H "X-Auth-Token:<TOKEN>" -H "<META>"

Page 30: Openstack Swift overview

–Jonathan Swift

‘날마다 그대의 삶을 살 수 있기를.’

Page 31: Openstack Swift overview

감사합니다.