OpenStack 문서 원본 보기
←
OpenStack
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
[http://nova.openstack.org/ Cloud compute(Nova)]과 [http://swift.openstack.org/ Cloud Object Storage(Swift)]를 제공하는 OpenStack을 정리한다. *홈페이지 : [http://www.openstack.org/ http://www.openstack.org/], stephen.spector(골뱅이)openstack.org :*매뉴얼 : [http://docs.openstack.org/ http://docs.openstack.org/], http://docs.openstack.org/developer :*[http://openstack.org/blog Openstack Blog] :*[http://openstack.or.kr/ OpenStack 한국 커뮤니티], 2010.12.28 한국 커뮤니티 사이트 오픈 :*[http://wiki.openstack.or.kr/index.php/OpenStack 한국 커뮤니티 위키] :*[http://groups.google.com/group/kosco Korea OpenStack Community] *다운로드 : [http://git.openstack.org/ http://git.openstack.org/], [https://github.com/openstack https://github.com/openstack] *라이선스 : Apache 2.0 *플랫폼 : [[Python|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 :**[https://wiki.openstack.org/wiki/ReleaseNotes/Juno/ko https://wiki.openstack.org/wiki/ReleaseNotes/Juno/ko] *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 :*소스 : [https://launchpad.net/nova https://launchpad.net/nova] *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 ::출처 : [http://www.openstack.or.kr/wiki/index.php/Nova_%EA%B0%9C%EB%85%90_%EB%B0%8F_%EC%86%8C%EA%B0%9C Nova 개념 및 소개] === 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]] === Ubuntu에서 OpenStack 설치 === [[OpenStack 설치 - Ubuntu|OpenStack 설치 - Ubuntu]] == 관리자 가이드 == === keystone 관리자 가이드 === *Keystone 설정 스크립트 샘플 :*[https://github.com/openstack/keystone/blob/master/tools/sample_data.sh https://github.com/openstack/keystone/blob/master/tools/sample_data.sh] *주요 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에 할당 } :*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: <token>' [http:// http://]<storage_url>/container/myobject === Ubuntu에서 Swift 설치 === *System 요구 사항 :*Disk : [[Storage#RAID 구성|RAID 5 or 6]] :*Ubuntu Server 10.04 LTS, 1GB Network, [[SQLite|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_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] cert_file = /etc/swift/cert.crt key_file = /etc/swift/cert.key bind_port = 8080 workers = 8 user = swift [pipeline:main] pipeline = healthcheck cache auth proxy-server [app:proxy-server] use = egg:swift#proxy allow_account_management = true [filter:auth] use = egg:swift#auth ssl = true [filter:healthcheck] use = egg:swift#healthcheck [filter:cache] use = egg:swift#memcache memcache_servers = <PROXY_LOCAL_NET_IP>: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<ZONE>-<STORAGE_LOCAL_NET_IP>:6002/<DEVICE> 100 swift-ring-builder container.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP_1>:6001/<DEVICE> 100 swift-ring-builder object.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP_1>:6000/<DEVICE> 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] cert_file = /etc/swift/cert.crt key_file = /etc/swift/cert.key user = swift [pipeline:main] pipeline = auth-server [app:auth-server] use = egg:swift#auth default_cluster_url = [https:// https://]<PROXY_HOSTNAME>: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 = <STORAGE_LOCAL_NET_IP> [account] max connections = 2 path = /srv/node/ read only = false lock file = /var/lock/account.lock [container] max connections = 2 path = /srv/node/ read only = false lock file = /var/lock/container.lock [object] 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] bind_ip = <STORAGE_LOCAL_NET_IP> workers = 2 [pipeline:main] pipeline = account-server [app:account-server] use = egg:swift#account [account-replicator] [account-auditor] [account-reaper] vi /etc/swift/container-server.conf [DEFAULT] bind_ip = <STORAGE_LOCAL_NET_IP> workers = 2 [pipeline:main] pipeline = container-server [app:container-server] use = egg:swift#container [container-replicator] [container-updater] [container-auditor] vi /etc/swift/object-server.conf [DEFAULT] bind_ip = <STORAGE_LOCAL_NET_IP> workers = 2 [pipeline:main] pipeline = object-server [app:object-server] use = egg:swift#object [object-replicator] [object-updater] [object-auditor] 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://]<AUTH_HOSTNAME>:11000/v1.0 curl -k -v -H 'X-Auth-Token: <token-from-x-auth-token-above>' <url-from-x-storage-url-above> st -A [https:// https://]<AUTH_HOSTNAME>:11000/v1.0 -U system:root -K testpass stat st -A [https:// https://]<AUTH_HOSTNAME>:11000/v1.0 -U system:root -K testpass upload myfiles bigfile1.tgz st -A [https:// https://]<AUTH_HOSTNAME>:11000/v1.0 -U system:root -K testpass upload myfiles bigfile2.tgz st -A [https:// https://]<AUTH_HOSTNAME>:11000/v1.0 -U system:root -K testpass download myfiles == Heat == 참고 문헌 *http://www.slideshare.net/corestack/orchestration-across-multiple-cloud-platforms-using-heat == 참고 문헌 == *오픈스택 **[http://blog.naver.com/love_tolty/220231856481 오픈스택 : 이론편 - 오픈스택이란 무엇인가?] **[http://blog.naver.com/PostThumbnailView.nhn?blogId=love_tolty&logNo=220237750951&categoryNo=21&parentCategoryNo= 오픈스택 - OpenStack Network 완전정복 (Neutron과 Nova-Network)] **[http://blog.naver.com/PostThumbnailView.nhn?blogId=love_tolty&logNo=220239198961&categoryNo=21&parentCategoryNo= 오픈스택 - IP와 Subnet 정리] **[http://blog.naver.com/PostThumbnailView.nhn?blogId=love_tolty&logNo=220239364180&categoryNo=21&parentCategoryNo= 오픈스택 - Floating IP와 Fixed IP] **[http://blog.naver.com/PostThumbnailView.nhn?blogId=love_tolty&logNo=220312783624&categoryNo=21&parentCategoryNo= 오픈스택 : 설치편 - Ubuntu 14.04에 Nova-Network 환경 OpenStack Icehouse 설치하기] **[http://blog.naver.com/PostThumbnailView.nhn?blogId=love_tolty&logNo=220352681395&categoryNo=21&parentCategoryNo= 오픈스택 : 활용편 - 실제 인스턴스 생성 및 Nova-Network를 이용한 네트워크 설정하기] *[http://swacademy.co.kr/index.php/openstack/ 오픈스택 온라인 강좌] *[[CloudStack|CloudStack]] *[[Eucalyptus|Eucalyptus]] *[http://blog.woosum.net/ 블로그 - Your wish is my command] *[http://docs.openstack.org/ OpenStack Document], [http://docs.openstack.org/grizzly/ Grizzly Document] :*[http://www.openstack.org/software/start/ Getting Started] :*Installing OpenStack :*Running OpenStack :*Developing OpenStack :*Command Line Interface(CLI) :*API :*Glossary :*OpenStack Operations Guide *[http://status.openstack.org/release/ OpenStack Roadmap] *[http://naleejang.tistory.com/ Nalee의 IT 이야기] *[http://docs.openstack.org/essex/ OpenStack Manuals : Administration Guides] :*[http://docs.openstack.org/essex/openstack-compute/admin/content/ OpenStack Compute Administration Manual] :*[http://docs.openstack.org/essex/openstack-object-storage/admin/content/ OpenStack Object Storage Administration Manual] :*[http://docs.openstack.org/essex/openstack-compute/install/apt/content/ OpenStack Install and Deploy Manual] :*[http://docs.openstack.org/essex/openstack-compute/install/yum/content/ OpenStack Install and Deploy Manual for CentOS] *[http://docs.openstack.org/api/ OpenStack Manuals : API Documentation] *[http://docs.openstack.org/developer/ OpenStack Manuals : Developer Documentation] *[http://www.openstack.or.kr/ OpenStack 한국 커뮤니티] *[http://en.wikipedia.org/wiki/OpenStack OpenStack Wiki] *[http://wiki.openstack.or.kr/index.php/OpenStack OpenStack 한글 Wiki] *OpenStack 설치 참고 문헌 :*[http://guni.tistory.com/archive/20121008 CentOS 6.x에 OpenStack 설치하기, 2012.10] :*[http://openstack.redhat.com/Quickstart http://openstack.redhat.com/Quickstart] :*[http://webcache.googleusercontent.com/search?q=cache:ftp://vinhlg.vcomtech.net/pub/linux/VCOM/6/updates/openstack/docs/openstack-install-guide-yum-trunk.pdf http://webcache.googleusercontent.com/search?q=cache:ftp://vinhlg.vcomtech.net/pub/linux/VCOM/6/updates/openstack/docs/openstack-install-guide-yum-trunk.pdf] :*[https://wiki.ubuntu.com/ServerTeam/OpenStackHA https://wiki.ubuntu.com/ServerTeam/OpenStackHA] *[https://wiki.openstack.org/wiki/HypervisorSupportMatrix OpenStack 지원 Hypervisor] *[http://guni.tistory.com/archive/20121008 CentOS 6.x에 OpenStack 설치하기, 2012.10] *[http://docs.openstack.org/folsom/openstack-compute/install/yum/content/ OpenStack Install and Deploy Manual - Red Hat, 2012.11] *[http://docs.openstack.org/essex/openstack-compute/starter/content/ OpenStack Compute Starter Guide, 2012.05] *[http://en.m.wikipedia.org/wiki/OpenStack?wasRedirected=true http://en.m.wikipedia.org/wiki/OpenStack?wasRedirected=true] *KT에서 Swift 상용 서비스 추진중 *[http://www.idg.co.kr/newscenter/common/newCommonView.do?newsId=62947&parentCategoryCode=0100&categoryCode=0000 마이크로소프트, 하이퍼-V와 오픈스택 호환성 작업 참여] *블로터닷넷 :*[http://www.bloter.net/archives/84941 블로터TV 테크포럼: ③오픈스택이 뭐에요] :*[http://www.bloter.net/archives/86917 블로터TV 테크포럼: ④오픈스택-NOVA 알아보기] :*[http://www.bloter.net/archives/88882 블로터TV 테크포럼: ⑤오픈스택-스위프트 알아보기] *[http://www.zdnet.co.kr/news/news_view.asp?artice_id=20120407175331 오픈스택 '에섹스', 무엇이 달라졌나, 2012.4] *[http://www.oss.kr/?mid=oss_repository10&page=10&document_srl=18913 공개SW 활용 성공사례 3: SK C&C ‘마이클라우드’, 공개SW 기반 클라우드 인프라 구현, 2011.08] *[http://www.oss.kr/?mid=oss_repository10&page=12&document_srl=8175 KT_uCloud 서비스 구축, 2011.06] *[http://www.slideshare.net/kingcrab/ss-32579693?related=1 http://www.slideshare.net/kingcrab/ss-32579693?related=1] *[http://www.zdnet.co.kr/news/news_view.asp?artice_id=20141017095319 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://pds26.egloos.com/pds/201407/18/69/DeepDive_Openstack_02.pdf] *[http://kcsa.or.kr/archives/4806 http://kcsa.or.kr/archives/4806]<br/><br/><br/><br/><br/> [[Category:오픈소스|Category:오픈소스]]<br/>[[Category:Cloud|Category:Cloud]]<br/>[[Category:OpenStack|Category:OpenStack]]
OpenStack
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보