- OpenStack 개요
- OpenStack Architecture
- History
- Nova 개요
- Swift 개요
- Glance 개요
- OpenStack 설치
- CentOS에서 OpenStack 설치
- Ubuntu에서 OpenStack 설치
- 관리자 가이드
- keystone 관리자 가이드
- glance 관리자 가이드
- Swift 구성 요소 및 설치
- Swift 구성 요소
- Ubuntu에서 Swift 설치
- Heat
- 참고 문헌
[http://nova.openstack.org/ Cloud compute(Nova)]과 Cloud Object Storage(Swift)를 제공하는 OpenStack을 정리한다.
홈페이지 : http://www.openstack.org/, stephen.spector(골뱅이)openstack.org
매뉴얼 : http://docs.openstack.org/, http://docs.openstack.org/developer
OpenStack 한국 커뮤니티, 2010.12.28 한국 커뮤니티 사이트 오픈
다운로드 : [http://git.openstack.org/ http://git.openstack.org/], [https://github.com/openstack](https://github.com/openstack)
라이선스 : Apache 2.0
플랫폼 : python
OpenStack 개요
OpenStack Architecture
History
OpenStack은 Rackspace에서 Cloud Files과 Cloud Server 기술을 기증하고 NASA에서 Nebula를 기증하여 2010년 7월부터 시작된 오픈소스로 기업의 데이터와 애플리케이션을 하나의 클라우드에서 다른 클라우드로 더 쉽게 이전할 수 있도록 하는 것을 목표로 하고 있다. OpenStack은 Xen, KVM, QEMU 등을 지원하고 있다.
OpenStack History
2010.03 : Rackspace가 자사의 클라우드 스토리지를 오픈소스화 (IaaS 분야 2위 사업자)
2010.05 : NASA가 Nebula 플랫폼을 오픈소스화 (Nebula. 서버 가상화 플랫폼)
2010.06 : Rackspace와 NASA가 OpenStack 설립
2010.10 : Austin release
2011.02 : Bexar release, 35 이상의 파트너
2011.02 : OpenStack 한국 커뮤니티 구축 <- KT (OpenStack 공식 파트너) 지원
2011.04 : Cactus release
KT : 2011.3 ~ 2011.6, OpenStack Object Storage 기반 크라우드 스토리지 서비스 상용화 (ucloud SS)
2011.07 : Diablo release
2014.10.16 : Juno release
OpenStack 버전 : Essex (2012.4.5) -> Folsom (2012.9.27) -> Grizzly (2013.4.4) -> Havana (2013.10.17) -> IceHouse (2014.4.17, 9번째 release) -> Juno (2014.10.16) -> Kilo (2015.04.30) -> Liberity (2015.10)
Nova 개요
Nova는 Cloud Computing에서 서버상의 가상 머신을 운용, 관리하기 위한 소프트웨어로 호스트 머신의 가상화 메카니즘을 구동하기 위한 드라이버를 정의하고 웹을 통해 서비스를 제공 한다.
Nova : OpenStack Compute
REST-based API 제공
Amazon EC2 호환 API 및 자체 API 제공
지원하는 가상 머신
KVM, Xen, XenServer, UML, Hyper-V, QEMU
Ubuntu 10.04, Python 2.6 / MySQL, PostgreSQL, SQLite
Nova Software 구조
API Server : 명령/제어 요청을 받음, HTTP
Scheduler Node : 요청된 리소스를 제공할 노드 선택 및 VM 관리 지시 (Round-Robin, Random 방식 지원)
Object Storage Server : 이미지나 템플릿 저장을 위한 스토리지 제공
Compute Node : VM 관리
Network Node : Network 관리 (Flat, Flat DHCP, VLAN 모드 지원)
Flat : VM에 고정 IP 할당
Flat DHCP : VM에 DHCP에서 제공된 IP 할당
VLAN DHCP : Default, 각 프로젝트의 VM에 VPN (OpenVPN) 제공
Volume Node : Disk 관리
http://www.openstack.or.kr/wiki/images/a/a2/Untitled1.jpg
출처 : [Nova 개념 및 소개](http://www.openstack.or.kr/wiki/index.php/Nova_%EA%B0%9C%EB%85%90_%EB%B0%8F_%EC%86%8C%EA%B0%9C)
Swift 개요
대표적인 클라우드 스토리지 서비스 업체인 Rackspace의 핵심 기술을 오픈소스화하여 Amazon의 S3 서비스와 유사한 오브젝트 스토리지 서비스를 제공한다.
Swift : OpenStack Object Storage
Highly available, distributed, eventually consistent object/blob-store
REST-based API 제공
Authentication API
Storage Account/Container/Object API
GET, PUT, DELETE, COPY 등의 서비스 제공
Swift 구조
Auth middle : 사용자 생성 및 로그인, 인증 토큰을 생성하고 관리
Proxy Server : 사용자의 요청에 따라 알맞은 서버에 연결하여 서비스 제공
Account Server : 사용자 계정 관리 및 계정별 컨테이너 조회
Container Server : 사용자 계정의 컨테이너를 관리, 컨테이너가 가진 오브젝트를 조회
Object Server : 컨테이너 내의 오프젝트(Blob)를 관리
사용 문법 : [http://swift.test.com/v1/account/container/object](http://swift.test.com/v1/account/container/object)
Account : [http://swift.test.com/v1/AUTH_474747](http://swift.test.com/v1/AUTH_474747) (474747은 token을 의미함)
Container : [http://swift.test.com/v1/AUTH_474747/TESTCONTAINER](http://swift.test.com/v1/AUTH_474747/TESTCONTAINER)
Object : [http://swift.test.com/v1/AUTH_474747/TESTCONTAINER/TESTFILE.txt](http://swift.test.com/v1/AUTH_474747/TESTCONTAINER/TESTFILE.txt)
http://docs.openstack.org/openstack-object-storage/admin/content/figures/swift_install_arch.png
Ring : 데이터의 논리적 위치와 물리적 위치간의 매핑 정보 제공
Proxy server에서만 접근
종류 : Account ring, Container ring, Object ring
ID, Zone number, IP, Port, Device Name, Weight, Meta
Replication : Zone을 사용하여 replication 처리 가능
Updaters : 실패한 작업(update)를 저장하고 다시 실행
Auditors : account, container, object의 무결성을 검사하고 이상 발생시 replication으로 대체
Glance 개요
Glance : OpenStack Imaging Service
Virtual machine 이미지를 관리하는 서비스로 저장소로 Open Stack Object Store 또는 Amazon S3를 이용 한다.
OpenStack 설치
CentOS에서 OpenStack 설치
[OpenStack 설치 - CentOS](OpenStack 설치 - CentOS.md)
Ubuntu에서 OpenStack 설치
[OpenStack 설치 - Ubuntu](OpenStack 설치 - Ubuntu.md)
관리자 가이드
keystone 관리자 가이드
Keystone 설정 스크립트 샘플
주요 concepts
Users, Tenants, Roles
Services, Endpoints
Folder
/etc/keystone/
keystone.conf, policy.json, default_catalog.templates, logging.conf
/var/lib/keystone/
/var/log/keystone/keystone.log
/usr/bin/keystone, keystone-manage, keystone-all
User 생성
keystone user-create --name=alice --pass=~ --email=~
keystone user-list
Tenant 생성
keystone tenant-create --name=~
keystone tenant-list
Role 생성
keystone role-create --name=~
keystone role-list
vi /etc/keystone/policy.json
vi /etc/nova/policy.json
{
"권한" : ["role:~"], ["user_id":~]("role:~"],_["user_id":~.md), //--- 권한을 role과 user에 할당
}
vi /etc/glance/policy.json
User를 tenant와 role에 할당
keystone user-role-add --user-id=~ --role-id=~ --tenant-id=~
/etc/$serviceCodeName/policy.json 파일에 퍼미션 설정 저장
vi /etc/keystone/policy.json
vi /etc/glance/policy.json
keystone 서비스 생성
keystone --token --endpoint [http://192.~/v2.0/](http://192.~/v2.0/) service-create -name=keystone --type=identity --description="~"
keystone --token --endpoint [http://192.~/v2.0/ http://192.~/v2.0/] endpoint-create --region RegionOne --service_id=~ --publicurl=[http://~:5000/v2.0 http://~:5000/v2.0] --internalurl=[http://~:5000/v2.0 http://~:5000/v2.0] --adminurl=[http://~:35357/v2.0](http://~:35357/v2.0)
다른 서비스에 접속 가능한 token 생성
keystone -os-username=admin --os-password=~ --os-auth-url=[http://~:35357/v2.0](http://~:35357/v2.0) token-get
openstack-db
glance 관리자 가이드
Folder
/etc/glance
/var/lib/glance
/var/log/glance/api.log, registry.log
/usr/bin/glance, glance-api, glance-registry, glance-manage, ...
이미지 업로드
format : aki (커널), ari (램디스크), ami (이미지)
glance --os_username=adminUser --os_password=~ --os_tenant=~ --os_auth_url=[http://~:50000/v2.0](http://~:50000/v2.0) add name="aName" disk_format=aki container_format=aki < fileName
glance --os_username=adminUser --os_password=~ os_tenant=~ --os_auth_url=[http://~:50000/v2.0](http://~:50000/v2.0) index
Swift 구성 요소 및 설치
Swift 구성 요소
Account -> Container -> Object
Container
Storage compartment
"/"가 포함되지 않은 문자열로 URLEncoding 후 256 bytes 이하
Object
Basic storage entity
Object name : URLEncoding 후 1024 bytes 이하
key/value : 90개 이내, 총 4096 bytes 이하
Storage object : 0 byte ~ 5 GB
Segmented Objects : 몇개의 Object를 하나의 Object 처럼 처리 (5GB 이상 다운로드 가능)
Open API
Rest web service API
Python 2.4+
PHP 5.x /w cURL, FileInfo, mbstring
Java 1.5+
Ruby 1.8+
C#/.NET /w .NET Framework 3.5
curl -H 'X-Auth-Token: ' [http://](http://)/container/myobject
Ubuntu에서 Swift 설치
System 요구 사항
Disk : [RAID 5 or 6](Storage.md#RAID 구성.md)
Ubuntu Server 10.04 LTS, 1GB Network, SQLite
Swift 설치
apt-get install python-software-properties
add-apt-repository ppa:swift-core/ppa
apt-get update
apt-get install swift openssh-server
mkdir -p /etc/swift
chown -R swift:swift /etc/swift/
vi /etc/swift/swift.conf
[swift-hash](swift-hash.md)
swift_hash_path_suffix = Swift_서버_ID //--- 절대 변하지 않을 임의의 문자열로 아이디 지정
Swift Proxy Node 설치
apt-get install swift-proxy memcached
vi /etc/memcached.conf
-l 127.0.0.1 //--- 이 부분을 아래와 같이 변경
-l PROXY_LOCAL_NET_IP //--- 사설 IP 설정
service memcached restart
cd /etc/swift
openssl req -new -x509 -nodes -out cert.crt -keyout cert.key
vi /etc/swift/proxy-server.conf
[DEFAULT](DEFAULT.md)
cert_file = /etc/swift/cert.crt
key_file = /etc/swift/cert.key
bind_port = 8080
workers = 8
user = swift
[pipeline:main](pipeline:main.md)
pipeline = healthcheck cache auth proxy-server
[app:proxy-server](app:proxy-server.md)
use = egg:swift#proxy
allow_account_management = true
[filter:auth](filter:auth.md)
use = egg:swift#auth
ssl = true
[filter:healthcheck](filter:healthcheck.md)
use = egg:swift#healthcheck
[filter:cache](filter:cache.md)
use = egg:swift#memcache
memcache_servers = :11211
###--- 10.1.2.3:11211,10.1.2.4:11211
cd /etc/swift
swift-ring-builder account.builder create 18 3 1
swift-ring-builder container.builder create 18 3 1
swift-ring-builder object.builder create 18 3 1
swift-ring-builder account.builder add z-:6002/ 100
swift-ring-builder container.builder add z-:6001/ 100
swift-ring-builder object.builder add z-:6000/ 100
swift-ring-builder account.builder
swift-ring-builder container.builder
swift-ring-builder object.builder
swift-ring-builder account.builder rebalance
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder rebalance
//--- account.ring.gz, container.ring.gz, and object.ring.gz을 /etc/swift/에 있는 Proxy and Storage nodes로 복사
chown -R swift:swift /etc/swift
swift-init proxy start
Swift Auth Node 설치
apt-get install swift-auth
vi /etc/swift/auth-server.conf
[DEFAULT](DEFAULT.md)
cert_file = /etc/swift/cert.crt
key_file = /etc/swift/cert.key
user = swift
[pipeline:main](pipeline:main.md)
pipeline = auth-server
[app:auth-server](app:auth-server.md)
use = egg:swift#auth
default_cluster_url = [https://](https://):8080/v1
super_admin_key = devauth //--- devauth는 다른 것으로 변경할 것
swift-init auth start
chown swift:swift /etc/swift/auth.db
swift-init auth restart
Swift Storage Node 설치
apt-get install swift-account swift-container swift-object xfsprogs
fdisk /dev/sdb (set up a single partition)
mkfs.xfs -i size=1024 /dev/sdb1
echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab
mkdir -p /srv/node/sdb1
mount /srv/node/sdb1
chown -R swift:swift /srv/node
vi /etc/rsyncd.conf
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address =
[account](account.md)
max connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/account.lock
[container](container.md)
max connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/container.lock
[object](object.md)
max connections = 2
path = /srv/node/
read only = false
lock file = /var/lock/object.lock
vi /etc/default/rsync
RSYNC_ENABLE = true
service rsync start
vi /etc/swift/account-server.conf
[DEFAULT](DEFAULT.md)
bind_ip =
workers = 2
[pipeline:main](pipeline:main.md)
pipeline = account-server
[app:account-server](app:account-server.md)
use = egg:swift#account
[account-replicator](account-replicator.md)
[account-auditor](account-auditor.md)
[account-reaper](account-reaper.md)
vi /etc/swift/container-server.conf
[DEFAULT](DEFAULT.md)
bind_ip =
workers = 2
[pipeline:main](pipeline:main.md)
pipeline = container-server
[app:container-server](app:container-server.md)
use = egg:swift#container
[container-replicator](container-replicator.md)
[container-updater](container-updater.md)
[container-auditor](container-auditor.md)
vi /etc/swift/object-server.conf
[DEFAULT](DEFAULT.md)
bind_ip =
workers = 2
[pipeline:main](pipeline:main.md)
pipeline = object-server
[app:object-server](app:object-server.md)
use = egg:swift#object
[object-replicator](object-replicator.md)
[object-updater](object-updater.md)
[object-auditor](object-auditor.md)
swift-init object-server start
swift-init object-replicator start
swift-init object-updater start
swift-init object-auditor start
swift-init container-server start
swift-init container-replicator start
swift-init container-updater start
swift-init container-auditor start
swift-init account-server start
swift-init account-replicator start
swift-init account-auditor start
관리자 계정 생성
swift-auth-add-user -K devauth -a system root testpass
curl -k -v -H 'X-Storage-User: system:root' -H 'X-Storage-Pass: testpass' [https://](https://):11000/v1.0
curl -k -v -H 'X-Auth-Token: '
st -A [https://](https://):11000/v1.0 -U system:root -K testpass stat
st -A [https://](https://):11000/v1.0 -U system:root -K testpass upload myfiles bigfile1.tgz
st -A [https://](https://):11000/v1.0 -U system:root -K testpass upload myfiles bigfile2.tgz
st -A [https://](https://):11000/v1.0 -U system:root -K testpass download myfiles
Heat
참고 문헌
참고 문헌
오픈스택
*오픈스택 : 설치편 - Ubuntu 14.04에 Nova-Network 환경 OpenStack Icehouse 설치하기
[http://docs.openstack.org/ OpenStack Document], Grizzly Document
Installing OpenStack
Running OpenStack
Developing OpenStack
Command Line Interface(CLI)
API
Glossary
OpenStack Operations Guide
OpenStack Manuals : Administration Guides
OpenStack 설치 참고 문헌
KT에서 Swift 상용 서비스 추진중
블로터닷넷
공개SW 활용 성공사례 3: SK C&C ‘마이클라우드’, 공개SW 기반 클라우드 인프라 구현, 2011.08
http://www.zdnet.co.kr/news/news_view.asp?artice_id=20141017095319
http://pds26.egloos.com/pds/201407/18/69/DeepDive_Openstack_02.pdf
http://kcsa.or.kr/archives/4806
[[Category:오픈소스|Category:오픈소스]]
[[Category:Cloud|Category:Cloud]]
분류: OpenStack