SlideShare a Scribd company logo
상용 수준의 자체 클라우드를
구축하는 단계별 지침
오픈스택 인 액션
오픈스택 인 액션 : 상용 수준의 자체 클라우드를 구축하는 단계별 지침
초판발행 2016년 10월 1일
지은이 코디 범가드너 / 옮긴이 강재준, 신원석, 오성근, 이준섭, 조영준 / 펴낸이 김태헌
펴낸곳 한빛미디어 (주) / 주소 서울시 마포구 양화로 7길 83 한빛미디어(주) IT출판부
전화 02 – 325 – 5544 / 팩스 02 – 336 – 7124
등록 1999년 6월 24일 제10 – 1779호 / ISBN 978-89-6848-486-5 93000
총괄 전태호 / 책임편집 김창수 / 기획·편집 이복연
디자인 표지·내지 여동일, 조판 이경숙
영업 김형진, 김진불, 조유미 / 마케팅 박상용, 송경석, 변지영 / 제작 박성우, 김정우
이 책에 대한 의견이나 오탈자 및 잘못된 내용에 대한 수정 정보는 한빛미디어(주)의 홈페이지나 아래 이메일로
알려주십시오. 잘못된 책은 구입하신 서점에서 교환해 드립니다. 책값은 뒤표지에 표시되어 있습니다.
한빛미디어 홈페이지 www.hanbit.co.kr / 이메일 ask@hanbit.co.kr
OpenStack in Action by V.K.Cody Bumgardner
Original English language edition published by Manning Publications. USA. Copyright © 2015 by
Manning Publications Co. Korean language edition copyright © 2016 by HANBIT Media Inc. All
rights reserved.
이 책의 한국어판 저작권은 대니홍 에이전시를 통한 저작권사와의 독점 계약으로 한빛미디어(주)에 있습니다.
저작권법에 의해 한국 내에서 보호를 받는 저작물이므로 무단전재와 복제를 금합니다.
지금 하지 않으면 할 수 없는 일이 있습니다.
책으로 펴내고 싶은 아이디어나 원고를 메일 (writer@hanbit.co.kr) 로 보내주세요.
한빛미디어(주)는 여러분의 소중한 경험과 지식을 기다리고 있습니다.
| 표지 설명 |
표지 그림은 “쿠탕스의 우유 짜는 여자(Milkmaid from Coutances)” 그림에서 따온 것이다. 이 그림은 루이 퀴메아Louis Curmer가 많은
예술가의 작품들을 편집해 1841년 출간한 작품집에서 가져왔다. 그 작품집의 이름은 “Les Français peints par eux-mêmes”인데,
번역하면 “스스로 그린 프랑스인”이라는 뜻이다. 모든 그림은 손으로 세밀하게 그려 채색되어 있으며, 이 작품집에 실린 다양한 그림을 보
면 200년 전의 세계의 지역, 도시, 마을, 인근 지역이 서로 문화적으로 얼마나 떨어져 있었는지를 떠올릴 수 있다. 서로 격리된 사람들은
다른 방언과 언어를 사용했다. 거리나 시골길에서 볼 수 있는 그들의 옷차림만으로도 그들이 어디에 살고 어떤 직업이나 신분을 가지고
있는지를 쉽게 알 수 있었다.
그 이후로 옷차림이 점점 바뀌어 갔고, 당시의 풍부했던 지역별 다양성도 사라져버렸다. 이제는 다른 도시나 지역은 말할 것도 없고, 다른
대륙에 사는 사람도 구분하기 어려워졌다. 문화적 다양성을 다채로운 개인의 삶과 바꾼 것일지도 모른다. 다양하고 빠르게 변하는 기술
사회를 살아가는 삶은 분명히 더욱 그러하다.
한 권의 컴퓨터 책을 다른 책과 구분하기 어려운 지금 이 시대에, 매닝은 2세기 전 각 지역의 다양한 삶을 그린 책 표지로 컴퓨터 산업의
창의성과 선도성을 찬미하고자, 이런 작품집의 그림을 다시 세상에 선보이고 있다.
오픈스택 인 액션
상용 수준의 자체 클라우드를
구축하는 단계별 지침
4
지은이 코디 범가드너 Cody Bumgardner http://codybum.com
IT 산업에서 20년 넘게 IT 아키텍처, 소프트웨어 개발, 네트워크, 연구, 시스템, 보안 분야에서 기
술, 경영, 영업을 담당했다. 지난 몇 년은 클라우드 컴퓨팅과 전산 경제학을 집중적으로 연구하고,
구현하고, 강의했다. 현재는 영국 켄터키 대학교에서 컴퓨터 과학 박사 과정을 밟고 있으며, 전산
경제학과 분산 자원 관리에 집중하고 있다. 또한 캔터키 대학교의 최고 기술 아키텍트Chief Technology
Architect를 역임하며 클라우드 컴퓨팅 5개년 중장기 전략과 로드맵을 수립했다. 이 로드맵은 혁신적
인 클라우드 기술의 도입 및 관련 IT 인력 구성의 변화를 서술한다. 그 계획은 학술, 연구, 건강 관
리 분야에 종사하는 40,000명 이상의 사용자를 지원하기 위한 오픈스택 사설 클라우드를 배포하는
것이 주요 내용이다. 코디는 그 중 오픈스택 사설 클라우드, 연구용 컴퓨터, 기타 클라우드 컴퓨팅
계획의 아키텍처, 재정 모델, 배포, 장기 전략을 담당하고 있다.
옮긴이 강재준, 신원석, 오성근, 이준섭, 조영준
옮긴이들은 SK텔레콤에서 길게는 10년 이상 네트워크 시스템과 IT 인프라를 구축, 관리, 운용하는
업무를 담당해오고 있다. 2G/3G/LTE 통신 인프라 및 연동 시스템을 운용해왔으며, 현재는 가상화
기반의 통신 인프라 구축/운용 및 다양한 고객 서비스를 제공하는 업무를 수행 중이다.
VMware, 오픈스택 등의 솔루션을 기반으로 각종 서비스를 제공하고 있고, 작년에는 국내 최초로
가상화 기반의 LTE 코어 시스템(NFV, Network Function Virtualization)을 상용화해 운용 중이
다. 가상화 기술 기반의 통신망 상용화 프로젝트를 계속 추진하고 있으며, 효율적인 데이터센터 인
프라 관리를 위한 자동화 체계도 지속적으로 구축하고 있다.
『VMWare vSphere 6 서버 가상화 구축과 운용』(에이콘출판사, 2015)을 번역했다.
지은이•옮긴이 소개
5
추천의 글
노바 프로젝트의 원본 소스 코드를 살펴본 지 벌써 5년이 지났다는 것이 믿기지 않는다. 그 코드는
안소Anso 연구팀이 NASA를 위해 만들어 발표했다. 그 당시 내가 일했던 랙스페이스Rackplace는 랙스
페이스 클라우드의 차세대 동력이 될 새로운 코드를 찾고 있었다. 몇 달 후, 랙스페이스 클라우드 파
일 플랫폼의 코드를 스위프트Swift라는 오픈 소스 프로젝트로 공개했다. 이렇게 노바와 스위프트는
초기 오픈스택 프로젝트의 토대가 되었다.
그 이후로, 두 프로젝트는 상당한 변화를 겪어왔다. 많은 기능이 추가되고 성능과 확장성 면에서 많
은 개선이 이루어졌지만, 스위프트의 핵심 개발팀과 코드는 놀랍게도 그대로 남아 있다. 반면에 노
바의 소스 코드는 미약하게 시작한 것에 비해 거의 알아보지도 못할 정도로 많이 변했다. 글랜스, 신
더, 키스톤 그리고 뉴트론 같은 새로운 코드는 원래는 노바가 처리했던 기능을 제공하도록 만들어
졌다.
대규모 컴퓨팅 인프라 관리에 필수적인 기능을 처리하기 위해 이러한 새로운 소스 코드가 등장한 것
과 동시에 새로운 유형의 오픈 소스 커뮤니티가 형성되기 시작했다. 운영체제 배포와 패키징, 구성
관리, 데이터베이스 설계, 자동화, 네트워크, 스토리지 시스템에 경험이 있는 오픈 소스 개발자와
지지자들이 오픈스택 프로젝트에 기여하기 위해 모여들었다.
오픈스택 커뮤니티는 정신없이 빠른 속도로 성장했고(지금도 계속 성장하고 있다) 지구상에서 가
장 크고, 활발하고, 영향력 있는 오픈 소스 커뮤니티 중 하나가 되었다. 이러한 성공적인 커뮤니티
성장의 발판이 된 과제들을 관리하기 위해 오픈스택 재단이 만들어졌다. 설계 서밋summit과 컨퍼런스
에 전 세계에서 매년 3,500명이 넘는 기여자가 모일 정도로 그 규모가 커졌다.
커뮤니티는 소스 코드의 개발과 기여자 수의 엄청난 성장을 뒷받침하기 위해 세계적 수준의 통합 구
축 시스템을 만들었다. 현재 이 자동화 구축 시스템의 규모와 범위는 아파치나 이클립스 재단과 같
은 훨씬 오래된 오픈 소스 커뮤니티에 필적하거나 뛰어넘는 수준이다.
오픈스택 생태계는 스위프트스택SwiftStack과 피스톤 클라우드Piston Cloud 등의 신생 기업이 생겨나는 밑
거름이 되었다. HP, 미란티스Mirantis, 레드햇Red Hat 등의 기존 기업들은 오픈스택이 수익 모델이 될
6
수 있다고 판단하고, 오픈스택 커뮤니티의 빅 텐트big tent를 구성하는 많은 프로젝트에서 지속적으로
혁신을 이끌고 있다.
이러한 오픈스택 커뮤니티의 확장으로 인해 분산 소프트웨어 구성요소를 배포하는 방법과 상호 동
작하는 방식은 엄청나게 복잡해졌다. 오픈스택을 “백지에서” 배포하려면 네트워크와 스토리지는 물
론이고 가상화와 구성 관리까지 아우르는 전반적인 개념을 이해해야 한다. 필요한 지식과 기술을 얻
는 것은 오픈스택을 사용해 클라우드 플랫폼을 만들고 싶은 사람들이 직면하는 주요 도전 과제다.
『오픈스택 인 액션』은 독자들에게 오픈스택을 배포하고 실행하기 위해 필요한 지식을 제공한다.
저자는 복잡한 오픈스택 배포 방법을 설명하기 위해, 소프트웨어를 배포하는 세 가지 방식으로 스크
립트 방식의 데브스택DevStack, 운영체제 패키지의 수동 설치, 퓨얼Fuel 오픈스택 인스톨러를 사용한
다. 각 절에서는 네트워크와 스토리지 설정에 대한 개념을 전반적으로 설명한다. 이를 통해 독자들
은 점차 클라우드 컴퓨팅 속으로 발을 내디딜 수 있고, 이 책의 마지막쯤에는 깊은 곳까지 편하게 들
어갈 수 있을 것이다.
오픈스택 기술에 대한 뛰어난 설명 외에도, 저자는 클라우드 컴퓨팅에서 얻을 수 있는 혜택을 평가
하는 방법 또한 설명한다. 클라우드는 많은 조직에서 시간을 들여 수작업으로 처리해야 하는 문제를
마법처럼 해결해주지는 않는다. 그러나 클라우드는 효과적으로 잘 구현하면 IT 조직을 변화시키고
그들이 제공하는 서비스를 급격히 개선할 수 있다. 9장에서 저자는 가상화되어 있는 기존의 IT 인
프라를 오픈스택으로 교체하거나 내부 고객을 위한 새 사설 클라우드를 구축하려는 모든 IT 관리자
가 반드시 읽어봐야 하는 주제에 대해 이야기한다.
간단히 말해, 『오픈스택 인 액션』은 복잡한 클라우드 컴퓨팅과 오픈스택 소프트웨어 생태계에 대한
훌륭한 입문서 역할을 한다. 읽고 자신의 것으로 만들어 “스태커Stacker”가 되어보자!
오픈스택 기술 위원, 미란티스 공학 이사_ 제이 파이프스Jay Pipes
7
옮긴이의 말
이 책의 독자라면 클라우드 환경에 가장 적합한 기술로 주목받고 있는 오픈스택에 분명히 관심이 있
을 것이다. 2012년 오픈스택 재단이 출범한 이후, 점점 더 많은 기업이 오픈스택 기술의 발전에 동
참하고 있다. 오픈스택에는 현재 178개국에서 345개 기업이 참여하고 있으며, 그 소스 코드도 3백
5십만 라인에 이른다고 한다. 오픈스택의 사용자층도 점점 확대되고 있으며, IT 업계뿐 아니라 자
동차, 엔터테인먼트, 금융 업계에서도 속속 오픈스택 기술을 도입하고 있다. 클라우드스택CloudStack,
유칼립투스Eucalyptus 등의 경쟁 기술이 있었지만, 현재는 확장성과 모듈화를 바탕으로 제조사 및 개
발자 주도하에 급성장한 오픈스택이 대세로 떠오르는 추세다.
오픈스택 재단은 매년 새로운 버전을 두 차례 출시한다. 버전명 첫 글자는 알파벳 순서로 결정되는
데, 2010년 첫 번째 버전인 ‘오스틴Austin’부터 시작해 2014년에는 이 책에서 예제로 활용하는 ‘아이
스하우스Icehouse’가, 2015년에는 ‘킬로Kilo’와 ‘리버티Liberty’ 그리고 2016년 현재는 ‘미타카Mitaka’까지
출시되었다. 초창기에서 컴퓨트 기술을 중심으로 프로젝트가 진행되었고, 그 이후 스토리지와 네트
워크 기술과 관련한 프로젝트를 강화해오고 있다.
오픈스택의 가장 큰 장점은 오픈 소스 형태로 누구나 참여할 수 있는 개방성과 가상화 기반 자원들
을 바탕으로 다양한 인프라/서비스를 제공하는 모듈성이다. 이를 오픈스택 재단에서는 개별적인 프
로젝트로 관리하고 있으며, 프로젝트마다 고유 이름과 관련 구성요소가 존재한다. 현재 많은 주목
을 받는 IT 기술인 컨테이너 기술, 네트워크 가상화(소프트웨어 정의 네트워크) 등도 오픈스택의
이런 개방성과 모듈성 덕분에 함께 발전하고 있다.
이 책은 앞서 이야기한 가상화 기반 자원들을 가지고 컴퓨트, 스토리지, 네트워크 등 오픈스택 핵
심 구성요소를 제공하는 환경을 직접 배포해보면서 프레임워크를 이해하도록 구성되어 있다. 필요
에 따라 사용할 수 있는 다양한 배포 방식이 존재하며, 오픈스택을 간단하게 맛보고 싶다면 쉽게 배
포할 수 있는 데브스택Devstack을 설치해볼 수 있다. 오픈스택 각 구성요소의 기능과 서로 간의­상
호작용을 이해하기 위해서는 수동으로 모든 단계를 직접 설치해보는 것도 좋다. 또한 기업 환경에
서 상용 수준의 클라우드를 관리한다면 더 효율적이고 안정적인 자동화 도구를 사용해서 배포하는
8
방법을 익혀둘 필요가 있다. 이 책은 위의 모든 배포 방식을 설명하면서 초보자부터 고급 관리자 수
준까지 아우를 수 있도록 구성되어 있다. 실제로 이런 다양한 배포 방식으로 오픈스택을 스스로 구
성해보기란 쉽지 않다. 클라우드 관리자나 개발자, 설계자는 이 책을 통해서 매우 귀중한 경험을 해
볼 수 있을 것이다.
저자 서문에서 더 상세한 흐름을 알 수 있겠지만, 이 책에서는 오픈스택을 이해하고, 배포하고, 구
성요소를 설정하고, 오픈스택을 더욱 잘 활용하기 위한 다양한 솔루션을 접할 수 있다. 적절한 그림
과 명령어 수준까지 제공하는 예제들이 오픈스택을 구체적으로 이해하는 데 큰 도움을 줄 것이다.
순서대로 읽을 필요는 없지만, 1부는 오픈스택에 대한 기본적인 이해를 도와주고, 2부는 오픈스택
환경에 대해 더 깊게 들여다보고, 3부는 상용 환경에서 사용하는 솔루션 등을 소개한다. 이 책을 다
읽게 되면 주요 서비스 구성요소를 구성하는 방법과 이들이 서로 상호작용하는 방식을 이해하게 될
것이다. 또한 이에 대한 다양한 기반 기술(네임스페이스, OVS, LVM 등)도 언급하면서, 고급 IT
기술을 처음 접하는 독자의 이해를 돕는 실마리도 제공하고 있다.
옮긴이들 또한 KVM과 오픈스택 기반의 가상화 인프라를 직접 구축/관리해오면서 기술적인 도움
과 구조적인 지식이 필요한 상황에 자주 부딪혀왔고, 그때마다 오픈스택 공식 홈페이지, 국내외 블
로그, 읽기 어려운 해외 사이트들을 찾아다니며 문제를 해결해왔다. 그러던 중 오픈스택의 기본적인
이해뿐만 아니라 상세한 구조와 상호작용까지 체계적으로 배울 수 있는 『오픈스택 인 액션』을 번역할
기회를 얻게 되었다. 이 책은 매닝의 유명한 다른 『인 액션』 시리즈와 마찬가지로 어느 정도의 기본
지식이 필요하지만, 초보자부터 고급자까지 누구나 직접 실습해보며 익힐 수 있도록 구성되었다.
번역하기 까다로운 부분들은 더욱 쉽게 읽을 수 있도록 저자의 의도를 해치지 않는 선에서 의역하기
도 하였지만, 독자들에게 더 쉽게 전달하지 못한 점이 있을까 아쉬움이 남는다.
다음은 번역 용어나 번역 규칙 등에 대한 몇 가지 참고 사항이며, 이 책을 읽기 전에 미리 알아두는
것이 도움이 될 것이다.
9
●● 오픈스택 프로젝트명과 버전명은 읽기 쉽게 하기 위해 한글로 표기했다.
●● 오픈스택 자체적으로 사용되는 다양한 용어들(tenant, quota, user role 등)은 이해에 무리가 없는 수준에
서 한글로 번역 표기하였으며, 메뉴나 스크린샷, 명령줄 등은 영문 버전 그대로 표기했다.
●● 이 책은 우분투 14.04 기반의 오픈스택 아이스하우스 버전을 사용하여 예제를 설명하고 있다. 최신 버전과는
일부 메뉴 구성이나 클라이언트 명령어 체계가 다를 수 있다. 그렇더라도 오픈스택 고유의 동작과 내부 구조를
이해하는 데는 전혀 문제가 없으며, 단지 버전상의 차이로 인한 UI나 명령어의 차이 정도만 고려하면 된다.
옮긴이들의 노력에도 불구하고, 여전히 누락되거나 잘못된 부분이 있을 수도 있으므로 추가로 확인
되는 오류나 독자들의 제보를 반영해 한빛미디어 도서정보 페이지를 통해 정오표를 제공할 것이다.
이제는 다른 팀에서 일하고 있지만 각자의 자리에서 최선을 다하고 있는 동료들께 항상 감사를 드린
다. 더욱이 이 책이 출간되기까지 적극적인 관심과 지원을 해주신 본부장 및 팀장님께도 감사를 드
린다. 마지막으로 번역 과정에서 항상 친절한 안내와 상세한 조언을 해주신 한빛미디어 관계자분들
께도 감사의 말씀을 전한다.
아무쪼록 이 책이 여전히 열악한 국내 가상화 및 IT 환경에서 고군분투하는 많은 관리자와 개발자
들에게 좋은 지침서가 되길 바란다.
10
지은이의 말
내가 처음으로 오픈스택을 접한 때는 켄터키 대학교에서 일하던 2011년 여름이었다. 동료이자 친
구인 브렌트 솔즈베리Brent Salisbury와 나는 제품 개발 프로젝트를 논의하기 위해 포춘 50대 기술 회사
와의 회의에 참석했다. 회의 동안 그 프로젝트의 담당 임원은 기존의 상용 도구를 가지고 일하는 것
과 오픈스택이라는 커뮤니티 프로젝트를 연구하는 것 중 하나를 선택하도록 제안했다. 당연히 우리
는 그 미지의 프레임워크로 일하는 쪽을 선택했고, 그렇게 해서 우리의 오픈스택 여정은 시작되었
다. 제품 개발 프로젝트는 무산되었지만 나중에 알고 보니 오픈스택과의 만남은 우리의 전문 분야,
학문, 경력에 큰 전환점이 되었다. 브렌트는 학교를 떠나 나중에 도커Docker에 매각된 스타트업을 공
동 창립했으며, 지금도 도커에서 일하고 있다. 반면에 나는 석사 과정을 거쳐 박사 과정으로 진학했
고 이 책을 쓰게 되었다.
2013년 초, 오픈스택 그리즐리Grizzly 버전은 현재 버전과 어느 정도 유사하긴 했지만, 급하게 개발
된 기능들이 불안정해 기업 환경에서는 상용으로 사용할 수 없었다. 기업용 오픈스택에 내 모든 것
을 걸지는 않았지만 연구용 컴퓨터는 전혀 다른 이야기다. 대학원 독립 연구 과정의 일환으로, 나는
연구용 컴퓨터에서 오픈스택을 사용하는 것에 대한 사용 사례, 아키텍처, 전략을 주제로 한 논문을
썼다. 추가로 오픈스택을 기업용 사설 클라우드 플랫폼으로 채택하는 절차도 서술했다.
나는 학술 보고서에서 [그림 0]을 사용해 구성요소별로 분산된 오픈스택을 표현했다. 코끼리를 먹을
때도 마찬가지지만 코끼리를 요리할 때도 한 번에 한 조각씩 요리해야 한다. 기술 분야에서는 “나는
스토리지 담당자야” 또는 “나는 네트워크 담당자야”라고 하면서 기술적인 고립을 당연한 것으로 받
아들이는 관례가 있는데, 이는 코끼리의 한 부분만 먹는 사람에게는 가장 중요한 가치일 수도 있다.
이 책에서 나는 코끼리를 더 쉽게 소화할 수 있도록, 알아볼 수 있을 정도로 작은 조각으로 나누어
이를 새로운 개념과 섞어보려고 노력했다. 코끼리 발을 맛보고 싶지는 않겠지만, 클라우드 컴퓨팅
을 성공적으로 도입하고 싶다면 최소한 이론적으로라도 코끼리 발이 어떻게 움직이는지는 알아두는
게 좋다.
11
그림 0 이 그림은 마에스트로 마르티노Maestro Martino의 16세기 저서 『요리의 예술Libro de Arte Coquinaria』의 판본에 실려 있다.
나는 이 서문을 매닝의 편집자와 처음 이야기를 나눈 지 정확히 2년 만에 쓰고 있다. 이 프로젝트를
시작했을 때는 오픈스택 기여자가 500명이 채 안 되었는데 이제는 수천 명이 되었다. 오픈스택은
가장 빠르게 성장하는 오픈 소스 커뮤니티 중 하나가 되었을 뿐 아니라 세계에서 가장 큰 여러 조직
에서 채택하고 있다. 더 중요한 것으로, 오픈스택은 이제 성숙 단계로 접어들어 사설 클라우드를 위
한 기반 역할을 할 준비가 되었다.
12
이 책의 주요 주제는 오픈스택을 사용해 기업의 사설 클라우드를 배포하는 것이다. 이런 맥락에서
사설 클라우드를 인프라 자원의 풀 또는 조직이 소유하고 관리하는 IaaSInfrastructure as a Service로 볼 수
있다. 이와 반대로, 공용 클라우드 IaaS 자원은 외부 서비스 제공자가 소유하고 운영한다.
재정적인 면에서 사설 클라우드는 일반적으로 자본 비용인 반면에, 공용 클라우드는 대개 운영 비용
으로 볼 수 있다. 사설 클라우드 환경에서 기업들은 일반적으로 실제 사용 여부와 관계없이 고정 인
프라를 구매하거나 일정 기간 동안 대여한다는 점을 고려하면 이 구분은 이해하기 쉽다. 공용 클라
우드에서 비용은 일반적으로 시간당 사용량 및 통신 비용과 직접적인 관계가 있다.
기업이 사설 클라우드를 선택할지 공용 클라우드를 선택할지는 보통 그 기업의 IT 업무의 규모나
범위와 관련이 있다. 기술적인 구조와 자원을 다른 부서에 제공해야 하는 중앙 IT 부서는 보통 사설
클라우드를 활용하는 데 관심이 있다. 다중 테넌트multi-tenant를 지원하고 완전히 조직화된 사설 클라
우드는 기업의 IT 자원 관리의 효율성을 크게 높여준다. 이러한 면에서 기업의 IT 부서는 클라우드
중개자가 될 수 있다. 이와 반대로 부서별 IT 조직은 대개 비용 효율적으로 사설 클라우드를 배포할
수 있는 데이터센터 시설과 인력을 보유하고 있지 않다. 부서별 IT 조직은 비교적 적은 자원만 필요
로 하기 때문에 종종 공용 클라우드 자원을 이용할 수 있다. 가능한 경우에는 기업의 IT 부서가 관
리하는 사설 클라우드 자원을 사용할 수도 있다. 작업 부하에 따라 사설과 공용 클라우드를 함께 사
용하면 이를 하이브리드 클라우드라고 한다.
클라우드와 이를 활용하는 조직의 유형은 다를지라도, 클라우드 자체는 동일한 기술을 사용해 구축
할 수 있다. 반면, 클라우드 자원을 구성하는 재료는 동일할 수 있지만, 그 조리법과 사용 방법은 매
우 다를 수 있다.
오픈스택은 사설 및 공용 클라우드 모두를 구성하기 위한 강력한 프레임워크를 제공한다. 기본적으
로 오픈스택은 클라우드를 구축할 때 사용하는 하드웨어와 소프트웨어를 위한 공통 API를 추상화
해 제공한다. 오픈스택 프레임워크는 매우 중요한 다음의 두 가지 기능을 제공한다.
이 책에 관하여
13
●● 특정 구성요소의 제조사 종속을 방지하는 하드웨어 및 소프트웨어 자원의 추상화
●● 연결 구성요소를 완전히 오케스트레이션할 수 있는 여러 자원 간의 공통 API
첫 번째 기능은 경제적인 면에서 좋고 두 번째는 현대 IT 변혁의 핵심이다. 오픈스택은 기업의 IT를
위해 클라우드 배포 환경에 혁신적인 수준의 효율성을 가져다줄 수 있다.
왜 『오픈스택 인 액션』인가?
이 책은 컴퓨팅 자원의 클라우드를 구축하기 위한 단계별 상향식 가이드를 제공한다는 목적으로 계
획되었다. 예상 독자는 오픈스택 환경 배포에 관심이 있는 연구원, 관리자, 학생이다. 기본적인 리눅
스 작업 방법만 알고 있으면 어떠한 기술적인 사전 요구사항도 없고, 매우 다른 배경과 기술력을 가
졌더라도 누구나 쉽게 이해할 수 있도록 만들었다. 이처럼 오픈스택은 많은 사례에서 적합하다.
오픈스택 프레임워크를 활용하는 사례는 다양하지만 사설 클라우드의 요구사항과 설계는 서비스 제
공자마다 매우 다를 수 있다. 기업은 조직 내부에 자체 보유한 사설 자원들을 묶은 클라우드를 제공
하는 데 관심이 있다. 이런 사설 클라우드는 추가적인 서비스를 제공하지는 않는다. 하지만 조직이
컴퓨팅 자원을 제공하는 방식을 변화시킬 수는 있다.
이 책은 다음과 같은 내용을 담고 있다.
●● 단일 노드 개발 환경에서 오픈스택을 자동 배포하는 방법
●● 다중 노드 환경에서 오픈스택을 단계적으로 수동 배포하는 방법
●● IT 운영 관점에서 사설 클라우드 기술(오픈스택, 세프, 주주 등)이 주는 혜택
●● 제조사가 제공하는 자동 배포 및 관리 도구를 사용한 상용 오픈스택 환경 배포
이 책에서 다루는 아키텍처는 소규모(노드 5개 정도)에서 대규모(노드 100개 이상)까지 기업 사
설 클라우드 배포 환경에 적합하다. 또한, 12장에서는 오픈스택 히트Heat나 우분투 주주Ubuntu Juju와
같은 애플리케이션 오케스트레이션 도구를 사용하는 방법을 살펴볼 것이다.
이 책은 사설 클라우드 기술과 그 기술을 배포하고 운영하는 방법과 더불어 클라우드 오케스트레이
14
션이 전통적인 IT에 미치는 장기적인 영향을 이해할 수 있도록 꾸몄다. 이 책은 독자들의 회사에 오
픈스택 사설 클라우드를 배포하도록 설득력 있는 주장을 할 수 있게 해주고, 사설 클라우드를 배포
할 수 있는 기술 지식을 습득하는 데 도움을 줄 것이다.
알아두어야 할 가장 중요한 것은 오픈스택 사설 클라우드가 단순히 또 다른 가상화 도구는 아니라는
점이다. 오픈스택은 기존의 가상화 도구를 활용해 클라우드를 구축하고 관리하기 위한 하나의 프레
임워크다. 독자들은 클라우드를 구축하고 관리하고 조직화하는 방법을 배울 수 있을 것이다. 기술
적인 면에서는 오픈스택의 구성요소와 이를 뒷받침해주는 기술, 특히 오픈스택 컴퓨트, 네트워크,
블록 스토리지, 대시보드, API 구성요소를 이해할 수 있을 것이다.
이 책의 구성
이 책은 3부로 구성되어 있다. 1부(1~4장)에서 오픈스택을 처음 만나고, 2부(5~8장)에서는 오
픈스택 생태계를 깊이 들여다보고, 마지막 3부(9~12장)에서는 상용 환경에서 오픈스택을 사용할
준비를 할 것이다.
1장은 오픈스택 클라우드 운영체제, 오픈스택 프레임워크의 개발 목적, 오픈스택이 할 수 있는 것을
소개한다.
2장에서는 간이 배포 도구와 최소한의 인프라를 사용해 오픈스택을 체험해볼 것이다. 또한 오픈스
택 대시보드 UXUser eXperience를 보여주고 오픈스택 프레임워크를 학습하면서 사용하는 일반적인 작
업 방법을 알려줄 것이다. 마지막에는 직접 만든 오픈스택 환경에서 가상 머신을 프로비저닝해볼 것
이다.
3장은 2장에서 구성한 환경을 사용해 오픈스택 명령줄 인터페이스(CLI)를 소개한다. 새 테넌트(프
로젝트), 사용자, 역할, 내부 네트워크를 만들어보면서 기본 오픈스택 작업 방법을 살펴볼 것이다.
4장에서는 오픈스택을 사용하는 방법부터 시작해 구성요소별 기능과 전체 오픈스택 프레임워크 내
에서의 서로 간의 상호작용을 살펴볼 것이다. 오픈스택을 다중 노드 환경에 배포하기 위한 준비 과
15
정으로 몇 가지 클라우드 설계 방법도 둘러본다. 이 장은 오픈스택 구성요소들이 함께 맞물려 돌아
가는 방식과 제조사 자원과의 관계를 다룬다.
5~8장은 주요 프로젝트마다 하나의 장씩 할애해 개별 오픈스택 프로젝트를 자세히 다룬다. 또한
다중 노드 환경에서 오픈스택을 수동 배포하는 방법을 안내할 것이다. 이를 통해 오픈스택 생태계에
서 각 구성요소가 동작하는 방법과 원리를 이해할 수 있을 것이다. 추가로 수동 배포를 직접 해보면
서 문제 해결 경험도 얻을 수 있을 것이다.
9장은 상용 오픈스택 배포와 관련한 설계, 구조, 전략을 결정하는 방법을 다룬다. 10장에서는 세프
Ceph 스토리지의 기본적인 배포와 작업 방법을 다룬다. 11장에서는 퓨얼Fuel을 이용한 고가용성 오픈
스택 자동 배포 방법을 살펴볼 것이다. 마지막으로, 12장은 오픈스택 히트와 우분투 주주를 이용한
클라우드 오케스트레이션 방법을 다룬다.
누가 이 책을 읽어야 하는가?
이 책은 오픈스택을 사용해 사설 클라우드 환경을 배포하는 데 관심이 있는 인프라 전문가, 엔지니
어, 아키텍트, 지원 인력에 적합하다. 경영진과 전략적 역할을 하는 사람에게도 가치가 있지만, 전
체적인 내용은 기술 분야의 독자에게 맞춰져 있다. 기본적인 리눅스 지식 외에는 어떠한 기술적인
사전 지식도 필요하지 않다.
예제 소스 내려받기
이 책의 예제 소스는 아래에서 내려받을 수 있다.
●● https://github.com/codybum/OpenStackInAction
●● http://www.hanbit.co.kr/exam/2486
16
감사의 말
이 책은 나의 박사 과정 지도 교수이자 친구인 빅터 W. 마렉Victor W. Marek의 도움이 없었다면 존재할
수 없었을 것이다. 항상 힘이 되어준 그의 격려와 믿음에 꼭 보답하고 싶다.
내가 이번에 직접 책을 만드는 경험을 하지 못했다면 그 과정에서 드는 노력은 결코 상상하지도
못했을 것이다. 이런 노력의 결과가 결실을 맺을지 여부는 독자가 결정하겠지만, 여러 비평가, 편집
자, 기고자 분들이 좋은 품질의 책을 위해 들인 시간과 노력은 의심할 여지가 없다. 이 책을 쓰면서
다른 출판사의 여러 책에 기고도 하고 리뷰도 해보았지만, 매닝은 가능한 한 최고의 작품을 만들어
내기 위해 최선을 다하고 있다고 자신 있게 말할 수 있다. 특히, 지속적으로 개선을 추진하면서 이
책의 대부분을 담당한 개발 편집자인 수잔 코넌트의 지칠 줄 모르는 작업에 고마움을 전하고 싶다.
또한 발행자인 마쟌 베이스를 비롯해 메리 피어지스, 신시아 케인, 앤디 캐롤, 케이티 테넌트 외에
도 보이지 않는 곳에서 일하는 많은 분과 편집팀 및 제작팀의 모든 분께 감사를 드린다. 이 책을 만
드는 동안 기술 편집을 해준 빌 브런스, 앤디 힐, 마이클 키드, 제프 림, 파브리치오 소펠사에게도
많은 감사를 드린다. 마지막으로, 이 책의 원고를 읽고 많은 제안을 해준 앤디 키르슈, 크리스 스노
우, 페르난도 로드리게스, 하피주르 라만, 제프 림, 코즈마스 차치미샬리스, 맷 하팅, 마유르 파틸,
마이클 함라, 피유시 마하시, 토비 라자르 모두에게 감사드린다.
우리 두 아이를 돌보면서 나의 출장, 졸업, 이 책, 그리고 다른 작업까지도 뒷바라지해주기 위해 맡
은 몫보다 훨씬 많은 것을 해준 나의 아내 새라에게 특별한 감사를 전한다. 비록 논문과 발표 자료와
책에는 내 이름이 적혀 있지만, 우리 가족이 함께 사용하는 성(姓)도 언제나 그 안에 남아 있을 것
이다. 새라! 시드니! 잭! 함께 보내지 못한 시간과 활동에 대해 미안! 내가 우리 가족을 자랑스러워
하는 것처럼 우리 가족도 나를 자랑스러워 하길 바란다. 우리 가족 모두를 사랑한다.
17
CONTENTS
지은이·옮긴이 소개   ................................................................................................
4
추천의 글  ................................................................................................................
5
옮긴이의 말  .............................................................................................................
7
지은이의 말  ...........................................................................................................
10
이 책에 대하여  .......................................................................................................
12
PART I 시작하기
CHAPTER 1 오픈스택 소개
1.1 오픈스택이란? ...........................................................................................................
32
1.2 클라우드 컴퓨팅과 오픈스택 이해하기 ............................................................................
36
1.2.1 추상화와 오픈스택 API ......................................................................................
37
1.3 오픈스택과 오픈스택이 제어하는 컴퓨터 자원과의 관계 .....................................................
38
1.3.1 오픈스택과 하이퍼바이저 ....................................................................................
39
1.3.2 오픈스택과 네트워크 서비스 ................................................................................
42
1.3.3 오픈스택과 스토리지 ..........................................................................................
43
1.3.4 오픈스택과 클라우드 용어 ...................................................................................
46
1.4 오픈스택 구성요소 소개 ...............................................................................................
47
1.5 오픈스택의 역사 .........................................................................................................
48
1.6 요약 .........................................................................................................................
49
18
CHAPTER 2 오픈스택 맛보기
2.1 데브스택이란 무엇인가? ..............................................................................................
52
2.2 데브스택 배포하기 ......................................................................................................
54
2.2.1 서버 생성하기 ...................................................................................................
57
2.2.2 서버 환경 준비하기 ............................................................................................
58
2.2.3 데브스택 준비하기 .............................................................................................
60
2.2.4 데브스택 실행하기 .............................................................................................
62
2.3 오픈스택 대시보드 사용하기 .........................................................................................
72
2.3.1 [Overview] 화면 ...............................................................................................
74
2.3.2 [Access  Security] 화면 .................................................................................
75
2.3.3 [Images  Snapshots] 화면 .............................................................................
79
2.3.4 [Volumes] 화면 ................................................................................................
84
2.3.5 [Instances] 화면 ..............................................................................................
86
2.4 첫 번째 사설 클라우드 서버에 접속하기 ..........................................................................
91
2.4.1 인스턴스에 유동 IP 할당하기 ...............................................................................
92
2.4.2 유동 IP에 네트워크 트래픽 허용하기 .....................................................................
93
2.5 요약 .........................................................................................................................
94
CHAPTER 3 오픈스택 기본 작업 방법
3.1 오픈스택 CLI 사용하기 ................................................................................................
96
3.2 오픈스택 API 사용하기 ................................................................................................
99
3.3 테넌트 모델 운용 ......................................................................................................
101
3.3.1 테넌트 모델 ....................................................................................................
101
3.3.2 테넌트, 사용자, 역할 생성하기 ............................................................................
104
3.3.3 테넌트 네트워크 ..............................................................................................
109
CONTENTS
19
3.4 할당량(Quota) .........................................................................................................
127
3.4.1 테넌트 할당량 .................................................................................................
128
3.4.2 테넌트 사용자 할당량 .......................................................................................
130
3.4.3 기타 할당량 ....................................................................................................
132
3.5 요약 .......................................................................................................................
134
CHAPTER 4 사설 클라우드 구성요소 이해하기
4.1 오픈스택 구성요소에는 어떤 관계가 있는가? ..................................................................
136
4.1.1 구성요소 간 통신 이해하기 ................................................................................
136
4.1.2 분산 컴퓨팅 모델 .............................................................................................
143
4.2 오픈스택은 제조사 기술과 어떤 관련이 있는가? ..............................................................
148
4.2.1 오픈스택에서 제조사 스토리지 시스템 사용하기 ....................................................
149
4.2.2 오픈스택에서 제조사 네트워크 시스템 사용하기 ....................................................
154
4.3 수동 배포는 왜 해보는가? ..........................................................................................
164
4.4 요약 .......................................................................................................................
164
PART II 오픈스택 수동 배포하기
CHAPTER 5 컨트롤러 배포하기
5.1 컨트롤러의 사전 준비 사항 배포하기 ............................................................................
169
5.1.1 환경 준비하기 .................................................................................................
170
5.1.2 네트워크 인터페이스 구성하기 ...........................................................................
171
5.1.3 패키지 갱신하기 ..............................................................................................
175
5.1.4 의존 소프트웨어 설치하기 .................................................................................
176
20
5.2 공유 서비스 배포하기 ................................................................................................
181
5.2.1 아이덴티티 서비스(키스톤) 배포하기 ...................................................................
182
5.2.2 이미지 서비스(글랜스) 배포하기 .........................................................................
194
5.3 블록 스토리지(신더) 서비스 배포하기 ............................................................................
204
5.3.1 신더 데이터 저장소 생성하기 .............................................................................
205
5.3.2 신더 키스톤 사용자 생성하기 .............................................................................
206
5.3.3 신더 서비스와 엔드포인트 생성하기 ....................................................................
207
5.3.4 신더 설치하기 .................................................................................................
209
5.4 네트워크(뉴트론) 서비스 배포하기 ................................................................................
211
5.4.1 뉴트론 데이터 저장소 생성하기 ..........................................................................
212
5.4.2 뉴트론 키스톤 사용자 구성하기 ..........................................................................
213
5.4.3 뉴트론 설치하기 ..............................................................................................
215
5.5 컴퓨트(노바) 서비스 배포하기 ......................................................................................
218
5.5.1 노바 데이터 저장소 생성하기 .............................................................................
219
5.5.2 노바 키스톤 사용자 구성하기 .............................................................................
219
5.5.3 ‘nova’ 사용자에게 역할 할당하기 .......................................................................
220
5.5.4 노바 서비스와 엔드포인트 생성하기 ....................................................................
221
5.5.5 노바 컨트롤러 설치하기 ....................................................................................
222
5.6 대시보드(호라이즌) 서비스 배포하기 .............................................................................
225
5.6.1 호라이즌 설치하기 ...........................................................................................
225
5.6.2 호라이즌 접속하기 ...........................................................................................
226
5.6.3 호라이즌 디버깅하기 ........................................................................................
227
5.7 요약 .......................................................................................................................
228
CONTENTS
21
CHAPTER 6 네트워크 배포하기
6.1 네트워크의 사전 준비 사항 배포하기 ............................................................................
232
6.1.1 환경 준비하기 .................................................................................................
232
6.1.2 네트워크 인터페이스 구성하기 ...........................................................................
232
6.1.3 패키지 갱신하기 ..............................................................................................
236
6.1.4 소프트웨어와 구성 의존성 .................................................................................
237
6.1.5 Open vSwitch 설치하기 .................................................................................
240
6.1.6 Open vSwitch 구성하기 .................................................................................
245
6.2 뉴트론 설치하기 .......................................................................................................
248
6.2.1 뉴트론 구성요소 설치하기 .................................................................................
249
6.2.2 뉴트론 구성하기 ..............................................................................................
249
6.2.3 뉴트론 ML2 플러그인 구성하기 .........................................................................
250
6.2.4 뉴트론 L3 에이전트 구성하기 ............................................................................
251
6.2.5 뉴트론 DHCP 에이전트 구성하기 ......................................................................
252
6.2.6 뉴트론 메타데이터 에이전트 구성하기 .................................................................
253
6.2.7 뉴트론 에이전트 재시작 및 확인하기 ...................................................................
254
6.2.8 뉴트론 네트워크 생성하기 .................................................................................
255
6.2.9 리눅스, OVS, 뉴트론 간의 관계 ..........................................................................
269
6.2.10 호라이즌 확인하기 .........................................................................................
272
6.3 요약 .......................................................................................................................
273
CHAPTER 7 블록 스토리지 배포하기
7.1 블록 스토리지의 사전 준비 사항 배포하기 .....................................................................
278
7.1.1 환경 준비하기 .................................................................................................
278
7.1.2 네트워크 인터페이스 구성하기 ...........................................................................
278
22
7.1.3 패키지 갱신하기 ..............................................................................................
282
7.1.4 논리 볼륨 관리자 설치 및 구성하기 .....................................................................
283
7.2 신더 배포하기 .........................................................................................................
289
7.2.1 신더 설치하기 .................................................................................................
291
7.2.2 신더 구성하기 .................................................................................................
292
7.2.3 신더 에이전트 재시작 및 확인하기 ......................................................................
293
7.3 신더 테스트하기 .......................................................................................................
295
7.3.1 신더 볼륨 생성하기 : 명령줄 ..............................................................................
295
7.3.2 신더 볼륨 생성하기 : 대시보드 ...........................................................................
298
7.4 요약 .......................................................................................................................
301
CHAPTER 8 컴퓨트 배포하기
8.1 컴퓨트의 사전 준비 사항 배포하기 ...............................................................................
305
8.1.1 환경 준비하기 .................................................................................................
306
8.1.2 네트워크 인터페이스 구성하기 ...........................................................................
306
8.1.3 패키지 갱신하기 ..............................................................................................
310
8.1.4 소프트웨어와 구성 의존성 .................................................................................
310
8.1.5 Open vSwitch 설치하기 .................................................................................
311
8.1.6 Open vSwitch 구성하기 .................................................................................
313
8.2 하이퍼바이저 설치하기 ..............................................................................................
315
8.2.1 호스트 확인하기 ..............................................................................................
315
8.2.2 KVM 사용하기 ...............................................................................................
317
8.3 컴퓨트 노드에 뉴트론 설치하기 ...................................................................................
320
8.3.1 뉴트론 소프트웨어 설치하기 ..............................................................................
320
8.3.2 뉴트론 구성하기 ..............................................................................................
320
8.3.3 뉴트론 ML2 플러그인 구성하기 .........................................................................
321
CONTENTS
23
8.4 컴퓨트 노드에 노바 설치하기 ......................................................................................
322
8.4.1 노바 소프트웨어 설치하기 .................................................................................
323
8.4.2 핵심 노바 구성요소 구성하기 .............................................................................
323
8.4.3 호라이즌 확인하기 ...........................................................................................
325
8.5 노바 테스트하기 .......................................................................................................
326
8.5.1 인스턴스(VM) 생성하기 : 명령줄 .........................................................................
326
8.6 요약 .......................................................................................................................
331
PART III 상용 환경 구축하기
CHAPTER 9 오픈스택 구조 설계하기
9.1 기존 가상 서버 플랫폼의 대체 .....................................................................................
336
9.1.1 배포 방식 선택하기 ..........................................................................................
338
9.1.2 네트워크 유형 .................................................................................................
340
9.1.3 스토리지 유형 .................................................................................................
341
9.1.4 서버 유형 .......................................................................................................
345
9.2 왜 사설 클라우드를 구축하는가? .................................................................................
347
9.2.1 공용 클라우드의 규모의 경제 .............................................................................
347
9.2.2 대규모 부하 처리 또는 철저한 성능 관리 ..............................................................
348
9.2.3 사설 클라우드에 데이터 보관하기 .......................................................................
349
9.2.4 하이브리드 시대 ..............................................................................................
350
9.3 사설 클라우드 구축하기 .............................................................................................
351
9.3.1 오픈스택 배포 도구 ..........................................................................................
351
9.3.2 사설 클라우드의 네트워크 .................................................................................
352
9.3.3 사설 클라우드의 스토리지 .................................................................................
355
9.4 요약 .......................................................................................................................
357
24
CHAPTER 10 세프 배포하기
10.1 세프 노드 준비하기 .................................................................................................
360
10.1.1 노드 인증 및 인가 ..........................................................................................
361
10.1.2 세프 소프트웨어 배포하기 ...............................................................................
365
10.2 세프 클러스터 생성하기 ...........................................................................................
366
10.2.1 초기 구성 파일 생성하기 .................................................................................
366
10.2.2 세프 소프트웨어 배포하기 ...............................................................................
367
10.2.3 초기 구성 배포하기 ........................................................................................
369
10.3 OSD 자원 추가하기 ...............................................................................................
370
10.3.1 OSD 장치 준비하기 ......................................................................................
372
10.3.2 OSD 생성하기 .............................................................................................
374
10.4 세프 기본 작업 방법 ................................................................................................
376
10.4.1 세프 풀 ........................................................................................................
376
10.4.2 세프 클러스터 벤치마킹하기 ............................................................................
378
10.5 요약 .....................................................................................................................
382
CHAPTER 11 퓨얼을 사용한 HA 오픈스택 자동 배포
11.1 환경 준비하기 ........................................................................................................
385
11.1.1 네트워크 하드웨어 .........................................................................................
385
11.1.2 서버 하드웨어 ...............................................................................................
390
11.2 퓨얼 배포하기 ........................................................................................................
399
11.2.1 퓨얼 설치하기 ...............................................................................................
399
11.3 웹 기반의 기본적인 퓨얼 오픈스택 배포 방법 ...............................................................
402
11.3.1 서버 검색 .....................................................................................................
403
11.3.2 퓨얼 배포 환경 생성하기 .................................................................................
404
CONTENTS
25
11.3.3 네트워크 환경 구성하기 ..................................................................................
405
11.3.4 환경에 호스트 할당하기 ..................................................................................
407
11.3.5 최종 설정 및 검증 ..........................................................................................
410
11.3.6 변경 사항 배포하기 ........................................................................................
412
11.4 요약 .....................................................................................................................
412
CHAPTER 12 오픈스택을 사용한 클라우드 오케스트레이션
12.1 오픈스택 히트 ........................................................................................................
414
12.1.1 히트 템플릿 ..................................................................................................
414
12.1.2 히트 예제 .....................................................................................................
417
12.2 우분투 주주 ...........................................................................................................
424
12.2.1 주주를 위한 오픈스택 준비하기 ........................................................................
425
12.2.2 주주 설치하기 ...............................................................................................
427
12.2.3 참 CLI 배포하기 ...........................................................................................
432
12.2.4 주주 GUI 배포하기 ........................................................................................
434
12.3 요약 .....................................................................................................................
442
APPENDIX A 리눅스 설치하기
A.1 시작하기 ................................................................................................................
444
A.2 초기 구성 ................................................................................................................
444
A.3 네트워크 구성 ..........................................................................................................
447
A.3.1 수동으로 어댑터 구성하기 .................................................................................
449
A.3.2 호스트 및 도메인 이름 구성하기 .........................................................................
452
A.4 사용자 구성 ............................................................................................................
454
26
A.5 디스크와 파티션 .......................................................................................................
455
A.5.1 블록 장치(하드 드라이브) 구성하기 .....................................................................
457
A.5.2 root 및 스왑 파티션과 마운트 지점 구성하기 ........................................................
459
A.5.3 디스크 구성 마무리하기 ....................................................................................
462
A.6 기본 시스템 구성 .....................................................................................................
463
찾아보기 	..............................................................................................................................................
467
CONTENTS
271장 오픈스택 소개
시작하기
Part I
1부에서는 오픈스택 프레임워크를 소개하면서 왜 오픈스택을 써야 하며 어떻게 쓰는지를 알아본다. 오픈스택
의 구성요소를 분해하고 하부 자원(컴퓨트, 스토리지, 네트워크 등)과의 관계를 설명한다. 데브스택 배포 도구
를 사용하여 오픈스택을 단일 노드에 배포해볼 것이다. 이러한 내용은 오픈스택을 독자들의 환경에 어떻게 적
용할지 고민하게 해주고 오픈스택 프레임워크에 대한 흥미를 갖게 하여, 향후 오픈스택의 내부 동작 방식을
깊이 이해할 수 있도록 이끌어줄 것이다.
28 1부 시작하기
Part I
시작하기
1장	 오픈스택 소개
2장	오픈스택 맛보기
3장	 오픈스택 기본 작업 방법
4장	사설 클라우드 구성요소 이해하기
291장 오픈스택 소개
●● 오픈스택과 클라우드 생태계
●● 오픈스택을 선택해야 하는 이유
●● 오픈스택이 해줄 수 있는 것
●● 오픈스택의 주요 구성요소
몇십 년 전만 해도 많은 컴퓨터 하드웨어 대기업은 자신만의 제조 시설을 갖추고 전용 프로세
서를 만들어 경쟁 우위를 누렸지만, 생산 비용이 증가하면서 수익을 유지할 수 있을 만큼의 규
모로 칩을 생산할 수 있는 회사는 이제 거의 남아 있지 않다. 범용 프로세서를 대규모로 생산할
수 있는 상용 칩 제조사가 등장해 생산 비용을 크게 끌어내렸다. 몇몇 컴퓨터 칩 제조사는 인텔
x86 명령어 집합으로 표준화된 데스크톱과 서버 플랫폼을 권장해왔고, 결국 x86은 클라이언
트-서버 시장에서도 범용 하드웨어가 주류가 되도록 이끌었다.
2000년대 초반의 닷컴 시대에는 웹의 급격한 성장으로 인해 이러한 범용 하드웨어로 채워진
거대 데이터센터들이 나타났다. 범용 하드웨어는 충분히 강력하고 저렴했다. 하지만 그 아키텍
처는 중앙 집중식 관리를 염두에 두고 설계되지 않은 데스크톱 컴퓨팅 환경 그대로였다. 범용
하드웨어를 자원의 집합으로 추상화하여 관리할 수 있는 어떠한 도구도 존재하지 않았다. 설상
가상으로, 이 시기의 서버들은 데스크톱 계통과 마찬가지로 하드웨어 관리 능력이 대개 결여되
어 있었다. 메인프레임과 대규모 SMPSymmetric Multi-Processing (대칭형 다중 처리) 장치와는 달리,
데스크톱과 유사한 이러한 범용 서버에는 독립적인 자원들을 조율해주는 관리 소프트웨어 계
층이 필요했다.
오픈스택 소개
CHAPTER 1
30 1부 시작하기
그림 1.1 상호 연결된 범용 자원들의 클라우드
샌프란시스코
데이터센터
파리 데이터센터
뭄바이
데이터센터
뉴욕
데이터센터
데이터센터 데이터센터에는
랙rack이 존재한다.
각 랙에는 자원들이
존재한다.
애플리케이션
플랫폼
스위치
하이퍼바이저 OS
물리 장치
이 기간에 여러 공공 및 민간 단체에서 범용 자원들을 관리하기 위해 내부적으로 많은 관리 프
레임워크를 만들어냈다. [그림 1.1]은 여러 데이터센터에 분산되어 상호 연결된 자원들의 집
합을 보여준다. 관리 프레임워크를 사용하면 가용성 요구나 사용자의 필요에 따라 이러한 공동
의 자원들을 서로 교환하여 사용할 수 있었다. “클라우드cloud”라는 용어를 누가 만들었는지는
불분명하지만, 관리 프레임워크로 범용 컴퓨팅 능력을 이용하던 사람들은 스스로 자원들의 “클
라우드”를 갖추고 있다고 말하곤 했다.
이 기간에 개발된 많은 상용 및 오픈 소스 클라우드 관리 패키지 중 가장 인기 있는 제품이 바
로 오픈스택 프로젝트다. 오픈스택은 서버, 스토리지, 네트워크, 심지어 애플리케이션 자원들
의 클라우드까지도 제어하는 공통 플랫폼을 제공한다. 오픈스택은 웹 기반 인터페이스, 명령줄
인터페이스(CLI), API로 관리할 수 있다. 이 플랫폼은 특정 제조사의 하드웨어나 소프트웨어
없이도 자원들을 제어할 수 있다. 제조사 전용 구성요소들을 최소한의 노력만으로 대체할 수
있다. 그 덕분에 오픈스택은 IT 조직의 수많은 사람에게 혜택을 준다.
아마존 구매 경험을 되짚어보면 오픈스택을 이해하는 데 도움이 된다. 고객이 아마존에 로그인
311장 오픈스택 소개
하여 상품을 주문하면 그 상품이 집까지 배달된다. 그 이면에는 상품을 고객의 집까지 가능한
한 빠르고 싸게 가져다주기 위해 고도로 최적화된 단계들을 거친다. 아마존 웹 서비스Amazon Web
Services, AWS는 아마존이 설립되고 12년 후에 시작되었다. AWS는 그간의 경험을 컴퓨팅 자원을
배달하는 비즈니스로 가져왔다. 외딴 지역의 IT 부서에서 새 서버를 요청하면 몇 주가 소요되
기도 했지만, AWS에서는 신용카드와 몇 번의 마우스 클릭만으로 해결할 수 있다. 오픈스택
은 아마존과 같은 서비스 제공자와 동일한 수준의 조직화된 효율을 제공하는 것을 목표로 하고
있다.
오픈스택이란 무엇인가?
●● 클라우드/시스템/스토리지/네트워크 관리자에게 - 오픈스택은 다양한 유형의 상용 또는 오픈 소스 하드웨어
와 소프트웨어를 제어하며, 제조사 전용 자원 위에서 클라우드 관리 계층을 제공한다. 디스크와 네트워크 프로
비저닝과 같은 반복적인 수작업을 자동화한다. 사실상 가상 머신(VM)을 프로비저닝하는 모든 절차와 심지어
애플리케이션까지 오픈스택을 사용하여 자동화할 수 있다.
●● 개발자에게 - 오픈스택은 개발 환경에 사용되는 자원(가상 머신, 스토리지 등)을 제공하는 아마존 형태의 서
비스뿐만 아니라 템플릿 기반의 확장 가능한 애플리케이션을 배포하기 위한 클라우드 통합 플랫폼이다. 오픈스
택이 인프라(메모리 용량이 X인 서버 Y대)와 애플리케이션의 소프트웨어 의존성(MySQL, Apache2 등)을
확인한 후 독자들 대신 이러한 자원들을 배포하는 모습을 상상해보라.
●● 최종 사용자에게 - 오픈스택은 인프라와 애플리케이션을 위한 셀프 서비스 시스템이다. AWS에서와 마찬가
지로 사용자는 격리된 테넌트 공간에서 간단한 가상 머신 프로비저닝부터 고급 가상 네트워크와 애플리케이션
구성까지, 모든 것을 할 수 있다. 프로젝트Project라고도 알려진 테넌트Tenant는 오픈스택이 자원의 할당을 격리하
는 방식이다. 테넌트 격리는 스토리지, 네트워크, VM 격리를 포함하므로 최종 사용자는 전통적인 가상 서버 환
경에서보다 더 많은 자유를 누릴 수 있다. 원하는 자원을 원하는 시기에 원하는 방식으로 쉽게 프로비저닝하고,
이를 할당받아 사용하는 최종 사용자의 모습을 상상해보라.
가상 머신과 테넌트
이 책에서 가상 머신은 물리 머신(서버)을 에뮬레이션한 인스턴스를 의미한다. 가상 머신은 물
리 머신과 동일한 기능을 수행하며, 운영 체체 관점에서는 실제 하드웨어와 구별하기 어렵게 되
어 있다. 가상 머신은 다양한 용도로 사용되나, 가상화의 목적 대부분은 성능을 희생하더라도 무
언가를 소프트웨어로 제어하는 유연성을 얻기 위함이다. 큰 그림에서 보면 오픈스택은 소프트
웨어 하이퍼바이저가 서버에 가져다준 것과 같은 수준의 운영 효율성을 데이터센터에 가져다
준다.
32 1부 시작하기
테넌트라는 용어는 오픈스택에서 특별한 의미를 지니고 있다. 정확한 의미는 이 책에서도 설명
하겠지만 당장은 “논리적으로 서로 격리된 VM들이 사용하는 할당량을 제한한quota-limited 자원의
집합”으로 생각하면 충분하다. 예를 들어, 사용자가 테넌트 A에서 네트워크를 잘못 구성하더라
도 테넌트 B는 영향을 받지 않는다.
오픈스택 재단은 수백 개의 공식 기업 스폰서와 130개국 이상에서 수만 명이 참여하는 커뮤니
티를 보유하고 있다. 이러한 커뮤니티 지원 덕분에 사람들은 오픈스택을 (리눅스와 마찬가지
로) 상용 제품에 대한 대안으로써 찾게 될 것이다. 그리고 서비스의 수준과 지원 범위 면에서
오픈스택과 견줄 만한 클라우드 프레임워크가 거의 없다는 사실을 곧 깨닫게 될 것이다. 아마
도 더 중요한 것으로, 상용 제품을 포함해도 일반적인 시스템 관리자, 개발자, 또는 아키텍트가
직접 운용할 수 있으면서 자신의 조직에 이 정도의 이득을 주는 다른 제품은 없을지도 모른다.
1.1 오픈스택이란?
클라우드 자원을 관리하고 정의하고 활용하기 위한 프레임워크인 오픈스택의 정의를 더 자세
히 알아보자. 공식 사이트(www.openstack.org)에서는 오픈스택을 “사설 및 공용 클라우드
를 만들기 위한 오픈 소스 소프트웨어”로 규정한다. 계속해서 “오픈스택 소프트웨어는 대규모
로 확장 가능한 클라우드 운영체제를 제공한다”라고 정의한다. 서버 가상화를 경험해보았다면
오픈스택을 단지 가상 머신을 제공하는 방법 중 하나라는 잘못된 결론을 성급히 내릴 수도 있
다. 가상 머신도 오픈스택 프레임워크가 제공하는 서비스는 맞지만 이것이 전부는 아니다.
[그림 1.2]는 오픈스택이 공용 및 사설 클라우드를 만들기 위해 조율하는 다양한 자원 구성요
소를 보여준다. 그림에서 보듯이 오픈스택이 이러한 자원 제공자들을 대체하지는 않는다. 오픈
스택은 프레임워크에 내장된 제어 지점들을 통해 단순히 자원 제공자들을 관리만 할 뿐이다.
331장 오픈스택 소개
그림 1.2 오픈스택은 클라우드 운영체제다.
오픈스택은 물리 및 가상 자원들을 관리한다.
사설 및
공용 클라우드
외부
네트워크
물리 가상
스토리지
서버
네트워크
회의적인 시각을 가진 경험 많은 시스템 관리자라면 앞의 정의에서 오픈스택을 단순히 “클라우
드 운영체제”라고 생각할 수도 있다. 오픈스택은 전통적인 운영체제처럼 수백 대의 서버를 부
팅 디스크에서부터 구동하여 운영체제를 올려 놓은 것과는 다르다. 오픈스택은 자원을 관리한
다는 점에서 운영체제의 특성을 공유하지만 어디까지나 클라우드 컴퓨팅이라는 맥락에서만 그
러하다.
오픈스택 클라우드에서는 다음과 같은 것을 할 수 있다.
●● 물리 및 가상 서버, 네트워크, 스토리지 시스템의 자원을 엮어서 이용할 수 있다.
●● 테넌트, 할당량qouta, 사용자 역할user role을 통해 자원의 클라우드를 효과적으로 관리할 수 있다.
●● 공통 인터페이스를 제공하여 하부 제조사 서브시스템과 관계없이 자원을 제어할 수 있다.
얼핏 보면 오픈스택이 전통적인 운영체제처럼 보이지 않지만, 다시 보면 사실 “클라우드” 자체
34 1부 시작하기
가 일반 컴퓨터처럼 보이지 않는 것이다. 한 걸음 물러서서 운영체제가 주는 기본적인 혜택을
잘 생각해봐야 한다.
운영체제 또는 최소한 하드웨어 수준의 추상화 언어(어셈블리)가 등장하기 전에는, 특정 컴퓨
터의 언어(바이너리 머신 코드)로만 프로그램을 만들었다. 그 후 전통적인 운영체제가 나타나
고 나서야 애플리케이션 코드와 하드웨어 관리 기능을 표준화할 수 있게 되었다. 이제 관리자
는 공통 인터페이스를 사용하여 하드웨어를 관리할 수 있고, 개발자는 공통 시스템을 위한 코
드를 작성할 수 있으며, 사용자는 하나의 사용자 인터페이스만 익히면 된다. 이는 어떤 하드웨
어를 사용하든 운영체제만 동일하면 적용되는 사실이다. 컴퓨터의 발달 과정에서 운영체제의
발전과 확산으로 인해 시스템 엔지니어링과 시스템 관리라는 분야가 생겨났다.
[그림 1.3]은 현대 컴퓨터 시스템에서의 다양한 추상화 계층을 보여준다.
그림 1.3 컴퓨터의 추상화 계층
프로세서 전용
아키텍처
기계 코드
일반적인 추상화 계층
일반적인 계층별 접근 방식
명령어 집합
아키텍처
어셈블리
운영체제
바이트코드
가상 계층
제조사 API
오픈스택
오픈스택 API
과거에 운영체제가 막 등장했을 때 운영체제를 사용하면 하드웨어를 직접 제어할 수 없다는 개
념을 좋아하지 않던 개발자들이 있었다. 마찬가지로 서버를 가상화하면 밑단의 하드웨어와 운
영체제에 대한 제어권을 잃게 된다고 생각하고 서버 가상화를 좋아하지 않는 시스템 관리자들
도 있다. 기계 코드에서 어셈블리를 거쳐 가상화 계층까지 이어지는 이러한 일련의 변화에서
우리는 하부 계층에 대한 제어권을 잃은 것이 아니라, 단지 하부 계층이 추상화를 통해 표준화
되었을 뿐이다. 고도로 최적화된 하드웨어와 운영체제는 변함없이 존재하며, 이 계층들 사이에
하드웨어 가상화 계층이 더해질 뿐이다.
일반적으로, 최적화를 통해 얻는 이득이 계층 사이의 번역(가상화) 비용보다 클 때 새로운 추
상화 계층이 폭넓게 채택된다. 다시 말해서, 원래의 성능을 희생함으로써 컴퓨팅 환경의 전체
351장 오픈스택 소개
적인 효용이 커지면 추상화 계층이 채택된다. 이러한 현상은 내부 아키텍처는 근본적으로 바뀌
었지만 수십 년 동안 같은 명령어 집합을 준수하는 CPU에서 가장 분명히 나타난다.
CPU를 보고 하드웨어 수준의 가상화와 실행 가변성을 떠올리는 사람은 거의 없지만, 이는 엄
연한 사실이다. x86 프로세서의 많은 명령어가 프로세서 내부에서 가상화되고, 한편으로는 지
금은 거의 사용하지 않는 일부 복잡한 명령어가 더 단순하고 더 빠른 여러 명령어로 변환되어
실행된다. 복잡한 명령어 수준의 최적화는 이 책의 범위를 벗어나지만, 아무것도 설치되지 않
은 서버를 사용할 때조차도 어떠한 형태든 가상화가 연관되어 있고, 심지어 프로세서 수준에서
도 가상화가 존재한다는 사실을 이해하는 것이 중요하다. 이제부터는 제어권을 잃는다는 관점
에서 벗어나 인프라와 애플리케이션의 사설 및 공용 클라우드를 관리, 모니터링, 배포하기 위
한 공통 프레임워크를 사용하는 쪽으로 시선을 옮겨보자. 이러한 진화의 단계를 거쳐 오픈스택
이 등장했다.
CPU 추상화와 가상화의 역사
1978년, 인텔은 8086 CPU와 함께 x86 명령어 집합instruction set을 시장에 선보였다. 이 명령어
집합은 인텔의 이전 CPU인 8080 프로세서와 호환되었다. 프로세서 구조는 변했지만 기존 어셈
블리 명령어를 그대로 사용할 수 있었다. 그 후로도 새로운 “프로세서 확장 기능”이 추가되고 클
럭 사이클이 증가되었지만 기존 명령어들은 여전히 남아 있었다.
시장은 계속해서 더 빠른 프로세서를 원했고 프로세서 세대 간의 소프트웨어 상호운용성 보장에
대한 요구도 커졌다. CPU 설계자들은 더 낮은 추상화 수준에서 최적화하되 명령어 수준의 호환
성(표준화)은 유지하는 유연성을 원했다. 이런 추상화 덕분에 설계자들은 하드웨어 구조를 마음
대로 변경할 수 있었기에 CPU는 세대를 거듭하며 클럭 속도를 크게 증가시킬 수 있었다. 1995
년에 등장한 펜티엄 프로는 마이크로 옵mirco-op 디코딩이라는 개념을 도입했다. 이 방식에서는
실행에 한 클럭 사이클이 필요한 특정 명령어가 단순한 명령어 여러 개로 변환되어 여러 사이클
을 소비하기도 했다.
마이크로 옵 외에도 펜티엄 프로 프로세서는 명령어들의 비순차 실행out-of-order execution과 메모
리 가상화(32비트 버스로 36비트의 메모리 주소를 지정)를 통한 최적화를 도입했다. 그러나 이
모든 것은 개발자로부터 완전히 추상화되어 같은 애플리케이션을 프로세서 제조사나 세대와 관
계없이 실행할 수 있었다. 이러한 명령어 호환성은 최신 x86_64 프로세서까지 계속 이어지고
있다.
36 1부 시작하기
1.2 클라우드 컴퓨팅과 오픈스택 이해하기
이 책은 오픈스택을 이용하여 사설 기업용 클라우드를 배포하는 것에 중점을 두고 있다. 이러
한 맥락에서 사설 클라우드를 기업이 보유하고 관리하는 인프라 자원(VM, 스토리지 등)의 모
음이라고 설명할 것이며, 이는 IaaS로도 알려져 있다. 이에 반해 공용 클라우드 IaaS 자원은
아마존 AWS, 마이크로소프트 애저Azure 등과 같은 서드 파티 서비스 제공자가 소유하고 운영
한다. 이 책의 목표는 독자들의 회사에 공용 클라우드에서와 같은 편의성과 효율성을 제공하는
것이다.
사설 대 공용 클라우드의 경제학
재정적인 면에서 사설 클라우드는 일반적으로 자본 비용인 반면에 공용 클라우드는 대개 운영
비용으로 볼 수 있다. 사설 클라우드 환경에서 기업들은 일반적으로 실제 사용 여부와 관계없이
고정 인프라를 구매하거나 일정 기간 대여한다는 점을 고려하면 이 구분은 이해하기 쉽다. 공용
클라우드에서 비용은 일반적으로 시간당 사용량(전원이 켜지고 프로비저닝되면 비용을 지불하
나, 전원이 꺼지고 소멸되면 비용을 지불하지 않는다) 및 통신 비용과 직접적인 관계가 있다.
기업이 사설 클라우드를 선택할지 공용 클라우드를 선택할지는 보통 그 기업의 IT 업무의 규모
나 범위와 관련이 있다. 기술적인 구조와 자원을 다른 부서에 제공할 의무가 있는 중앙 IT 부서
는 보통 사설 클라우드를 활용하는 데 관심이 있다. 다중 테넌트multi-tenant (데이터, 구성, 사용
자 관리가 테넌트별로 논리적으로 격리된다)를 지원하고 완전히 조직화된 사설 클라우드를 통
해 중앙 IT 부서는 사설 클라우드 서비스 중개자가 될 수 있다.
다중 테넌시와 완전한 오케스트레이션
다중 테넌시multi-tenancy란 부서별로 컴퓨팅 자원들을 관리할 수 있는 클라우드 플랫폼의 능력을
의미한다. 예를 들어 마케팅 부서는 공유 자원(VM X개, 용량이 Y인 스토리지 등)의 일부를 할
당받을 수 있으며 이 할당된 자원 내에서 마케팅 부서는 중앙 조직과의 상호작용 없이 자원을 프
로비저닝할 수 있다. 이와 유사하게 완전한 오케스트레이션orchestration이란 애플리케이션 의존성
에 연계하여 자원을 할당하는 능력을 말한다. 예를 들어 웹 서버와 데이터베이스 서버에 의존성
이 있는 회계 애플리케이션은 계획에 따라 이러한 환경에 배포할 수 있다. 따라서 마케팅 부서
371장 오픈스택 소개
는 자신의 자원을 스스로 관리할 수 있을 뿐만 아니라 인프라(VM)와 애플리케이션(MySQL,
Apache2, 사용자 지정 애플리케이션 등) 모두를 자신의 테넌트 내에 배포하는 데 플랫폼 오케
스트레이션을 사용할 수 있다.
이와 반대로 부서별 IT 조직은 대개 사설 클라우드를 비용 효율적으로 배포할 수 있는 데이터
센터 시설과 인력을 보유하고 있지 않다. 부서별 IT 조직은 비교적 적은 자원만 있으면 되니 공
용 클라우드를 활용하거나, 중앙 IT 부서가 관리하는 사설 클라우드를 이용할 수 있다.
업무상 필요에 의해 사설과 공용 클라우드 둘 다를 이용하는 경우라면 이러한 조합을 하이브리
드 클라우드hybrid cloud라고 부른다. 공용과 사설 클라우드는 모두 동일한 기술을 사용하고 동일
한 구성요소로 이루어질 수도 있지만, 둘의 사용 목적은 아주 다르다. 예를 들어 보안 유지가
목적이라면 대개 사설 클라우드를 사용한다. 계속 반복되는 작업이나 전 세계를 대상으로 하여
한 기업이 부담하기에는 과도한 비용이 드는 작업에는 공용 클라우드를 사용하는 것이 일반적
이다.
이 책에서는 오픈스택을 사설 클라우드용으로 사용하는 데 중점을 두고 있지만, 내용 중 많은
부분이 오픈스택 API를 기반으로 하는 공용 클라우드 서비스에도 해당한다.
1.2.1 추상화와 오픈스택 API
기본적으로 오픈스택은 광범위한 제조사의 하드웨어와 소프트웨어 자원을 제어하기 위한 공통
API를 추상화하여 제공한다. 오픈스택은 두 가지 매우 중요한 기능을 제공한다.
●● 하드웨어와 소프트웨어 자원의 추상화 - 이를 통해 특정 구성요소가 제조사에 종속되는 것을 피할 수 있다. 이
는 제조사의 제품을 직접 사용하지 않고 오픈스택을 통해 자원을 관리하기 때문에 가능하다. 오픈스택이 제조
사의 모든 기능을 지원하지 못하는 점이 단점이지만 공통적으로 필요한 기능은 충분히 지원하고 있다.
●● 자원들 간의 공통 API - 이를 통해 연결된 구성요소들의 완전한 오케스트레이션이 가능하다.
첫 번째는 경제적인 면에서 유익한 기능이며, 두 번째는 현대의 IT 변혁에서 핵심적인 기능
이다.
다음 절에서는 오픈스택과 관련한 다른 기술들에 대해 살펴볼 것이다.
38 1부 시작하기
무엇을 알아야 하는가?
오픈스택은 확장 가능하고 하드웨어를 추상화하는 광범위한 기능을 지원한다. 오픈스택(또는
다른 클라우드 프레임워크)이 현재의 모든 사례에 다 적합한 것은 아니다. 클라우드 컴퓨팅의 장
점을 제대로 활용하기 위해서는 업무 처리 방식을 변경해야 할 수도 있다.
업무 처리 기준이 데이터센터 내의 모든 서버가 특정 작업을 위해서 특정 제조사의 기능을 사용
하는 것이라면, 이러한 접근 방식은 제조사를 추상화하는 클라우드 환경에는 적합하지 않다. 사
용자가 요청할 때마다 가상 머신을 수동으로 생성하는 식으로 업무를 처리한다면, 클라우드 셀
프 서비스라는 핵심을 놓치고 있는 것이다. 최종 사용자의 요청을 효과적으로 자동화해서 처리
하거나 최종 사용자 스스로 자원을 프로비저닝할 수 있다면, 그제서야 클라우드 컴퓨팅의 힘을
제대로 이용하고 있는 것이다.
1.3 오픈스택과 오픈스택이 제어하는 컴퓨터 자원과의 관계
지금까지 오픈스택이 제공하는 뛰어난 기능에 대해 알아보았다. 그렇다면 과연 오픈스택은 어
떻게 동작하는가? 오픈스택의 동작 방식을 이해하는 가장 쉬운 방법은 기업 환경에서 널리 사
용되는 다른 기술들과 오픈스택을 연관 지어보는 것이다.
이번 절에서는 오픈스택과 오픈스택이 제어하는 기본 자원(컴퓨트, 스토리지, 네트워크 등)
간의 관계를 알아볼 것이다. 곧 알게 되겠지만, 일반적으로 오픈스택은 실제 자원을 제공하지
않고 단순히 하위 계층의 자원을 제어만 할 뿐이다. [그림 1.4]에서는 가상 머신이 최종적으로
사용하는 자원을 오픈스택이 어떻게 관리하는지를 볼 수 있다.
이어지는 몇 개의 하위 절에서 하이퍼바이저가 제어하는 서버 가상화, 하드웨어와 오픈스택 서
비스가 제어하는 네트워크, 제조사와 오픈스택 서비스가 제어하는 블록 및 오브젝트 스토리지
순으로 오픈스택 자원을 구성하는 요소를 자세히 알아볼 것이다. 마지막으로 오픈스택 서비스
를 일반적으로 통용되는 클라우드 용어와 비교해서 살펴볼 것이다. 곧 알게 되겠지만 오픈스택
은 기술이나 제조사와 관계없이 자원과 서비스를 조율하는 프레임워크이다.
391장 오픈스택 소개
그림 1.4 오픈스택 자원 관리 모델
오픈스택 대시보드는
UI를 제공한다.
오픈스택 서비스
네트워크
제조사
네트워크
VM 네트워크
컴퓨트
제조사
하이퍼바이저
VM 컴퓨트
스토리지
제조사 스토리지
시스템
VM 볼륨
오픈스택은 자원을
관리한다.
제조사는 자원을
제공한다.
가상 머신이
사용한다.
1.3.1 오픈스택과 하이퍼바이저
하이퍼바이저 또는 가상 머신 모니터Virtual Machine Monitor, VMM는 가상 머신을 위해 물리 하드웨어를
에뮬레이션하는 소프트웨어다. 오픈스택 자체는 하이퍼바이저가 아니며 단지 하이퍼바이저의
동작을 제어할 뿐이다. 오픈스택은 젠서버XenServer/XCP, KVMKernel-based Virtual Machine, QEMU,
LXC, ESXi, Hyper-V 등의 다양한 하이퍼바이저를 지원한다(하이퍼바이저 지원 매트릭스
는 https://wiki.openstack.org/wiki/HypervisorSupportMatrix에서 볼 수 있다). 현재
VMware ESX, VMware ESXi, 마이크로소프트 Hyper-V가 기업 가상화 시장을 주도하고
있다. 하지만 라이선스 제한이나 비용 등의 여러 요인 때문에 오픈스택 커뮤니티는 상용 하이
퍼바이저보다는 오픈 소스 하이퍼바이저에 더 많은 지원을 해오고 있다.
40 1부 시작하기
[그림 1.5]는 물리 하드웨어 위에서 하이퍼바이저가 가상화한 자원을 오픈스택이 관리하는 모
습을 보여준다. 오픈스택은 다양한 하이퍼바이저 자원과 가상 머신을 오픈스택 클러스터에서
관리하고 조율한다.
그림 1.5 오픈스택은 하이퍼바이저를 관리한다.
오픈스택
컴퓨트
하이퍼바이저
관리
컴퓨트
서버 하드웨어가상 하드웨어
VM 컴퓨트
CPU
디스크
RAM
네트워크
가상화 환경의 규모와 관계없이 대부분의 사람이나 조직은 광범위한 기능을 지원하는 젠서버
또는 KVM 하이퍼바이저 둘 중 하나를 사용한다. 시트릭스Citrix의 제품인 젠서버는 오픈 소스
하이퍼바이저지만 시트릭스가 상용(유료) 지원 서비스를 제공한다. KVM은 리눅스 커널에 포
함되어 있어서 레드햇Red Hat, 우분투Ubuntu, 수세SUSE 등 많은 리눅스 배포판에서 KVM에 대한 상
용 지원을 제공하고 있다.
411장 오픈스택 소개
인증 문제
대규모 서비스 제공자들이 오픈스택 기반의 공용 IaaS를 제공하기 위한 준비를 시작했을 때, 하이퍼바이저
에서 동작 중인 윈도우 서버를 위한 마이크로소프트 인증이 필요하다는 것을 곧바로 인지했다. 그 당시 시트
릭스는 젠서버에 대한 마이크로소프트 인증 절차를 통과하여 고객들의 요구에 부응했다. 하지만 시트릭스가
클라우드스택CloudStack이라는 경쟁력 있는 플랫폼을 보유하고 있었음에도 많은 사용자가 젠서버를 오픈스택
의 하이퍼바이저로 사용했다. 그 이후로 많은 리눅스 배포판에서 마이크로소프트 인증 절차를 통과했고 현재
KVM을 비롯한 오픈스택이 제어할 수 있는 하이퍼바이저들은 모두 윈도우 게스트를 완벽히 지원한다.
이 책의 예제에서는 KVM을 사용할 것이다. KVM은 2007년 초반에 발표된 2.6.20 버전 이후
로 리눅스 커널에 포함되었으며 현재 오픈스택은 KVM을 완벽히 지원하고 있다. KVM은 반가
상화paravirtualization 또한 지원하는데, 이를 위해서는 가상화된 운영체제 이미지 내에서 자체적으
로 반가상화를 지원하거나 하이퍼바이저 전용 드라이버를 설치하여 반가상화 기능을 추가해야
한다. 오픈 소스 하이퍼바이저의 고질적인 문제점은 배포하고 관리하는 방법을 배우기 쉽지 않
으며, 종종 시스템, 네트워크, 애플리케이션 관리 경험까지도 필요하다는 점이다. 가상화된 자
원을 제공하는 중앙 부서에 자원을 요청할 때는 그 프로비저닝 과정에서 조직의 네트워크, 시
스템, 보안, 그리고 재정적인 부분까지 검토를 거쳐야만 한다. 이때 사용자는 일반적으로 다음
세 가지 중 하나를 선택할 수 있다.
●● 커뮤니티에서 배포한 코드를 사용한 사용자 자체 지원 - 커뮤니티에서 관리하는 소프트웨어에 대한 커뮤니티
의 지원을 받아 사용자가 직접 가상화 환경을 설계, 배포, 운영한다.
●● 커뮤니티에서 배포한 코드를 사용한 상용 지원 - 커뮤니티에서 관리하는 소프트웨어에 대해 특정 업체의 지원
을 받아 사용자 또는 업체가 가상화 환경을 책임진다.
●● 업체가 개발한 커뮤니티 프로젝트 소프트웨어를 사용한 상용 지원 - 업체가 지원하는 소프트웨어를 사용하여
일반적으로는 사용자가 가상화 환경의 운영과 업체 관리를 책임진다.
다수의 업체가 오픈스택과 KVM을 상용 지원하고 있지만, 조직 내부에서 사용하는 많은 클라
우드 환경은 상용 지원이나 인증이 필요없는 작업을 위해 구축되므로, 상용 지원을 받지 않고
KVM과 함께 오픈스택을 사용하는 것이 가장 인기 있는 방식이다. 이 책에서는 배포 환경이나
지원 방식과 상관없는 공통적으로 유용한 주제를 다룬다.
42 1부 시작하기
리눅스 컨테이너
최근 인프라 수준의 가상화 대신에 운영체제 수준의 가상화를 사용하여 오픈스택 인스턴스를 제
공하는 방식이 많은 관심을 받고 있다. 운영체제 수준의 가상화를 이용하면 단일 서버에서 다수
의 격리된 OS 인스턴스(컨테이너)를 가동할 수 있다. 그러나 이 가상화 방식은 하이퍼바이저
기술은 아니며, 컨테이너는 운영체제와 동일한 커널을 공유하며 동작한다. 컨테이너는 전full가상
화에서 필연적인 에뮬레이션 오버헤드 없이 가상의 격리 공간을 제공하는 방식이다.
운영체제 수준의 가상화 프로젝트 중 가장 인기 있는 두 가지가 바로 도커Docker (http://www.
docker.com/)와 로켓Rocket (https://github.com/coreos/rkt)이다. 컨테이너가 OS 단위의
인스턴스보다 애플리케이션 실행에 더 적합한지에 대해서는 논쟁의 여지가 남아 있지만, 분명히
컨테이너 기반 기술은 클라우드를 구축하는 데 점점 더 널리 채택될 것이다.
1.3.2 오픈스택과 네트워크 서비스
오픈스택 자체는 가상 스위치가 아니지만 여러 물리 및 가상 네트워크 장치와 가상 오버레이
네트워크를 관리할 수 있다. 하이퍼바이저의 경우에는 하이버파이저 자체적으로 제공하는 서
비스만 제한적으로 오픈스택이 제어할 수 있지만, DHCPDynamic Host Configuration Protocol나 라우팅
등의 네트워크 서비스는 오픈스택이 직접 제공한다. 그러나 하이퍼바이저에서와 마찬가지로
네트워크 서비스에서도 오픈스택은 상용이든 오픈 소스든 어떠한 하부 기술에도 종속되지 않
는다.
더 중요한 것은 네트워크 유형이나 제조사가 변경되더라도 구성 설정을 변경할 필요가 없다는
점이다. 네트워크 서비스에 특정 하드웨어, 소프트웨어, 사용자 인터페이스가 밀접하게 관련되
어 있다면 다른 제조사나 기술로 변경하는 것이 쉽지 않다. [그림 1.6]에서 보듯이 오픈스택은
이러한 인터페이스를 오픈스택 API로 추상화하고 있다.
오픈스택은 아리스타 네트웍스Arista Networks, 시스코 넥서스Cisco Nexus, 리눅스 브리지Linux Bridge,
OVSOpen vSwitch 등 많은 유형의 네트워크 기술(메커니즘)을 관리할 수 있다. 이 책에서는 오픈
스택과 OVS가 제공하는 네트워크 서비스를 사용한다. OVS는 특정 하드웨어가 필요 없고 쉽
게 구해서 사용할 수 있기 때문에 오픈스택에서 일반적으로 선택되는 스위치다. 네트워크 메커
니즘에 따라서 오픈스택이 지원하는 여러 네트워크 타입(VLAN, 터널 등)이 존재하며, 이에
대해서는 6장에서 다룬다.
431장 오픈스택 소개
그림 1.6 오픈스택은 네트워크를 관리한다.
오픈스택
네트워크
제조사
네트워크 장비
VM
네트워크
VM
컴퓨트
서버
하드웨어
1.3.3 오픈스택과 스토리지
일반적인 스토리지의 개념에서 볼 때 오픈스택 자체는 스토리지 어레이가 아니다. 오픈스택은
가상 머신이 사용하는 스토리지를 물리적으로 제공하지는 않는다.
파일 공유(NFS, CIFS 등)를 사용해본 적이 있다면 이미 “파일 기반” 스토리지를 사용해본 것
이다. 이 유형의 스토리지는 사람이 찾아보기도 쉽고 컴퓨터가 접속하기도 편리하지만, 이것은
일반적으로 블록block 스토리지라는 또 다른 유형의 스토리지를 추상화한 것이다. 블록 스토리
지는 운영체제나 파일 시스템이 주로 사용한다고 볼 수 있다.
오브젝트object 기반 스토리지라는 그다지 친숙하지 않은 또 다른 유형의 스토리지가 있다. 이
유형의 스토리지는 일반적으로 소프트웨어 API(예를 들어 GET /obj=xxx)를 통해 접근할
수 있다. 오브젝트 기반 스토리지는 파일과 블록 스토리지를 한 단계 더 추상화한 것이지만 파
일이나 블록 스토리지에서의 제한 사항이 없다. 오브젝트 기반 스토리지는 다수의 참여 노드
44 1부 시작하기
간에 쉽게 배포하고 복제할 수 있다. VM이 빠르게 접근해야만 하는 블록 스토리지와는 다르게
오브젝트 스토리지에서는 더 긴 지연 시간이 허용되기 때문에 VM의 볼륨(인스턴스에 항상 연
결되어 있음)으로는 사용되지 않는다. 오브젝트 스토리지는 볼륨과 이미지(운영체제 포함)의
백업을 저장하기 위해 일반적으로 사용한다.
먼저 오픈스택이 어떻게 블록 스토리지와 함께 동작하는지를 알아본 후 오브젝트 스토리지를
살펴볼 것이다.
블록 스토리지
오픈스택은 현재 최종 사용자를 위한 파일 기반 스토리지를 관리하지 않는다.1
[그림 1.7]에서
오픈스택이 하이퍼바이저와 네트워크를 관리하는 것과 매우 유사하게 블록 스토리지를 관리하
는 것을 볼 수 있다.
그림 1.7 오픈스택은 블록 (VM) 스토리지를 관리한다.
네트워크 스토리지
오픈스택
서버 하드웨어
제조사
네트워크
제조사
스토리지 시스템
VM
네트워크
VM
컴퓨트
VM
볼륨
1  옮긴이_ 오픈스택 주노 버전부터 공유 파일 서비스인 마닐라(Manila) 프로젝트가 추되었다.
451장 오픈스택 소개
이 그림은 기본적인 VM의 자원 관리 측면에서 완전한 그림을 보여준다. 오픈스택은 세프Ceph,
델Dell, EMC, HP, IBM, 넷앱NetApp 등의 다양한 제조사가 제공하는 스토리지 솔루션을 관리할
수 있다. 하이퍼바이저와 네트워크에서와 마찬가지로 오픈스택은 어떠한 구성 설정 변경 없이
스토리지 제조사와 기술을 변경할 수 있는 유연성을 제공한다.
오브젝트 스토리지
오픈스택 자체가 (VM 부팅용) 블록 스토리지를 위한 스토리지 어레이는 아니지만 오브젝트
스토리지를 제공하는 능력을 기본적으로 가지고 있다. 어떠한 다른 소프트웨어 없이 오픈스택
이 지원하는 리눅스를 구동할 물리 하드웨어만 있다면 오픈스택은 분산 오브젝트 스토리지 클
러스터를 제공할 수 있다. 이 유형의 스토리지는 볼륨 백업을 저장하기 위해 사용할 수 있으며,
또한 바이너리 객체로 분류될 수 있는 대량의 데이터를 위해 사용하는 것이 일반적이다. [그림
1.8]은 오픈스택 환경에 포함된 기본 오브젝트 서버 배포 환경을 보여준다.
그림 1.8 오픈스택은 오브젝트 기반 (API) 스토리지를 제공한다.
오픈스택
프록시
노드
스토리지
노드
스토리지
노드
스토리지
노드
오브젝트 스토리지를 단일 장소에만 두어서는 안 된다. 실제로 서로 간에 복제를 하는 다수의
노드(프록시와 스토리지)를 다수의 장소에 둘 수 있다.
46 1부 시작하기
일반적으로 오브젝트 스토리지는 문서나 파일과 같이 사용자를 대신하여 애플리케이션이 접근
하는 데이터를 저장하는 데 사용한다. 오픈스택 환경에서 오브젝트 스토리지를 사용하는 사례
가 많이 있다. 예를 들어, 오브젝트 스토리지는 VM 이미지의 저장소로 흔히 사용된다. VM이
이 스토리지를 직접 사용한다는 의미는 아니지만, VM은 이 스토리지에 저장된 데이터에서 프
로비저닝된다. 프로비저닝 과정에서는 임의의 데이터에 접근할 때의 지연 시간이 크게 중요하
지 않기 때문에 이는 합리적인 선택이다. 또한 오브젝트 스토리지는 VM의 스냅샷을 장기간 백
업해두는 용도로 사용할 수도 있다.
1.3.4 오픈스택과 클라우드 용어
오픈스택은 클라우드 구축을 위한 프레임워크며 공용 및 사설 클라우드를 구축하기 위해 사용
한다. 공용과 사설 클라우드의 정의 외에도 “as-a-service”라는 클라우드의 목적이 존재한
다. 오픈스택은 어떤 “as-a-service”인가? 오픈스택은 여러 가지 “as-a-service” 클라우드
를 위한 토대로 사용할 수 있다.
VM과 스토리지 자원을 확보하기 위한 아마존 형태의 서비스를 독자들의 회사에 제공하고자
한다. 이것은 IaaSInfrastructure as a Service로 간주된다. 이 상황에서 사용자에게는 개별 가상 머신을
직접 프로비저닝하고 관리할 수 있는 접근 권한이 주어진다. 사용자는 클라우드를 구성하는 물
리 구성요소를 볼 수는 없지만 가상 구성요소에는 직접 접근할 수 있다. 오픈스택은 자원을 제
어하여 최종 사용자에게 인프라를 제공하는 책임만 진다.
이제 클라우드 사용자에게 IaaS 기능에 대한 직접 접근 권한은 주지 않고 오픈스택이 제공하고
지원하는 애플리케이션 오케스트레이션 기능에 대한 접근 권한만 부여한다고 가정하자. 이 상
황에서 오픈스택은 PaaSPlatform as a Service를 제공하는 백엔드back end로 간주할 수 있다. 사용자는
하부에 존재하는 물리 및 가상 인프라 구성요소를 볼 수 없다. 개발팀이 소프트웨어 테스트를
위한 서버와 네트워크 인프라(IaaS 위에 애플리케이션을 배포)를 요청하는 경우를 생각해보
자. 테스트용 플랫폼을 배포하기 위한 백엔드로 오픈스택을 사용하여 클라우드 오케스트레이
션을 할 수 있다.
이제 오픈스택이 제공하는 IaaS 또는 PaaS를 사용하는 고객에게 특정 서비스를 제공한다고 가
정해보자. 이 상황에서 오픈스택은 SaaSSoftware as a Service의 백엔드 구성요소로 역할을 한다. 보
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기
『오픈스택 인 액션』 - 맛보기

More Related Content

What's hot

Best Practices for Enabling Speculative Execution on Large Scale Platforms
Best Practices for Enabling Speculative Execution on Large Scale PlatformsBest Practices for Enabling Speculative Execution on Large Scale Platforms
Best Practices for Enabling Speculative Execution on Large Scale Platforms
Databricks
 

What's hot (19)

Apache Spark Core – Practical Optimization
Apache Spark Core – Practical OptimizationApache Spark Core – Practical Optimization
Apache Spark Core – Practical Optimization
 
MySQL Community and Commercial Edition
MySQL Community and Commercial EditionMySQL Community and Commercial Edition
MySQL Community and Commercial Edition
 
struja
strujastruja
struja
 
Primena nuklearne energije
Primena nuklearne energijePrimena nuklearne energije
Primena nuklearne energije
 
DB12c: All You Need to Know About the Resource Manager
DB12c: All You Need to Know About the Resource ManagerDB12c: All You Need to Know About the Resource Manager
DB12c: All You Need to Know About the Resource Manager
 
Vodik
VodikVodik
Vodik
 
JHipster on AWS
JHipster on AWSJHipster on AWS
JHipster on AWS
 
Astrofizika Sunca
Astrofizika SuncaAstrofizika Sunca
Astrofizika Sunca
 
Data Orchestration for AI, Big Data, and Cloud
Data Orchestration for AI, Big Data, and CloudData Orchestration for AI, Big Data, and Cloud
Data Orchestration for AI, Big Data, and Cloud
 
Планике у Србији
Планике у СрбијиПланике у Србији
Планике у Србији
 
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCI
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCIDatabase Cloud Services Office Hours - 0421 - Migrate AWS to OCI
Database Cloud Services Office Hours - 0421 - Migrate AWS to OCI
 
Integrate ManifoldCF with Solr
Integrate ManifoldCF with SolrIntegrate ManifoldCF with Solr
Integrate ManifoldCF with Solr
 
Best Practices for Enabling Speculative Execution on Large Scale Platforms
Best Practices for Enabling Speculative Execution on Large Scale PlatformsBest Practices for Enabling Speculative Execution on Large Scale Platforms
Best Practices for Enabling Speculative Execution on Large Scale Platforms
 
Final field semantics
Final field semanticsFinal field semantics
Final field semantics
 
Oracle Data Guard
Oracle Data GuardOracle Data Guard
Oracle Data Guard
 
OpenDJ - An Introduction
OpenDJ - An IntroductionOpenDJ - An Introduction
OpenDJ - An Introduction
 
Distributed tracing using open tracing & jaeger 2
Distributed tracing using open tracing & jaeger 2Distributed tracing using open tracing & jaeger 2
Distributed tracing using open tracing & jaeger 2
 
Златибор - Миличић С.
Златибор - Миличић С.Златибор - Миличић С.
Златибор - Миличић С.
 
Voda i energija vode
Voda i energija vodeVoda i energija vode
Voda i energija vode
 

Viewers also liked

[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
OpenStack Korea Community
 
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
OpenStack Korea Community
 

Viewers also liked (20)

[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
 
Swift 세미나
Swift 세미나Swift 세미나
Swift 세미나
 
오픈스택 회의록 03_한국어폰트문제에 대하여
오픈스택 회의록 03_한국어폰트문제에 대하여오픈스택 회의록 03_한국어폰트문제에 대하여
오픈스택 회의록 03_한국어폰트문제에 대하여
 
Kcd open stack
Kcd open stackKcd open stack
Kcd open stack
 
Installation Openstack Swift
Installation Openstack SwiftInstallation Openstack Swift
Installation Openstack Swift
 
[SOSCON 2016] 오픈스택을 살펴보는 오픈 소스 컨트리뷰션
[SOSCON 2016] 오픈스택을 살펴보는 오픈 소스 컨트리뷰션[SOSCON 2016] 오픈스택을 살펴보는 오픈 소스 컨트리뷰션
[SOSCON 2016] 오픈스택을 살펴보는 오픈 소스 컨트리뷰션
 
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with MicrosoftOpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
 
OpenStack and private cloud
OpenStack and private cloudOpenStack and private cloud
OpenStack and private cloud
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
 
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기
 
Open technet openstack
Open technet openstackOpen technet openstack
Open technet openstack
 
오픈스택 커뮤니티 소개 및 기술 동향
오픈스택 커뮤니티 소개 및 기술 동향오픈스택 커뮤니티 소개 및 기술 동향
오픈스택 커뮤니티 소개 및 기술 동향
 
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
 
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
 
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene
[OpenStack Days Korea 2016] Track3 - OpenStack on 64-bit ARM with X-Gene
 
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
 
[OpenStack Days Korea 2016] Track3 - 머신러닝과 오픈스택
[OpenStack Days Korea 2016] Track3 - 머신러닝과 오픈스택[OpenStack Days Korea 2016] Track3 - 머신러닝과 오픈스택
[OpenStack Days Korea 2016] Track3 - 머신러닝과 오픈스택
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
 
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
[OpenStack Days 2016] Track4 - OpenNSL으로 브로드콜 기반 네트,워크 스위치 제어하기
 
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람
 

Similar to 『오픈스택 인 액션』 - 맛보기

『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기
『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기
『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기
복연 이
 
스태커회사소개서
스태커회사소개서스태커회사소개서
스태커회사소개서
stackrinc
 
『고성능 파이썬』 - 맛보기
『고성능 파이썬』 - 맛보기『고성능 파이썬』 - 맛보기
『고성능 파이썬』 - 맛보기
복연 이
 

Similar to 『오픈스택 인 액션』 - 맛보기 (20)

『아마존 웹 서비스 인 액션』 맛보기
『아마존 웹 서비스 인 액션』 맛보기『아마존 웹 서비스 인 액션』 맛보기
『아마존 웹 서비스 인 액션』 맛보기
 
『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기
 
『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기
『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기
『9가지 사례로 익히는 고급 스파크 분석』 - 맛보기
 
오픈소스 생태계 일원으로서의 개발자(자막 버전)
오픈소스 생태계 일원으로서의 개발자(자막 버전)오픈소스 생태계 일원으로서의 개발자(자막 버전)
오픈소스 생태계 일원으로서의 개발자(자막 버전)
 
스태커회사소개서
스태커회사소개서스태커회사소개서
스태커회사소개서
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
 
​『9가지 사례로 익히는 고급 스파크 분석(2판) 』 맛보기
​『9가지 사례로 익히는 고급 스파크 분석(2판) 』 맛보기​『9가지 사례로 익히는 고급 스파크 분석(2판) 』 맛보기
​『9가지 사례로 익히는 고급 스파크 분석(2판) 』 맛보기
 
세계 전자책 시장은 어떻게 움직이는가
세계 전자책 시장은 어떻게 움직이는가세계 전자책 시장은 어떻게 움직이는가
세계 전자책 시장은 어떻게 움직이는가
 
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDTPHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
 
『고성능 파이썬』 - 맛보기
『고성능 파이썬』 - 맛보기『고성능 파이썬』 - 맛보기
『고성능 파이썬』 - 맛보기
 
[월간금융] 스마트워크 필수활용팁(1)
[월간금융] 스마트워크 필수활용팁(1)[월간금융] 스마트워크 필수활용팁(1)
[월간금융] 스마트워크 필수활용팁(1)
 
오픈소스Sw이해와가치 송상효-20160811
오픈소스Sw이해와가치 송상효-20160811오픈소스Sw이해와가치 송상효-20160811
오픈소스Sw이해와가치 송상효-20160811
 
『파이썬 라이브러리를 활용한 머신러닝』 맛보기
『파이썬 라이브러리를 활용한 머신러닝』 맛보기『파이썬 라이브러리를 활용한 머신러닝』 맛보기
『파이썬 라이브러리를 활용한 머신러닝』 맛보기
 
슬라이드쉐어
슬라이드쉐어슬라이드쉐어
슬라이드쉐어
 
sungmin slide
sungmin slidesungmin slide
sungmin slide
 
월간 리드잇(beta) 2018년 10월호
월간 리드잇(beta) 2018년 10월호월간 리드잇(beta) 2018년 10월호
월간 리드잇(beta) 2018년 10월호
 
The growth process of open source projects
The growth process of open source projectsThe growth process of open source projects
The growth process of open source projects
 
오픈스택커뮤니티와기술동향
오픈스택커뮤니티와기술동향오픈스택커뮤니티와기술동향
오픈스택커뮤니티와기술동향
 
공개Sw의 이해와 활용 2016-11-23
공개Sw의 이해와 활용 2016-11-23공개Sw의 이해와 활용 2016-11-23
공개Sw의 이해와 활용 2016-11-23
 
쉽고 빠르게 접하는 오픈스택
쉽고 빠르게 접하는 오픈스택쉽고 빠르게 접하는 오픈스택
쉽고 빠르게 접하는 오픈스택
 

More from 복연 이

『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
복연 이
 
『행복한 프로그래밍(개정판)』 - 맛보기
『행복한 프로그래밍(개정판)』 - 맛보기『행복한 프로그래밍(개정판)』 - 맛보기
『행복한 프로그래밍(개정판)』 - 맛보기
복연 이
 
『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기
복연 이
 
『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기
복연 이
 

More from 복연 이 (20)

​『골빈해커의 3분 딥러닝』 맛보기
​『골빈해커의 3분 딥러닝』 맛보기​『골빈해커의 3분 딥러닝』 맛보기
​『골빈해커의 3분 딥러닝』 맛보기
 
​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기
 
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
 
『이펙티브 디버깅』 맛보기
『이펙티브 디버깅』 맛보기『이펙티브 디버깅』 맛보기
『이펙티브 디버깅』 맛보기
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
『밑바닥부터 시작하는 딥러닝』 - 미리보기
『밑바닥부터 시작하는 딥러닝』 - 미리보기『밑바닥부터 시작하는 딥러닝』 - 미리보기
『밑바닥부터 시작하는 딥러닝』 - 미리보기
 
『행복한 프로그래밍(개정판)』 - 맛보기
『행복한 프로그래밍(개정판)』 - 맛보기『행복한 프로그래밍(개정판)』 - 맛보기
『행복한 프로그래밍(개정판)』 - 맛보기
 
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
 
『Effective Unit Testing』 - 맛보기
『Effective Unit Testing』 - 맛보기『Effective Unit Testing』 - 맛보기
『Effective Unit Testing』 - 맛보기
 
『데이터 분석을 통한 네트워크 보안』 - 맛보기
『데이터 분석을 통한 네트워크 보안』 - 맛보기『데이터 분석을 통한 네트워크 보안』 - 맛보기
『데이터 분석을 통한 네트워크 보안』 - 맛보기
 
『크리스 크로퍼드의 인터랙티브 스토리텔링』 맛보기
『크리스 크로퍼드의 인터랙티브 스토리텔링』 맛보기『크리스 크로퍼드의 인터랙티브 스토리텔링』 맛보기
『크리스 크로퍼드의 인터랙티브 스토리텔링』 맛보기
 
『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기
 
『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기『Modern PHP』 - 미리보기
『Modern PHP』 - 미리보기
 
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 구성 지도
 
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기
『프로젝트 성패를 결정짓는 데이터 모델링 이야기』 - 미리보기
 
어서 와! 번역은 처음이지?
어서 와! 번역은 처음이지?어서 와! 번역은 처음이지?
어서 와! 번역은 처음이지?
 
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
 
『게임 매니악스 액션 게임 알고리즘』 - 미리보기
『게임 매니악스 액션 게임 알고리즘』 - 미리보기『게임 매니악스 액션 게임 알고리즘』 - 미리보기
『게임 매니악스 액션 게임 알고리즘』 - 미리보기
 
『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기『안드로이드 시큐리티 인터널』 - 미리보기
『안드로이드 시큐리티 인터널』 - 미리보기
 
『임베디드 안드로이드』 - 미리보기
『임베디드 안드로이드』 - 미리보기『임베디드 안드로이드』 - 미리보기
『임베디드 안드로이드』 - 미리보기
 

『오픈스택 인 액션』 - 맛보기

  • 1.
  • 2. 상용 수준의 자체 클라우드를 구축하는 단계별 지침 오픈스택 인 액션
  • 3. 오픈스택 인 액션 : 상용 수준의 자체 클라우드를 구축하는 단계별 지침 초판발행 2016년 10월 1일 지은이 코디 범가드너 / 옮긴이 강재준, 신원석, 오성근, 이준섭, 조영준 / 펴낸이 김태헌 펴낸곳 한빛미디어 (주) / 주소 서울시 마포구 양화로 7길 83 한빛미디어(주) IT출판부 전화 02 – 325 – 5544 / 팩스 02 – 336 – 7124 등록 1999년 6월 24일 제10 – 1779호 / ISBN 978-89-6848-486-5 93000 총괄 전태호 / 책임편집 김창수 / 기획·편집 이복연 디자인 표지·내지 여동일, 조판 이경숙 영업 김형진, 김진불, 조유미 / 마케팅 박상용, 송경석, 변지영 / 제작 박성우, 김정우 이 책에 대한 의견이나 오탈자 및 잘못된 내용에 대한 수정 정보는 한빛미디어(주)의 홈페이지나 아래 이메일로 알려주십시오. 잘못된 책은 구입하신 서점에서 교환해 드립니다. 책값은 뒤표지에 표시되어 있습니다. 한빛미디어 홈페이지 www.hanbit.co.kr / 이메일 ask@hanbit.co.kr OpenStack in Action by V.K.Cody Bumgardner Original English language edition published by Manning Publications. USA. Copyright © 2015 by Manning Publications Co. Korean language edition copyright © 2016 by HANBIT Media Inc. All rights reserved. 이 책의 한국어판 저작권은 대니홍 에이전시를 통한 저작권사와의 독점 계약으로 한빛미디어(주)에 있습니다. 저작권법에 의해 한국 내에서 보호를 받는 저작물이므로 무단전재와 복제를 금합니다. 지금 하지 않으면 할 수 없는 일이 있습니다. 책으로 펴내고 싶은 아이디어나 원고를 메일 (writer@hanbit.co.kr) 로 보내주세요. 한빛미디어(주)는 여러분의 소중한 경험과 지식을 기다리고 있습니다. | 표지 설명 | 표지 그림은 “쿠탕스의 우유 짜는 여자(Milkmaid from Coutances)” 그림에서 따온 것이다. 이 그림은 루이 퀴메아Louis Curmer가 많은 예술가의 작품들을 편집해 1841년 출간한 작품집에서 가져왔다. 그 작품집의 이름은 “Les Français peints par eux-mêmes”인데, 번역하면 “스스로 그린 프랑스인”이라는 뜻이다. 모든 그림은 손으로 세밀하게 그려 채색되어 있으며, 이 작품집에 실린 다양한 그림을 보 면 200년 전의 세계의 지역, 도시, 마을, 인근 지역이 서로 문화적으로 얼마나 떨어져 있었는지를 떠올릴 수 있다. 서로 격리된 사람들은 다른 방언과 언어를 사용했다. 거리나 시골길에서 볼 수 있는 그들의 옷차림만으로도 그들이 어디에 살고 어떤 직업이나 신분을 가지고 있는지를 쉽게 알 수 있었다. 그 이후로 옷차림이 점점 바뀌어 갔고, 당시의 풍부했던 지역별 다양성도 사라져버렸다. 이제는 다른 도시나 지역은 말할 것도 없고, 다른 대륙에 사는 사람도 구분하기 어려워졌다. 문화적 다양성을 다채로운 개인의 삶과 바꾼 것일지도 모른다. 다양하고 빠르게 변하는 기술 사회를 살아가는 삶은 분명히 더욱 그러하다. 한 권의 컴퓨터 책을 다른 책과 구분하기 어려운 지금 이 시대에, 매닝은 2세기 전 각 지역의 다양한 삶을 그린 책 표지로 컴퓨터 산업의 창의성과 선도성을 찬미하고자, 이런 작품집의 그림을 다시 세상에 선보이고 있다.
  • 4. 오픈스택 인 액션 상용 수준의 자체 클라우드를 구축하는 단계별 지침
  • 5. 4 지은이 코디 범가드너 Cody Bumgardner http://codybum.com IT 산업에서 20년 넘게 IT 아키텍처, 소프트웨어 개발, 네트워크, 연구, 시스템, 보안 분야에서 기 술, 경영, 영업을 담당했다. 지난 몇 년은 클라우드 컴퓨팅과 전산 경제학을 집중적으로 연구하고, 구현하고, 강의했다. 현재는 영국 켄터키 대학교에서 컴퓨터 과학 박사 과정을 밟고 있으며, 전산 경제학과 분산 자원 관리에 집중하고 있다. 또한 캔터키 대학교의 최고 기술 아키텍트Chief Technology Architect를 역임하며 클라우드 컴퓨팅 5개년 중장기 전략과 로드맵을 수립했다. 이 로드맵은 혁신적 인 클라우드 기술의 도입 및 관련 IT 인력 구성의 변화를 서술한다. 그 계획은 학술, 연구, 건강 관 리 분야에 종사하는 40,000명 이상의 사용자를 지원하기 위한 오픈스택 사설 클라우드를 배포하는 것이 주요 내용이다. 코디는 그 중 오픈스택 사설 클라우드, 연구용 컴퓨터, 기타 클라우드 컴퓨팅 계획의 아키텍처, 재정 모델, 배포, 장기 전략을 담당하고 있다. 옮긴이 강재준, 신원석, 오성근, 이준섭, 조영준 옮긴이들은 SK텔레콤에서 길게는 10년 이상 네트워크 시스템과 IT 인프라를 구축, 관리, 운용하는 업무를 담당해오고 있다. 2G/3G/LTE 통신 인프라 및 연동 시스템을 운용해왔으며, 현재는 가상화 기반의 통신 인프라 구축/운용 및 다양한 고객 서비스를 제공하는 업무를 수행 중이다. VMware, 오픈스택 등의 솔루션을 기반으로 각종 서비스를 제공하고 있고, 작년에는 국내 최초로 가상화 기반의 LTE 코어 시스템(NFV, Network Function Virtualization)을 상용화해 운용 중이 다. 가상화 기술 기반의 통신망 상용화 프로젝트를 계속 추진하고 있으며, 효율적인 데이터센터 인 프라 관리를 위한 자동화 체계도 지속적으로 구축하고 있다. 『VMWare vSphere 6 서버 가상화 구축과 운용』(에이콘출판사, 2015)을 번역했다. 지은이•옮긴이 소개
  • 6. 5 추천의 글 노바 프로젝트의 원본 소스 코드를 살펴본 지 벌써 5년이 지났다는 것이 믿기지 않는다. 그 코드는 안소Anso 연구팀이 NASA를 위해 만들어 발표했다. 그 당시 내가 일했던 랙스페이스Rackplace는 랙스 페이스 클라우드의 차세대 동력이 될 새로운 코드를 찾고 있었다. 몇 달 후, 랙스페이스 클라우드 파 일 플랫폼의 코드를 스위프트Swift라는 오픈 소스 프로젝트로 공개했다. 이렇게 노바와 스위프트는 초기 오픈스택 프로젝트의 토대가 되었다. 그 이후로, 두 프로젝트는 상당한 변화를 겪어왔다. 많은 기능이 추가되고 성능과 확장성 면에서 많 은 개선이 이루어졌지만, 스위프트의 핵심 개발팀과 코드는 놀랍게도 그대로 남아 있다. 반면에 노 바의 소스 코드는 미약하게 시작한 것에 비해 거의 알아보지도 못할 정도로 많이 변했다. 글랜스, 신 더, 키스톤 그리고 뉴트론 같은 새로운 코드는 원래는 노바가 처리했던 기능을 제공하도록 만들어 졌다. 대규모 컴퓨팅 인프라 관리에 필수적인 기능을 처리하기 위해 이러한 새로운 소스 코드가 등장한 것 과 동시에 새로운 유형의 오픈 소스 커뮤니티가 형성되기 시작했다. 운영체제 배포와 패키징, 구성 관리, 데이터베이스 설계, 자동화, 네트워크, 스토리지 시스템에 경험이 있는 오픈 소스 개발자와 지지자들이 오픈스택 프로젝트에 기여하기 위해 모여들었다. 오픈스택 커뮤니티는 정신없이 빠른 속도로 성장했고(지금도 계속 성장하고 있다) 지구상에서 가 장 크고, 활발하고, 영향력 있는 오픈 소스 커뮤니티 중 하나가 되었다. 이러한 성공적인 커뮤니티 성장의 발판이 된 과제들을 관리하기 위해 오픈스택 재단이 만들어졌다. 설계 서밋summit과 컨퍼런스 에 전 세계에서 매년 3,500명이 넘는 기여자가 모일 정도로 그 규모가 커졌다. 커뮤니티는 소스 코드의 개발과 기여자 수의 엄청난 성장을 뒷받침하기 위해 세계적 수준의 통합 구 축 시스템을 만들었다. 현재 이 자동화 구축 시스템의 규모와 범위는 아파치나 이클립스 재단과 같 은 훨씬 오래된 오픈 소스 커뮤니티에 필적하거나 뛰어넘는 수준이다. 오픈스택 생태계는 스위프트스택SwiftStack과 피스톤 클라우드Piston Cloud 등의 신생 기업이 생겨나는 밑 거름이 되었다. HP, 미란티스Mirantis, 레드햇Red Hat 등의 기존 기업들은 오픈스택이 수익 모델이 될
  • 7. 6 수 있다고 판단하고, 오픈스택 커뮤니티의 빅 텐트big tent를 구성하는 많은 프로젝트에서 지속적으로 혁신을 이끌고 있다. 이러한 오픈스택 커뮤니티의 확장으로 인해 분산 소프트웨어 구성요소를 배포하는 방법과 상호 동 작하는 방식은 엄청나게 복잡해졌다. 오픈스택을 “백지에서” 배포하려면 네트워크와 스토리지는 물 론이고 가상화와 구성 관리까지 아우르는 전반적인 개념을 이해해야 한다. 필요한 지식과 기술을 얻 는 것은 오픈스택을 사용해 클라우드 플랫폼을 만들고 싶은 사람들이 직면하는 주요 도전 과제다. 『오픈스택 인 액션』은 독자들에게 오픈스택을 배포하고 실행하기 위해 필요한 지식을 제공한다. 저자는 복잡한 오픈스택 배포 방법을 설명하기 위해, 소프트웨어를 배포하는 세 가지 방식으로 스크 립트 방식의 데브스택DevStack, 운영체제 패키지의 수동 설치, 퓨얼Fuel 오픈스택 인스톨러를 사용한 다. 각 절에서는 네트워크와 스토리지 설정에 대한 개념을 전반적으로 설명한다. 이를 통해 독자들 은 점차 클라우드 컴퓨팅 속으로 발을 내디딜 수 있고, 이 책의 마지막쯤에는 깊은 곳까지 편하게 들 어갈 수 있을 것이다. 오픈스택 기술에 대한 뛰어난 설명 외에도, 저자는 클라우드 컴퓨팅에서 얻을 수 있는 혜택을 평가 하는 방법 또한 설명한다. 클라우드는 많은 조직에서 시간을 들여 수작업으로 처리해야 하는 문제를 마법처럼 해결해주지는 않는다. 그러나 클라우드는 효과적으로 잘 구현하면 IT 조직을 변화시키고 그들이 제공하는 서비스를 급격히 개선할 수 있다. 9장에서 저자는 가상화되어 있는 기존의 IT 인 프라를 오픈스택으로 교체하거나 내부 고객을 위한 새 사설 클라우드를 구축하려는 모든 IT 관리자 가 반드시 읽어봐야 하는 주제에 대해 이야기한다. 간단히 말해, 『오픈스택 인 액션』은 복잡한 클라우드 컴퓨팅과 오픈스택 소프트웨어 생태계에 대한 훌륭한 입문서 역할을 한다. 읽고 자신의 것으로 만들어 “스태커Stacker”가 되어보자! 오픈스택 기술 위원, 미란티스 공학 이사_ 제이 파이프스Jay Pipes
  • 8. 7 옮긴이의 말 이 책의 독자라면 클라우드 환경에 가장 적합한 기술로 주목받고 있는 오픈스택에 분명히 관심이 있 을 것이다. 2012년 오픈스택 재단이 출범한 이후, 점점 더 많은 기업이 오픈스택 기술의 발전에 동 참하고 있다. 오픈스택에는 현재 178개국에서 345개 기업이 참여하고 있으며, 그 소스 코드도 3백 5십만 라인에 이른다고 한다. 오픈스택의 사용자층도 점점 확대되고 있으며, IT 업계뿐 아니라 자 동차, 엔터테인먼트, 금융 업계에서도 속속 오픈스택 기술을 도입하고 있다. 클라우드스택CloudStack, 유칼립투스Eucalyptus 등의 경쟁 기술이 있었지만, 현재는 확장성과 모듈화를 바탕으로 제조사 및 개 발자 주도하에 급성장한 오픈스택이 대세로 떠오르는 추세다. 오픈스택 재단은 매년 새로운 버전을 두 차례 출시한다. 버전명 첫 글자는 알파벳 순서로 결정되는 데, 2010년 첫 번째 버전인 ‘오스틴Austin’부터 시작해 2014년에는 이 책에서 예제로 활용하는 ‘아이 스하우스Icehouse’가, 2015년에는 ‘킬로Kilo’와 ‘리버티Liberty’ 그리고 2016년 현재는 ‘미타카Mitaka’까지 출시되었다. 초창기에서 컴퓨트 기술을 중심으로 프로젝트가 진행되었고, 그 이후 스토리지와 네트 워크 기술과 관련한 프로젝트를 강화해오고 있다. 오픈스택의 가장 큰 장점은 오픈 소스 형태로 누구나 참여할 수 있는 개방성과 가상화 기반 자원들 을 바탕으로 다양한 인프라/서비스를 제공하는 모듈성이다. 이를 오픈스택 재단에서는 개별적인 프 로젝트로 관리하고 있으며, 프로젝트마다 고유 이름과 관련 구성요소가 존재한다. 현재 많은 주목 을 받는 IT 기술인 컨테이너 기술, 네트워크 가상화(소프트웨어 정의 네트워크) 등도 오픈스택의 이런 개방성과 모듈성 덕분에 함께 발전하고 있다. 이 책은 앞서 이야기한 가상화 기반 자원들을 가지고 컴퓨트, 스토리지, 네트워크 등 오픈스택 핵 심 구성요소를 제공하는 환경을 직접 배포해보면서 프레임워크를 이해하도록 구성되어 있다. 필요 에 따라 사용할 수 있는 다양한 배포 방식이 존재하며, 오픈스택을 간단하게 맛보고 싶다면 쉽게 배 포할 수 있는 데브스택Devstack을 설치해볼 수 있다. 오픈스택 각 구성요소의 기능과 서로 간의­상 호작용을 이해하기 위해서는 수동으로 모든 단계를 직접 설치해보는 것도 좋다. 또한 기업 환경에 서 상용 수준의 클라우드를 관리한다면 더 효율적이고 안정적인 자동화 도구를 사용해서 배포하는
  • 9. 8 방법을 익혀둘 필요가 있다. 이 책은 위의 모든 배포 방식을 설명하면서 초보자부터 고급 관리자 수 준까지 아우를 수 있도록 구성되어 있다. 실제로 이런 다양한 배포 방식으로 오픈스택을 스스로 구 성해보기란 쉽지 않다. 클라우드 관리자나 개발자, 설계자는 이 책을 통해서 매우 귀중한 경험을 해 볼 수 있을 것이다. 저자 서문에서 더 상세한 흐름을 알 수 있겠지만, 이 책에서는 오픈스택을 이해하고, 배포하고, 구 성요소를 설정하고, 오픈스택을 더욱 잘 활용하기 위한 다양한 솔루션을 접할 수 있다. 적절한 그림 과 명령어 수준까지 제공하는 예제들이 오픈스택을 구체적으로 이해하는 데 큰 도움을 줄 것이다. 순서대로 읽을 필요는 없지만, 1부는 오픈스택에 대한 기본적인 이해를 도와주고, 2부는 오픈스택 환경에 대해 더 깊게 들여다보고, 3부는 상용 환경에서 사용하는 솔루션 등을 소개한다. 이 책을 다 읽게 되면 주요 서비스 구성요소를 구성하는 방법과 이들이 서로 상호작용하는 방식을 이해하게 될 것이다. 또한 이에 대한 다양한 기반 기술(네임스페이스, OVS, LVM 등)도 언급하면서, 고급 IT 기술을 처음 접하는 독자의 이해를 돕는 실마리도 제공하고 있다. 옮긴이들 또한 KVM과 오픈스택 기반의 가상화 인프라를 직접 구축/관리해오면서 기술적인 도움 과 구조적인 지식이 필요한 상황에 자주 부딪혀왔고, 그때마다 오픈스택 공식 홈페이지, 국내외 블 로그, 읽기 어려운 해외 사이트들을 찾아다니며 문제를 해결해왔다. 그러던 중 오픈스택의 기본적인 이해뿐만 아니라 상세한 구조와 상호작용까지 체계적으로 배울 수 있는 『오픈스택 인 액션』을 번역할 기회를 얻게 되었다. 이 책은 매닝의 유명한 다른 『인 액션』 시리즈와 마찬가지로 어느 정도의 기본 지식이 필요하지만, 초보자부터 고급자까지 누구나 직접 실습해보며 익힐 수 있도록 구성되었다. 번역하기 까다로운 부분들은 더욱 쉽게 읽을 수 있도록 저자의 의도를 해치지 않는 선에서 의역하기 도 하였지만, 독자들에게 더 쉽게 전달하지 못한 점이 있을까 아쉬움이 남는다. 다음은 번역 용어나 번역 규칙 등에 대한 몇 가지 참고 사항이며, 이 책을 읽기 전에 미리 알아두는 것이 도움이 될 것이다.
  • 10. 9 ●● 오픈스택 프로젝트명과 버전명은 읽기 쉽게 하기 위해 한글로 표기했다. ●● 오픈스택 자체적으로 사용되는 다양한 용어들(tenant, quota, user role 등)은 이해에 무리가 없는 수준에 서 한글로 번역 표기하였으며, 메뉴나 스크린샷, 명령줄 등은 영문 버전 그대로 표기했다. ●● 이 책은 우분투 14.04 기반의 오픈스택 아이스하우스 버전을 사용하여 예제를 설명하고 있다. 최신 버전과는 일부 메뉴 구성이나 클라이언트 명령어 체계가 다를 수 있다. 그렇더라도 오픈스택 고유의 동작과 내부 구조를 이해하는 데는 전혀 문제가 없으며, 단지 버전상의 차이로 인한 UI나 명령어의 차이 정도만 고려하면 된다. 옮긴이들의 노력에도 불구하고, 여전히 누락되거나 잘못된 부분이 있을 수도 있으므로 추가로 확인 되는 오류나 독자들의 제보를 반영해 한빛미디어 도서정보 페이지를 통해 정오표를 제공할 것이다. 이제는 다른 팀에서 일하고 있지만 각자의 자리에서 최선을 다하고 있는 동료들께 항상 감사를 드린 다. 더욱이 이 책이 출간되기까지 적극적인 관심과 지원을 해주신 본부장 및 팀장님께도 감사를 드 린다. 마지막으로 번역 과정에서 항상 친절한 안내와 상세한 조언을 해주신 한빛미디어 관계자분들 께도 감사의 말씀을 전한다. 아무쪼록 이 책이 여전히 열악한 국내 가상화 및 IT 환경에서 고군분투하는 많은 관리자와 개발자 들에게 좋은 지침서가 되길 바란다.
  • 11. 10 지은이의 말 내가 처음으로 오픈스택을 접한 때는 켄터키 대학교에서 일하던 2011년 여름이었다. 동료이자 친 구인 브렌트 솔즈베리Brent Salisbury와 나는 제품 개발 프로젝트를 논의하기 위해 포춘 50대 기술 회사 와의 회의에 참석했다. 회의 동안 그 프로젝트의 담당 임원은 기존의 상용 도구를 가지고 일하는 것 과 오픈스택이라는 커뮤니티 프로젝트를 연구하는 것 중 하나를 선택하도록 제안했다. 당연히 우리 는 그 미지의 프레임워크로 일하는 쪽을 선택했고, 그렇게 해서 우리의 오픈스택 여정은 시작되었 다. 제품 개발 프로젝트는 무산되었지만 나중에 알고 보니 오픈스택과의 만남은 우리의 전문 분야, 학문, 경력에 큰 전환점이 되었다. 브렌트는 학교를 떠나 나중에 도커Docker에 매각된 스타트업을 공 동 창립했으며, 지금도 도커에서 일하고 있다. 반면에 나는 석사 과정을 거쳐 박사 과정으로 진학했 고 이 책을 쓰게 되었다. 2013년 초, 오픈스택 그리즐리Grizzly 버전은 현재 버전과 어느 정도 유사하긴 했지만, 급하게 개발 된 기능들이 불안정해 기업 환경에서는 상용으로 사용할 수 없었다. 기업용 오픈스택에 내 모든 것 을 걸지는 않았지만 연구용 컴퓨터는 전혀 다른 이야기다. 대학원 독립 연구 과정의 일환으로, 나는 연구용 컴퓨터에서 오픈스택을 사용하는 것에 대한 사용 사례, 아키텍처, 전략을 주제로 한 논문을 썼다. 추가로 오픈스택을 기업용 사설 클라우드 플랫폼으로 채택하는 절차도 서술했다. 나는 학술 보고서에서 [그림 0]을 사용해 구성요소별로 분산된 오픈스택을 표현했다. 코끼리를 먹을 때도 마찬가지지만 코끼리를 요리할 때도 한 번에 한 조각씩 요리해야 한다. 기술 분야에서는 “나는 스토리지 담당자야” 또는 “나는 네트워크 담당자야”라고 하면서 기술적인 고립을 당연한 것으로 받 아들이는 관례가 있는데, 이는 코끼리의 한 부분만 먹는 사람에게는 가장 중요한 가치일 수도 있다. 이 책에서 나는 코끼리를 더 쉽게 소화할 수 있도록, 알아볼 수 있을 정도로 작은 조각으로 나누어 이를 새로운 개념과 섞어보려고 노력했다. 코끼리 발을 맛보고 싶지는 않겠지만, 클라우드 컴퓨팅 을 성공적으로 도입하고 싶다면 최소한 이론적으로라도 코끼리 발이 어떻게 움직이는지는 알아두는 게 좋다.
  • 12. 11 그림 0 이 그림은 마에스트로 마르티노Maestro Martino의 16세기 저서 『요리의 예술Libro de Arte Coquinaria』의 판본에 실려 있다. 나는 이 서문을 매닝의 편집자와 처음 이야기를 나눈 지 정확히 2년 만에 쓰고 있다. 이 프로젝트를 시작했을 때는 오픈스택 기여자가 500명이 채 안 되었는데 이제는 수천 명이 되었다. 오픈스택은 가장 빠르게 성장하는 오픈 소스 커뮤니티 중 하나가 되었을 뿐 아니라 세계에서 가장 큰 여러 조직 에서 채택하고 있다. 더 중요한 것으로, 오픈스택은 이제 성숙 단계로 접어들어 사설 클라우드를 위 한 기반 역할을 할 준비가 되었다.
  • 13. 12 이 책의 주요 주제는 오픈스택을 사용해 기업의 사설 클라우드를 배포하는 것이다. 이런 맥락에서 사설 클라우드를 인프라 자원의 풀 또는 조직이 소유하고 관리하는 IaaSInfrastructure as a Service로 볼 수 있다. 이와 반대로, 공용 클라우드 IaaS 자원은 외부 서비스 제공자가 소유하고 운영한다. 재정적인 면에서 사설 클라우드는 일반적으로 자본 비용인 반면에, 공용 클라우드는 대개 운영 비용 으로 볼 수 있다. 사설 클라우드 환경에서 기업들은 일반적으로 실제 사용 여부와 관계없이 고정 인 프라를 구매하거나 일정 기간 동안 대여한다는 점을 고려하면 이 구분은 이해하기 쉽다. 공용 클라 우드에서 비용은 일반적으로 시간당 사용량 및 통신 비용과 직접적인 관계가 있다. 기업이 사설 클라우드를 선택할지 공용 클라우드를 선택할지는 보통 그 기업의 IT 업무의 규모나 범위와 관련이 있다. 기술적인 구조와 자원을 다른 부서에 제공해야 하는 중앙 IT 부서는 보통 사설 클라우드를 활용하는 데 관심이 있다. 다중 테넌트multi-tenant를 지원하고 완전히 조직화된 사설 클라 우드는 기업의 IT 자원 관리의 효율성을 크게 높여준다. 이러한 면에서 기업의 IT 부서는 클라우드 중개자가 될 수 있다. 이와 반대로 부서별 IT 조직은 대개 비용 효율적으로 사설 클라우드를 배포할 수 있는 데이터센터 시설과 인력을 보유하고 있지 않다. 부서별 IT 조직은 비교적 적은 자원만 필요 로 하기 때문에 종종 공용 클라우드 자원을 이용할 수 있다. 가능한 경우에는 기업의 IT 부서가 관 리하는 사설 클라우드 자원을 사용할 수도 있다. 작업 부하에 따라 사설과 공용 클라우드를 함께 사 용하면 이를 하이브리드 클라우드라고 한다. 클라우드와 이를 활용하는 조직의 유형은 다를지라도, 클라우드 자체는 동일한 기술을 사용해 구축 할 수 있다. 반면, 클라우드 자원을 구성하는 재료는 동일할 수 있지만, 그 조리법과 사용 방법은 매 우 다를 수 있다. 오픈스택은 사설 및 공용 클라우드 모두를 구성하기 위한 강력한 프레임워크를 제공한다. 기본적으 로 오픈스택은 클라우드를 구축할 때 사용하는 하드웨어와 소프트웨어를 위한 공통 API를 추상화 해 제공한다. 오픈스택 프레임워크는 매우 중요한 다음의 두 가지 기능을 제공한다. 이 책에 관하여
  • 14. 13 ●● 특정 구성요소의 제조사 종속을 방지하는 하드웨어 및 소프트웨어 자원의 추상화 ●● 연결 구성요소를 완전히 오케스트레이션할 수 있는 여러 자원 간의 공통 API 첫 번째 기능은 경제적인 면에서 좋고 두 번째는 현대 IT 변혁의 핵심이다. 오픈스택은 기업의 IT를 위해 클라우드 배포 환경에 혁신적인 수준의 효율성을 가져다줄 수 있다. 왜 『오픈스택 인 액션』인가? 이 책은 컴퓨팅 자원의 클라우드를 구축하기 위한 단계별 상향식 가이드를 제공한다는 목적으로 계 획되었다. 예상 독자는 오픈스택 환경 배포에 관심이 있는 연구원, 관리자, 학생이다. 기본적인 리눅 스 작업 방법만 알고 있으면 어떠한 기술적인 사전 요구사항도 없고, 매우 다른 배경과 기술력을 가 졌더라도 누구나 쉽게 이해할 수 있도록 만들었다. 이처럼 오픈스택은 많은 사례에서 적합하다. 오픈스택 프레임워크를 활용하는 사례는 다양하지만 사설 클라우드의 요구사항과 설계는 서비스 제 공자마다 매우 다를 수 있다. 기업은 조직 내부에 자체 보유한 사설 자원들을 묶은 클라우드를 제공 하는 데 관심이 있다. 이런 사설 클라우드는 추가적인 서비스를 제공하지는 않는다. 하지만 조직이 컴퓨팅 자원을 제공하는 방식을 변화시킬 수는 있다. 이 책은 다음과 같은 내용을 담고 있다. ●● 단일 노드 개발 환경에서 오픈스택을 자동 배포하는 방법 ●● 다중 노드 환경에서 오픈스택을 단계적으로 수동 배포하는 방법 ●● IT 운영 관점에서 사설 클라우드 기술(오픈스택, 세프, 주주 등)이 주는 혜택 ●● 제조사가 제공하는 자동 배포 및 관리 도구를 사용한 상용 오픈스택 환경 배포 이 책에서 다루는 아키텍처는 소규모(노드 5개 정도)에서 대규모(노드 100개 이상)까지 기업 사 설 클라우드 배포 환경에 적합하다. 또한, 12장에서는 오픈스택 히트Heat나 우분투 주주Ubuntu Juju와 같은 애플리케이션 오케스트레이션 도구를 사용하는 방법을 살펴볼 것이다. 이 책은 사설 클라우드 기술과 그 기술을 배포하고 운영하는 방법과 더불어 클라우드 오케스트레이
  • 15. 14 션이 전통적인 IT에 미치는 장기적인 영향을 이해할 수 있도록 꾸몄다. 이 책은 독자들의 회사에 오 픈스택 사설 클라우드를 배포하도록 설득력 있는 주장을 할 수 있게 해주고, 사설 클라우드를 배포 할 수 있는 기술 지식을 습득하는 데 도움을 줄 것이다. 알아두어야 할 가장 중요한 것은 오픈스택 사설 클라우드가 단순히 또 다른 가상화 도구는 아니라는 점이다. 오픈스택은 기존의 가상화 도구를 활용해 클라우드를 구축하고 관리하기 위한 하나의 프레 임워크다. 독자들은 클라우드를 구축하고 관리하고 조직화하는 방법을 배울 수 있을 것이다. 기술 적인 면에서는 오픈스택의 구성요소와 이를 뒷받침해주는 기술, 특히 오픈스택 컴퓨트, 네트워크, 블록 스토리지, 대시보드, API 구성요소를 이해할 수 있을 것이다. 이 책의 구성 이 책은 3부로 구성되어 있다. 1부(1~4장)에서 오픈스택을 처음 만나고, 2부(5~8장)에서는 오 픈스택 생태계를 깊이 들여다보고, 마지막 3부(9~12장)에서는 상용 환경에서 오픈스택을 사용할 준비를 할 것이다. 1장은 오픈스택 클라우드 운영체제, 오픈스택 프레임워크의 개발 목적, 오픈스택이 할 수 있는 것을 소개한다. 2장에서는 간이 배포 도구와 최소한의 인프라를 사용해 오픈스택을 체험해볼 것이다. 또한 오픈스 택 대시보드 UXUser eXperience를 보여주고 오픈스택 프레임워크를 학습하면서 사용하는 일반적인 작 업 방법을 알려줄 것이다. 마지막에는 직접 만든 오픈스택 환경에서 가상 머신을 프로비저닝해볼 것 이다. 3장은 2장에서 구성한 환경을 사용해 오픈스택 명령줄 인터페이스(CLI)를 소개한다. 새 테넌트(프 로젝트), 사용자, 역할, 내부 네트워크를 만들어보면서 기본 오픈스택 작업 방법을 살펴볼 것이다. 4장에서는 오픈스택을 사용하는 방법부터 시작해 구성요소별 기능과 전체 오픈스택 프레임워크 내 에서의 서로 간의 상호작용을 살펴볼 것이다. 오픈스택을 다중 노드 환경에 배포하기 위한 준비 과
  • 16. 15 정으로 몇 가지 클라우드 설계 방법도 둘러본다. 이 장은 오픈스택 구성요소들이 함께 맞물려 돌아 가는 방식과 제조사 자원과의 관계를 다룬다. 5~8장은 주요 프로젝트마다 하나의 장씩 할애해 개별 오픈스택 프로젝트를 자세히 다룬다. 또한 다중 노드 환경에서 오픈스택을 수동 배포하는 방법을 안내할 것이다. 이를 통해 오픈스택 생태계에 서 각 구성요소가 동작하는 방법과 원리를 이해할 수 있을 것이다. 추가로 수동 배포를 직접 해보면 서 문제 해결 경험도 얻을 수 있을 것이다. 9장은 상용 오픈스택 배포와 관련한 설계, 구조, 전략을 결정하는 방법을 다룬다. 10장에서는 세프 Ceph 스토리지의 기본적인 배포와 작업 방법을 다룬다. 11장에서는 퓨얼Fuel을 이용한 고가용성 오픈 스택 자동 배포 방법을 살펴볼 것이다. 마지막으로, 12장은 오픈스택 히트와 우분투 주주를 이용한 클라우드 오케스트레이션 방법을 다룬다. 누가 이 책을 읽어야 하는가? 이 책은 오픈스택을 사용해 사설 클라우드 환경을 배포하는 데 관심이 있는 인프라 전문가, 엔지니 어, 아키텍트, 지원 인력에 적합하다. 경영진과 전략적 역할을 하는 사람에게도 가치가 있지만, 전 체적인 내용은 기술 분야의 독자에게 맞춰져 있다. 기본적인 리눅스 지식 외에는 어떠한 기술적인 사전 지식도 필요하지 않다. 예제 소스 내려받기 이 책의 예제 소스는 아래에서 내려받을 수 있다. ●● https://github.com/codybum/OpenStackInAction ●● http://www.hanbit.co.kr/exam/2486
  • 17. 16 감사의 말 이 책은 나의 박사 과정 지도 교수이자 친구인 빅터 W. 마렉Victor W. Marek의 도움이 없었다면 존재할 수 없었을 것이다. 항상 힘이 되어준 그의 격려와 믿음에 꼭 보답하고 싶다. 내가 이번에 직접 책을 만드는 경험을 하지 못했다면 그 과정에서 드는 노력은 결코 상상하지도 못했을 것이다. 이런 노력의 결과가 결실을 맺을지 여부는 독자가 결정하겠지만, 여러 비평가, 편집 자, 기고자 분들이 좋은 품질의 책을 위해 들인 시간과 노력은 의심할 여지가 없다. 이 책을 쓰면서 다른 출판사의 여러 책에 기고도 하고 리뷰도 해보았지만, 매닝은 가능한 한 최고의 작품을 만들어 내기 위해 최선을 다하고 있다고 자신 있게 말할 수 있다. 특히, 지속적으로 개선을 추진하면서 이 책의 대부분을 담당한 개발 편집자인 수잔 코넌트의 지칠 줄 모르는 작업에 고마움을 전하고 싶다. 또한 발행자인 마쟌 베이스를 비롯해 메리 피어지스, 신시아 케인, 앤디 캐롤, 케이티 테넌트 외에 도 보이지 않는 곳에서 일하는 많은 분과 편집팀 및 제작팀의 모든 분께 감사를 드린다. 이 책을 만 드는 동안 기술 편집을 해준 빌 브런스, 앤디 힐, 마이클 키드, 제프 림, 파브리치오 소펠사에게도 많은 감사를 드린다. 마지막으로, 이 책의 원고를 읽고 많은 제안을 해준 앤디 키르슈, 크리스 스노 우, 페르난도 로드리게스, 하피주르 라만, 제프 림, 코즈마스 차치미샬리스, 맷 하팅, 마유르 파틸, 마이클 함라, 피유시 마하시, 토비 라자르 모두에게 감사드린다. 우리 두 아이를 돌보면서 나의 출장, 졸업, 이 책, 그리고 다른 작업까지도 뒷바라지해주기 위해 맡 은 몫보다 훨씬 많은 것을 해준 나의 아내 새라에게 특별한 감사를 전한다. 비록 논문과 발표 자료와 책에는 내 이름이 적혀 있지만, 우리 가족이 함께 사용하는 성(姓)도 언제나 그 안에 남아 있을 것 이다. 새라! 시드니! 잭! 함께 보내지 못한 시간과 활동에 대해 미안! 내가 우리 가족을 자랑스러워 하는 것처럼 우리 가족도 나를 자랑스러워 하길 바란다. 우리 가족 모두를 사랑한다.
  • 18. 17 CONTENTS 지은이·옮긴이 소개   ................................................................................................ 4 추천의 글  ................................................................................................................ 5 옮긴이의 말  ............................................................................................................. 7 지은이의 말  ........................................................................................................... 10 이 책에 대하여  ....................................................................................................... 12 PART I 시작하기 CHAPTER 1 오픈스택 소개 1.1 오픈스택이란? ........................................................................................................... 32 1.2 클라우드 컴퓨팅과 오픈스택 이해하기 ............................................................................ 36 1.2.1 추상화와 오픈스택 API ...................................................................................... 37 1.3 오픈스택과 오픈스택이 제어하는 컴퓨터 자원과의 관계 ..................................................... 38 1.3.1 오픈스택과 하이퍼바이저 .................................................................................... 39 1.3.2 오픈스택과 네트워크 서비스 ................................................................................ 42 1.3.3 오픈스택과 스토리지 .......................................................................................... 43 1.3.4 오픈스택과 클라우드 용어 ................................................................................... 46 1.4 오픈스택 구성요소 소개 ............................................................................................... 47 1.5 오픈스택의 역사 ......................................................................................................... 48 1.6 요약 ......................................................................................................................... 49
  • 19. 18 CHAPTER 2 오픈스택 맛보기 2.1 데브스택이란 무엇인가? .............................................................................................. 52 2.2 데브스택 배포하기 ...................................................................................................... 54 2.2.1 서버 생성하기 ................................................................................................... 57 2.2.2 서버 환경 준비하기 ............................................................................................ 58 2.2.3 데브스택 준비하기 ............................................................................................. 60 2.2.4 데브스택 실행하기 ............................................................................................. 62 2.3 오픈스택 대시보드 사용하기 ......................................................................................... 72 2.3.1 [Overview] 화면 ............................................................................................... 74 2.3.2 [Access Security] 화면 ................................................................................. 75 2.3.3 [Images Snapshots] 화면 ............................................................................. 79 2.3.4 [Volumes] 화면 ................................................................................................ 84 2.3.5 [Instances] 화면 .............................................................................................. 86 2.4 첫 번째 사설 클라우드 서버에 접속하기 .......................................................................... 91 2.4.1 인스턴스에 유동 IP 할당하기 ............................................................................... 92 2.4.2 유동 IP에 네트워크 트래픽 허용하기 ..................................................................... 93 2.5 요약 ......................................................................................................................... 94 CHAPTER 3 오픈스택 기본 작업 방법 3.1 오픈스택 CLI 사용하기 ................................................................................................ 96 3.2 오픈스택 API 사용하기 ................................................................................................ 99 3.3 테넌트 모델 운용 ...................................................................................................... 101 3.3.1 테넌트 모델 .................................................................................................... 101 3.3.2 테넌트, 사용자, 역할 생성하기 ............................................................................ 104 3.3.3 테넌트 네트워크 .............................................................................................. 109 CONTENTS
  • 20. 19 3.4 할당량(Quota) ......................................................................................................... 127 3.4.1 테넌트 할당량 ................................................................................................. 128 3.4.2 테넌트 사용자 할당량 ....................................................................................... 130 3.4.3 기타 할당량 .................................................................................................... 132 3.5 요약 ....................................................................................................................... 134 CHAPTER 4 사설 클라우드 구성요소 이해하기 4.1 오픈스택 구성요소에는 어떤 관계가 있는가? .................................................................. 136 4.1.1 구성요소 간 통신 이해하기 ................................................................................ 136 4.1.2 분산 컴퓨팅 모델 ............................................................................................. 143 4.2 오픈스택은 제조사 기술과 어떤 관련이 있는가? .............................................................. 148 4.2.1 오픈스택에서 제조사 스토리지 시스템 사용하기 .................................................... 149 4.2.2 오픈스택에서 제조사 네트워크 시스템 사용하기 .................................................... 154 4.3 수동 배포는 왜 해보는가? .......................................................................................... 164 4.4 요약 ....................................................................................................................... 164 PART II 오픈스택 수동 배포하기 CHAPTER 5 컨트롤러 배포하기 5.1 컨트롤러의 사전 준비 사항 배포하기 ............................................................................ 169 5.1.1 환경 준비하기 ................................................................................................. 170 5.1.2 네트워크 인터페이스 구성하기 ........................................................................... 171 5.1.3 패키지 갱신하기 .............................................................................................. 175 5.1.4 의존 소프트웨어 설치하기 ................................................................................. 176
  • 21. 20 5.2 공유 서비스 배포하기 ................................................................................................ 181 5.2.1 아이덴티티 서비스(키스톤) 배포하기 ................................................................... 182 5.2.2 이미지 서비스(글랜스) 배포하기 ......................................................................... 194 5.3 블록 스토리지(신더) 서비스 배포하기 ............................................................................ 204 5.3.1 신더 데이터 저장소 생성하기 ............................................................................. 205 5.3.2 신더 키스톤 사용자 생성하기 ............................................................................. 206 5.3.3 신더 서비스와 엔드포인트 생성하기 .................................................................... 207 5.3.4 신더 설치하기 ................................................................................................. 209 5.4 네트워크(뉴트론) 서비스 배포하기 ................................................................................ 211 5.4.1 뉴트론 데이터 저장소 생성하기 .......................................................................... 212 5.4.2 뉴트론 키스톤 사용자 구성하기 .......................................................................... 213 5.4.3 뉴트론 설치하기 .............................................................................................. 215 5.5 컴퓨트(노바) 서비스 배포하기 ...................................................................................... 218 5.5.1 노바 데이터 저장소 생성하기 ............................................................................. 219 5.5.2 노바 키스톤 사용자 구성하기 ............................................................................. 219 5.5.3 ‘nova’ 사용자에게 역할 할당하기 ....................................................................... 220 5.5.4 노바 서비스와 엔드포인트 생성하기 .................................................................... 221 5.5.5 노바 컨트롤러 설치하기 .................................................................................... 222 5.6 대시보드(호라이즌) 서비스 배포하기 ............................................................................. 225 5.6.1 호라이즌 설치하기 ........................................................................................... 225 5.6.2 호라이즌 접속하기 ........................................................................................... 226 5.6.3 호라이즌 디버깅하기 ........................................................................................ 227 5.7 요약 ....................................................................................................................... 228 CONTENTS
  • 22. 21 CHAPTER 6 네트워크 배포하기 6.1 네트워크의 사전 준비 사항 배포하기 ............................................................................ 232 6.1.1 환경 준비하기 ................................................................................................. 232 6.1.2 네트워크 인터페이스 구성하기 ........................................................................... 232 6.1.3 패키지 갱신하기 .............................................................................................. 236 6.1.4 소프트웨어와 구성 의존성 ................................................................................. 237 6.1.5 Open vSwitch 설치하기 ................................................................................. 240 6.1.6 Open vSwitch 구성하기 ................................................................................. 245 6.2 뉴트론 설치하기 ....................................................................................................... 248 6.2.1 뉴트론 구성요소 설치하기 ................................................................................. 249 6.2.2 뉴트론 구성하기 .............................................................................................. 249 6.2.3 뉴트론 ML2 플러그인 구성하기 ......................................................................... 250 6.2.4 뉴트론 L3 에이전트 구성하기 ............................................................................ 251 6.2.5 뉴트론 DHCP 에이전트 구성하기 ...................................................................... 252 6.2.6 뉴트론 메타데이터 에이전트 구성하기 ................................................................. 253 6.2.7 뉴트론 에이전트 재시작 및 확인하기 ................................................................... 254 6.2.8 뉴트론 네트워크 생성하기 ................................................................................. 255 6.2.9 리눅스, OVS, 뉴트론 간의 관계 .......................................................................... 269 6.2.10 호라이즌 확인하기 ......................................................................................... 272 6.3 요약 ....................................................................................................................... 273 CHAPTER 7 블록 스토리지 배포하기 7.1 블록 스토리지의 사전 준비 사항 배포하기 ..................................................................... 278 7.1.1 환경 준비하기 ................................................................................................. 278 7.1.2 네트워크 인터페이스 구성하기 ........................................................................... 278
  • 23. 22 7.1.3 패키지 갱신하기 .............................................................................................. 282 7.1.4 논리 볼륨 관리자 설치 및 구성하기 ..................................................................... 283 7.2 신더 배포하기 ......................................................................................................... 289 7.2.1 신더 설치하기 ................................................................................................. 291 7.2.2 신더 구성하기 ................................................................................................. 292 7.2.3 신더 에이전트 재시작 및 확인하기 ...................................................................... 293 7.3 신더 테스트하기 ....................................................................................................... 295 7.3.1 신더 볼륨 생성하기 : 명령줄 .............................................................................. 295 7.3.2 신더 볼륨 생성하기 : 대시보드 ........................................................................... 298 7.4 요약 ....................................................................................................................... 301 CHAPTER 8 컴퓨트 배포하기 8.1 컴퓨트의 사전 준비 사항 배포하기 ............................................................................... 305 8.1.1 환경 준비하기 ................................................................................................. 306 8.1.2 네트워크 인터페이스 구성하기 ........................................................................... 306 8.1.3 패키지 갱신하기 .............................................................................................. 310 8.1.4 소프트웨어와 구성 의존성 ................................................................................. 310 8.1.5 Open vSwitch 설치하기 ................................................................................. 311 8.1.6 Open vSwitch 구성하기 ................................................................................. 313 8.2 하이퍼바이저 설치하기 .............................................................................................. 315 8.2.1 호스트 확인하기 .............................................................................................. 315 8.2.2 KVM 사용하기 ............................................................................................... 317 8.3 컴퓨트 노드에 뉴트론 설치하기 ................................................................................... 320 8.3.1 뉴트론 소프트웨어 설치하기 .............................................................................. 320 8.3.2 뉴트론 구성하기 .............................................................................................. 320 8.3.3 뉴트론 ML2 플러그인 구성하기 ......................................................................... 321 CONTENTS
  • 24. 23 8.4 컴퓨트 노드에 노바 설치하기 ...................................................................................... 322 8.4.1 노바 소프트웨어 설치하기 ................................................................................. 323 8.4.2 핵심 노바 구성요소 구성하기 ............................................................................. 323 8.4.3 호라이즌 확인하기 ........................................................................................... 325 8.5 노바 테스트하기 ....................................................................................................... 326 8.5.1 인스턴스(VM) 생성하기 : 명령줄 ......................................................................... 326 8.6 요약 ....................................................................................................................... 331 PART III 상용 환경 구축하기 CHAPTER 9 오픈스택 구조 설계하기 9.1 기존 가상 서버 플랫폼의 대체 ..................................................................................... 336 9.1.1 배포 방식 선택하기 .......................................................................................... 338 9.1.2 네트워크 유형 ................................................................................................. 340 9.1.3 스토리지 유형 ................................................................................................. 341 9.1.4 서버 유형 ....................................................................................................... 345 9.2 왜 사설 클라우드를 구축하는가? ................................................................................. 347 9.2.1 공용 클라우드의 규모의 경제 ............................................................................. 347 9.2.2 대규모 부하 처리 또는 철저한 성능 관리 .............................................................. 348 9.2.3 사설 클라우드에 데이터 보관하기 ....................................................................... 349 9.2.4 하이브리드 시대 .............................................................................................. 350 9.3 사설 클라우드 구축하기 ............................................................................................. 351 9.3.1 오픈스택 배포 도구 .......................................................................................... 351 9.3.2 사설 클라우드의 네트워크 ................................................................................. 352 9.3.3 사설 클라우드의 스토리지 ................................................................................. 355 9.4 요약 ....................................................................................................................... 357
  • 25. 24 CHAPTER 10 세프 배포하기 10.1 세프 노드 준비하기 ................................................................................................. 360 10.1.1 노드 인증 및 인가 .......................................................................................... 361 10.1.2 세프 소프트웨어 배포하기 ............................................................................... 365 10.2 세프 클러스터 생성하기 ........................................................................................... 366 10.2.1 초기 구성 파일 생성하기 ................................................................................. 366 10.2.2 세프 소프트웨어 배포하기 ............................................................................... 367 10.2.3 초기 구성 배포하기 ........................................................................................ 369 10.3 OSD 자원 추가하기 ............................................................................................... 370 10.3.1 OSD 장치 준비하기 ...................................................................................... 372 10.3.2 OSD 생성하기 ............................................................................................. 374 10.4 세프 기본 작업 방법 ................................................................................................ 376 10.4.1 세프 풀 ........................................................................................................ 376 10.4.2 세프 클러스터 벤치마킹하기 ............................................................................ 378 10.5 요약 ..................................................................................................................... 382 CHAPTER 11 퓨얼을 사용한 HA 오픈스택 자동 배포 11.1 환경 준비하기 ........................................................................................................ 385 11.1.1 네트워크 하드웨어 ......................................................................................... 385 11.1.2 서버 하드웨어 ............................................................................................... 390 11.2 퓨얼 배포하기 ........................................................................................................ 399 11.2.1 퓨얼 설치하기 ............................................................................................... 399 11.3 웹 기반의 기본적인 퓨얼 오픈스택 배포 방법 ............................................................... 402 11.3.1 서버 검색 ..................................................................................................... 403 11.3.2 퓨얼 배포 환경 생성하기 ................................................................................. 404 CONTENTS
  • 26. 25 11.3.3 네트워크 환경 구성하기 .................................................................................. 405 11.3.4 환경에 호스트 할당하기 .................................................................................. 407 11.3.5 최종 설정 및 검증 .......................................................................................... 410 11.3.6 변경 사항 배포하기 ........................................................................................ 412 11.4 요약 ..................................................................................................................... 412 CHAPTER 12 오픈스택을 사용한 클라우드 오케스트레이션 12.1 오픈스택 히트 ........................................................................................................ 414 12.1.1 히트 템플릿 .................................................................................................. 414 12.1.2 히트 예제 ..................................................................................................... 417 12.2 우분투 주주 ........................................................................................................... 424 12.2.1 주주를 위한 오픈스택 준비하기 ........................................................................ 425 12.2.2 주주 설치하기 ............................................................................................... 427 12.2.3 참 CLI 배포하기 ........................................................................................... 432 12.2.4 주주 GUI 배포하기 ........................................................................................ 434 12.3 요약 ..................................................................................................................... 442 APPENDIX A 리눅스 설치하기 A.1 시작하기 ................................................................................................................ 444 A.2 초기 구성 ................................................................................................................ 444 A.3 네트워크 구성 .......................................................................................................... 447 A.3.1 수동으로 어댑터 구성하기 ................................................................................. 449 A.3.2 호스트 및 도메인 이름 구성하기 ......................................................................... 452 A.4 사용자 구성 ............................................................................................................ 454
  • 27. 26 A.5 디스크와 파티션 ....................................................................................................... 455 A.5.1 블록 장치(하드 드라이브) 구성하기 ..................................................................... 457 A.5.2 root 및 스왑 파티션과 마운트 지점 구성하기 ........................................................ 459 A.5.3 디스크 구성 마무리하기 .................................................................................... 462 A.6 기본 시스템 구성 ..................................................................................................... 463 찾아보기 .............................................................................................................................................. 467 CONTENTS
  • 28. 271장 오픈스택 소개 시작하기 Part I 1부에서는 오픈스택 프레임워크를 소개하면서 왜 오픈스택을 써야 하며 어떻게 쓰는지를 알아본다. 오픈스택 의 구성요소를 분해하고 하부 자원(컴퓨트, 스토리지, 네트워크 등)과의 관계를 설명한다. 데브스택 배포 도구 를 사용하여 오픈스택을 단일 노드에 배포해볼 것이다. 이러한 내용은 오픈스택을 독자들의 환경에 어떻게 적 용할지 고민하게 해주고 오픈스택 프레임워크에 대한 흥미를 갖게 하여, 향후 오픈스택의 내부 동작 방식을 깊이 이해할 수 있도록 이끌어줄 것이다.
  • 29. 28 1부 시작하기 Part I 시작하기 1장 오픈스택 소개 2장 오픈스택 맛보기 3장 오픈스택 기본 작업 방법 4장 사설 클라우드 구성요소 이해하기
  • 30. 291장 오픈스택 소개 ●● 오픈스택과 클라우드 생태계 ●● 오픈스택을 선택해야 하는 이유 ●● 오픈스택이 해줄 수 있는 것 ●● 오픈스택의 주요 구성요소 몇십 년 전만 해도 많은 컴퓨터 하드웨어 대기업은 자신만의 제조 시설을 갖추고 전용 프로세 서를 만들어 경쟁 우위를 누렸지만, 생산 비용이 증가하면서 수익을 유지할 수 있을 만큼의 규 모로 칩을 생산할 수 있는 회사는 이제 거의 남아 있지 않다. 범용 프로세서를 대규모로 생산할 수 있는 상용 칩 제조사가 등장해 생산 비용을 크게 끌어내렸다. 몇몇 컴퓨터 칩 제조사는 인텔 x86 명령어 집합으로 표준화된 데스크톱과 서버 플랫폼을 권장해왔고, 결국 x86은 클라이언 트-서버 시장에서도 범용 하드웨어가 주류가 되도록 이끌었다. 2000년대 초반의 닷컴 시대에는 웹의 급격한 성장으로 인해 이러한 범용 하드웨어로 채워진 거대 데이터센터들이 나타났다. 범용 하드웨어는 충분히 강력하고 저렴했다. 하지만 그 아키텍 처는 중앙 집중식 관리를 염두에 두고 설계되지 않은 데스크톱 컴퓨팅 환경 그대로였다. 범용 하드웨어를 자원의 집합으로 추상화하여 관리할 수 있는 어떠한 도구도 존재하지 않았다. 설상 가상으로, 이 시기의 서버들은 데스크톱 계통과 마찬가지로 하드웨어 관리 능력이 대개 결여되 어 있었다. 메인프레임과 대규모 SMPSymmetric Multi-Processing (대칭형 다중 처리) 장치와는 달리, 데스크톱과 유사한 이러한 범용 서버에는 독립적인 자원들을 조율해주는 관리 소프트웨어 계 층이 필요했다. 오픈스택 소개 CHAPTER 1
  • 31. 30 1부 시작하기 그림 1.1 상호 연결된 범용 자원들의 클라우드 샌프란시스코 데이터센터 파리 데이터센터 뭄바이 데이터센터 뉴욕 데이터센터 데이터센터 데이터센터에는 랙rack이 존재한다. 각 랙에는 자원들이 존재한다. 애플리케이션 플랫폼 스위치 하이퍼바이저 OS 물리 장치 이 기간에 여러 공공 및 민간 단체에서 범용 자원들을 관리하기 위해 내부적으로 많은 관리 프 레임워크를 만들어냈다. [그림 1.1]은 여러 데이터센터에 분산되어 상호 연결된 자원들의 집 합을 보여준다. 관리 프레임워크를 사용하면 가용성 요구나 사용자의 필요에 따라 이러한 공동 의 자원들을 서로 교환하여 사용할 수 있었다. “클라우드cloud”라는 용어를 누가 만들었는지는 불분명하지만, 관리 프레임워크로 범용 컴퓨팅 능력을 이용하던 사람들은 스스로 자원들의 “클 라우드”를 갖추고 있다고 말하곤 했다. 이 기간에 개발된 많은 상용 및 오픈 소스 클라우드 관리 패키지 중 가장 인기 있는 제품이 바 로 오픈스택 프로젝트다. 오픈스택은 서버, 스토리지, 네트워크, 심지어 애플리케이션 자원들 의 클라우드까지도 제어하는 공통 플랫폼을 제공한다. 오픈스택은 웹 기반 인터페이스, 명령줄 인터페이스(CLI), API로 관리할 수 있다. 이 플랫폼은 특정 제조사의 하드웨어나 소프트웨어 없이도 자원들을 제어할 수 있다. 제조사 전용 구성요소들을 최소한의 노력만으로 대체할 수 있다. 그 덕분에 오픈스택은 IT 조직의 수많은 사람에게 혜택을 준다. 아마존 구매 경험을 되짚어보면 오픈스택을 이해하는 데 도움이 된다. 고객이 아마존에 로그인
  • 32. 311장 오픈스택 소개 하여 상품을 주문하면 그 상품이 집까지 배달된다. 그 이면에는 상품을 고객의 집까지 가능한 한 빠르고 싸게 가져다주기 위해 고도로 최적화된 단계들을 거친다. 아마존 웹 서비스Amazon Web Services, AWS는 아마존이 설립되고 12년 후에 시작되었다. AWS는 그간의 경험을 컴퓨팅 자원을 배달하는 비즈니스로 가져왔다. 외딴 지역의 IT 부서에서 새 서버를 요청하면 몇 주가 소요되 기도 했지만, AWS에서는 신용카드와 몇 번의 마우스 클릭만으로 해결할 수 있다. 오픈스택 은 아마존과 같은 서비스 제공자와 동일한 수준의 조직화된 효율을 제공하는 것을 목표로 하고 있다. 오픈스택이란 무엇인가? ●● 클라우드/시스템/스토리지/네트워크 관리자에게 - 오픈스택은 다양한 유형의 상용 또는 오픈 소스 하드웨어 와 소프트웨어를 제어하며, 제조사 전용 자원 위에서 클라우드 관리 계층을 제공한다. 디스크와 네트워크 프로 비저닝과 같은 반복적인 수작업을 자동화한다. 사실상 가상 머신(VM)을 프로비저닝하는 모든 절차와 심지어 애플리케이션까지 오픈스택을 사용하여 자동화할 수 있다. ●● 개발자에게 - 오픈스택은 개발 환경에 사용되는 자원(가상 머신, 스토리지 등)을 제공하는 아마존 형태의 서 비스뿐만 아니라 템플릿 기반의 확장 가능한 애플리케이션을 배포하기 위한 클라우드 통합 플랫폼이다. 오픈스 택이 인프라(메모리 용량이 X인 서버 Y대)와 애플리케이션의 소프트웨어 의존성(MySQL, Apache2 등)을 확인한 후 독자들 대신 이러한 자원들을 배포하는 모습을 상상해보라. ●● 최종 사용자에게 - 오픈스택은 인프라와 애플리케이션을 위한 셀프 서비스 시스템이다. AWS에서와 마찬가 지로 사용자는 격리된 테넌트 공간에서 간단한 가상 머신 프로비저닝부터 고급 가상 네트워크와 애플리케이션 구성까지, 모든 것을 할 수 있다. 프로젝트Project라고도 알려진 테넌트Tenant는 오픈스택이 자원의 할당을 격리하 는 방식이다. 테넌트 격리는 스토리지, 네트워크, VM 격리를 포함하므로 최종 사용자는 전통적인 가상 서버 환 경에서보다 더 많은 자유를 누릴 수 있다. 원하는 자원을 원하는 시기에 원하는 방식으로 쉽게 프로비저닝하고, 이를 할당받아 사용하는 최종 사용자의 모습을 상상해보라. 가상 머신과 테넌트 이 책에서 가상 머신은 물리 머신(서버)을 에뮬레이션한 인스턴스를 의미한다. 가상 머신은 물 리 머신과 동일한 기능을 수행하며, 운영 체체 관점에서는 실제 하드웨어와 구별하기 어렵게 되 어 있다. 가상 머신은 다양한 용도로 사용되나, 가상화의 목적 대부분은 성능을 희생하더라도 무 언가를 소프트웨어로 제어하는 유연성을 얻기 위함이다. 큰 그림에서 보면 오픈스택은 소프트 웨어 하이퍼바이저가 서버에 가져다준 것과 같은 수준의 운영 효율성을 데이터센터에 가져다 준다.
  • 33. 32 1부 시작하기 테넌트라는 용어는 오픈스택에서 특별한 의미를 지니고 있다. 정확한 의미는 이 책에서도 설명 하겠지만 당장은 “논리적으로 서로 격리된 VM들이 사용하는 할당량을 제한한quota-limited 자원의 집합”으로 생각하면 충분하다. 예를 들어, 사용자가 테넌트 A에서 네트워크를 잘못 구성하더라 도 테넌트 B는 영향을 받지 않는다. 오픈스택 재단은 수백 개의 공식 기업 스폰서와 130개국 이상에서 수만 명이 참여하는 커뮤니 티를 보유하고 있다. 이러한 커뮤니티 지원 덕분에 사람들은 오픈스택을 (리눅스와 마찬가지 로) 상용 제품에 대한 대안으로써 찾게 될 것이다. 그리고 서비스의 수준과 지원 범위 면에서 오픈스택과 견줄 만한 클라우드 프레임워크가 거의 없다는 사실을 곧 깨닫게 될 것이다. 아마 도 더 중요한 것으로, 상용 제품을 포함해도 일반적인 시스템 관리자, 개발자, 또는 아키텍트가 직접 운용할 수 있으면서 자신의 조직에 이 정도의 이득을 주는 다른 제품은 없을지도 모른다. 1.1 오픈스택이란? 클라우드 자원을 관리하고 정의하고 활용하기 위한 프레임워크인 오픈스택의 정의를 더 자세 히 알아보자. 공식 사이트(www.openstack.org)에서는 오픈스택을 “사설 및 공용 클라우드 를 만들기 위한 오픈 소스 소프트웨어”로 규정한다. 계속해서 “오픈스택 소프트웨어는 대규모 로 확장 가능한 클라우드 운영체제를 제공한다”라고 정의한다. 서버 가상화를 경험해보았다면 오픈스택을 단지 가상 머신을 제공하는 방법 중 하나라는 잘못된 결론을 성급히 내릴 수도 있 다. 가상 머신도 오픈스택 프레임워크가 제공하는 서비스는 맞지만 이것이 전부는 아니다. [그림 1.2]는 오픈스택이 공용 및 사설 클라우드를 만들기 위해 조율하는 다양한 자원 구성요 소를 보여준다. 그림에서 보듯이 오픈스택이 이러한 자원 제공자들을 대체하지는 않는다. 오픈 스택은 프레임워크에 내장된 제어 지점들을 통해 단순히 자원 제공자들을 관리만 할 뿐이다.
  • 34. 331장 오픈스택 소개 그림 1.2 오픈스택은 클라우드 운영체제다. 오픈스택은 물리 및 가상 자원들을 관리한다. 사설 및 공용 클라우드 외부 네트워크 물리 가상 스토리지 서버 네트워크 회의적인 시각을 가진 경험 많은 시스템 관리자라면 앞의 정의에서 오픈스택을 단순히 “클라우 드 운영체제”라고 생각할 수도 있다. 오픈스택은 전통적인 운영체제처럼 수백 대의 서버를 부 팅 디스크에서부터 구동하여 운영체제를 올려 놓은 것과는 다르다. 오픈스택은 자원을 관리한 다는 점에서 운영체제의 특성을 공유하지만 어디까지나 클라우드 컴퓨팅이라는 맥락에서만 그 러하다. 오픈스택 클라우드에서는 다음과 같은 것을 할 수 있다. ●● 물리 및 가상 서버, 네트워크, 스토리지 시스템의 자원을 엮어서 이용할 수 있다. ●● 테넌트, 할당량qouta, 사용자 역할user role을 통해 자원의 클라우드를 효과적으로 관리할 수 있다. ●● 공통 인터페이스를 제공하여 하부 제조사 서브시스템과 관계없이 자원을 제어할 수 있다. 얼핏 보면 오픈스택이 전통적인 운영체제처럼 보이지 않지만, 다시 보면 사실 “클라우드” 자체
  • 35. 34 1부 시작하기 가 일반 컴퓨터처럼 보이지 않는 것이다. 한 걸음 물러서서 운영체제가 주는 기본적인 혜택을 잘 생각해봐야 한다. 운영체제 또는 최소한 하드웨어 수준의 추상화 언어(어셈블리)가 등장하기 전에는, 특정 컴퓨 터의 언어(바이너리 머신 코드)로만 프로그램을 만들었다. 그 후 전통적인 운영체제가 나타나 고 나서야 애플리케이션 코드와 하드웨어 관리 기능을 표준화할 수 있게 되었다. 이제 관리자 는 공통 인터페이스를 사용하여 하드웨어를 관리할 수 있고, 개발자는 공통 시스템을 위한 코 드를 작성할 수 있으며, 사용자는 하나의 사용자 인터페이스만 익히면 된다. 이는 어떤 하드웨 어를 사용하든 운영체제만 동일하면 적용되는 사실이다. 컴퓨터의 발달 과정에서 운영체제의 발전과 확산으로 인해 시스템 엔지니어링과 시스템 관리라는 분야가 생겨났다. [그림 1.3]은 현대 컴퓨터 시스템에서의 다양한 추상화 계층을 보여준다. 그림 1.3 컴퓨터의 추상화 계층 프로세서 전용 아키텍처 기계 코드 일반적인 추상화 계층 일반적인 계층별 접근 방식 명령어 집합 아키텍처 어셈블리 운영체제 바이트코드 가상 계층 제조사 API 오픈스택 오픈스택 API 과거에 운영체제가 막 등장했을 때 운영체제를 사용하면 하드웨어를 직접 제어할 수 없다는 개 념을 좋아하지 않던 개발자들이 있었다. 마찬가지로 서버를 가상화하면 밑단의 하드웨어와 운 영체제에 대한 제어권을 잃게 된다고 생각하고 서버 가상화를 좋아하지 않는 시스템 관리자들 도 있다. 기계 코드에서 어셈블리를 거쳐 가상화 계층까지 이어지는 이러한 일련의 변화에서 우리는 하부 계층에 대한 제어권을 잃은 것이 아니라, 단지 하부 계층이 추상화를 통해 표준화 되었을 뿐이다. 고도로 최적화된 하드웨어와 운영체제는 변함없이 존재하며, 이 계층들 사이에 하드웨어 가상화 계층이 더해질 뿐이다. 일반적으로, 최적화를 통해 얻는 이득이 계층 사이의 번역(가상화) 비용보다 클 때 새로운 추 상화 계층이 폭넓게 채택된다. 다시 말해서, 원래의 성능을 희생함으로써 컴퓨팅 환경의 전체
  • 36. 351장 오픈스택 소개 적인 효용이 커지면 추상화 계층이 채택된다. 이러한 현상은 내부 아키텍처는 근본적으로 바뀌 었지만 수십 년 동안 같은 명령어 집합을 준수하는 CPU에서 가장 분명히 나타난다. CPU를 보고 하드웨어 수준의 가상화와 실행 가변성을 떠올리는 사람은 거의 없지만, 이는 엄 연한 사실이다. x86 프로세서의 많은 명령어가 프로세서 내부에서 가상화되고, 한편으로는 지 금은 거의 사용하지 않는 일부 복잡한 명령어가 더 단순하고 더 빠른 여러 명령어로 변환되어 실행된다. 복잡한 명령어 수준의 최적화는 이 책의 범위를 벗어나지만, 아무것도 설치되지 않 은 서버를 사용할 때조차도 어떠한 형태든 가상화가 연관되어 있고, 심지어 프로세서 수준에서 도 가상화가 존재한다는 사실을 이해하는 것이 중요하다. 이제부터는 제어권을 잃는다는 관점 에서 벗어나 인프라와 애플리케이션의 사설 및 공용 클라우드를 관리, 모니터링, 배포하기 위 한 공통 프레임워크를 사용하는 쪽으로 시선을 옮겨보자. 이러한 진화의 단계를 거쳐 오픈스택 이 등장했다. CPU 추상화와 가상화의 역사 1978년, 인텔은 8086 CPU와 함께 x86 명령어 집합instruction set을 시장에 선보였다. 이 명령어 집합은 인텔의 이전 CPU인 8080 프로세서와 호환되었다. 프로세서 구조는 변했지만 기존 어셈 블리 명령어를 그대로 사용할 수 있었다. 그 후로도 새로운 “프로세서 확장 기능”이 추가되고 클 럭 사이클이 증가되었지만 기존 명령어들은 여전히 남아 있었다. 시장은 계속해서 더 빠른 프로세서를 원했고 프로세서 세대 간의 소프트웨어 상호운용성 보장에 대한 요구도 커졌다. CPU 설계자들은 더 낮은 추상화 수준에서 최적화하되 명령어 수준의 호환 성(표준화)은 유지하는 유연성을 원했다. 이런 추상화 덕분에 설계자들은 하드웨어 구조를 마음 대로 변경할 수 있었기에 CPU는 세대를 거듭하며 클럭 속도를 크게 증가시킬 수 있었다. 1995 년에 등장한 펜티엄 프로는 마이크로 옵mirco-op 디코딩이라는 개념을 도입했다. 이 방식에서는 실행에 한 클럭 사이클이 필요한 특정 명령어가 단순한 명령어 여러 개로 변환되어 여러 사이클 을 소비하기도 했다. 마이크로 옵 외에도 펜티엄 프로 프로세서는 명령어들의 비순차 실행out-of-order execution과 메모 리 가상화(32비트 버스로 36비트의 메모리 주소를 지정)를 통한 최적화를 도입했다. 그러나 이 모든 것은 개발자로부터 완전히 추상화되어 같은 애플리케이션을 프로세서 제조사나 세대와 관 계없이 실행할 수 있었다. 이러한 명령어 호환성은 최신 x86_64 프로세서까지 계속 이어지고 있다.
  • 37. 36 1부 시작하기 1.2 클라우드 컴퓨팅과 오픈스택 이해하기 이 책은 오픈스택을 이용하여 사설 기업용 클라우드를 배포하는 것에 중점을 두고 있다. 이러 한 맥락에서 사설 클라우드를 기업이 보유하고 관리하는 인프라 자원(VM, 스토리지 등)의 모 음이라고 설명할 것이며, 이는 IaaS로도 알려져 있다. 이에 반해 공용 클라우드 IaaS 자원은 아마존 AWS, 마이크로소프트 애저Azure 등과 같은 서드 파티 서비스 제공자가 소유하고 운영 한다. 이 책의 목표는 독자들의 회사에 공용 클라우드에서와 같은 편의성과 효율성을 제공하는 것이다. 사설 대 공용 클라우드의 경제학 재정적인 면에서 사설 클라우드는 일반적으로 자본 비용인 반면에 공용 클라우드는 대개 운영 비용으로 볼 수 있다. 사설 클라우드 환경에서 기업들은 일반적으로 실제 사용 여부와 관계없이 고정 인프라를 구매하거나 일정 기간 대여한다는 점을 고려하면 이 구분은 이해하기 쉽다. 공용 클라우드에서 비용은 일반적으로 시간당 사용량(전원이 켜지고 프로비저닝되면 비용을 지불하 나, 전원이 꺼지고 소멸되면 비용을 지불하지 않는다) 및 통신 비용과 직접적인 관계가 있다. 기업이 사설 클라우드를 선택할지 공용 클라우드를 선택할지는 보통 그 기업의 IT 업무의 규모 나 범위와 관련이 있다. 기술적인 구조와 자원을 다른 부서에 제공할 의무가 있는 중앙 IT 부서 는 보통 사설 클라우드를 활용하는 데 관심이 있다. 다중 테넌트multi-tenant (데이터, 구성, 사용 자 관리가 테넌트별로 논리적으로 격리된다)를 지원하고 완전히 조직화된 사설 클라우드를 통 해 중앙 IT 부서는 사설 클라우드 서비스 중개자가 될 수 있다. 다중 테넌시와 완전한 오케스트레이션 다중 테넌시multi-tenancy란 부서별로 컴퓨팅 자원들을 관리할 수 있는 클라우드 플랫폼의 능력을 의미한다. 예를 들어 마케팅 부서는 공유 자원(VM X개, 용량이 Y인 스토리지 등)의 일부를 할 당받을 수 있으며 이 할당된 자원 내에서 마케팅 부서는 중앙 조직과의 상호작용 없이 자원을 프 로비저닝할 수 있다. 이와 유사하게 완전한 오케스트레이션orchestration이란 애플리케이션 의존성 에 연계하여 자원을 할당하는 능력을 말한다. 예를 들어 웹 서버와 데이터베이스 서버에 의존성 이 있는 회계 애플리케이션은 계획에 따라 이러한 환경에 배포할 수 있다. 따라서 마케팅 부서
  • 38. 371장 오픈스택 소개 는 자신의 자원을 스스로 관리할 수 있을 뿐만 아니라 인프라(VM)와 애플리케이션(MySQL, Apache2, 사용자 지정 애플리케이션 등) 모두를 자신의 테넌트 내에 배포하는 데 플랫폼 오케 스트레이션을 사용할 수 있다. 이와 반대로 부서별 IT 조직은 대개 사설 클라우드를 비용 효율적으로 배포할 수 있는 데이터 센터 시설과 인력을 보유하고 있지 않다. 부서별 IT 조직은 비교적 적은 자원만 있으면 되니 공 용 클라우드를 활용하거나, 중앙 IT 부서가 관리하는 사설 클라우드를 이용할 수 있다. 업무상 필요에 의해 사설과 공용 클라우드 둘 다를 이용하는 경우라면 이러한 조합을 하이브리 드 클라우드hybrid cloud라고 부른다. 공용과 사설 클라우드는 모두 동일한 기술을 사용하고 동일 한 구성요소로 이루어질 수도 있지만, 둘의 사용 목적은 아주 다르다. 예를 들어 보안 유지가 목적이라면 대개 사설 클라우드를 사용한다. 계속 반복되는 작업이나 전 세계를 대상으로 하여 한 기업이 부담하기에는 과도한 비용이 드는 작업에는 공용 클라우드를 사용하는 것이 일반적 이다. 이 책에서는 오픈스택을 사설 클라우드용으로 사용하는 데 중점을 두고 있지만, 내용 중 많은 부분이 오픈스택 API를 기반으로 하는 공용 클라우드 서비스에도 해당한다. 1.2.1 추상화와 오픈스택 API 기본적으로 오픈스택은 광범위한 제조사의 하드웨어와 소프트웨어 자원을 제어하기 위한 공통 API를 추상화하여 제공한다. 오픈스택은 두 가지 매우 중요한 기능을 제공한다. ●● 하드웨어와 소프트웨어 자원의 추상화 - 이를 통해 특정 구성요소가 제조사에 종속되는 것을 피할 수 있다. 이 는 제조사의 제품을 직접 사용하지 않고 오픈스택을 통해 자원을 관리하기 때문에 가능하다. 오픈스택이 제조 사의 모든 기능을 지원하지 못하는 점이 단점이지만 공통적으로 필요한 기능은 충분히 지원하고 있다. ●● 자원들 간의 공통 API - 이를 통해 연결된 구성요소들의 완전한 오케스트레이션이 가능하다. 첫 번째는 경제적인 면에서 유익한 기능이며, 두 번째는 현대의 IT 변혁에서 핵심적인 기능 이다. 다음 절에서는 오픈스택과 관련한 다른 기술들에 대해 살펴볼 것이다.
  • 39. 38 1부 시작하기 무엇을 알아야 하는가? 오픈스택은 확장 가능하고 하드웨어를 추상화하는 광범위한 기능을 지원한다. 오픈스택(또는 다른 클라우드 프레임워크)이 현재의 모든 사례에 다 적합한 것은 아니다. 클라우드 컴퓨팅의 장 점을 제대로 활용하기 위해서는 업무 처리 방식을 변경해야 할 수도 있다. 업무 처리 기준이 데이터센터 내의 모든 서버가 특정 작업을 위해서 특정 제조사의 기능을 사용 하는 것이라면, 이러한 접근 방식은 제조사를 추상화하는 클라우드 환경에는 적합하지 않다. 사 용자가 요청할 때마다 가상 머신을 수동으로 생성하는 식으로 업무를 처리한다면, 클라우드 셀 프 서비스라는 핵심을 놓치고 있는 것이다. 최종 사용자의 요청을 효과적으로 자동화해서 처리 하거나 최종 사용자 스스로 자원을 프로비저닝할 수 있다면, 그제서야 클라우드 컴퓨팅의 힘을 제대로 이용하고 있는 것이다. 1.3 오픈스택과 오픈스택이 제어하는 컴퓨터 자원과의 관계 지금까지 오픈스택이 제공하는 뛰어난 기능에 대해 알아보았다. 그렇다면 과연 오픈스택은 어 떻게 동작하는가? 오픈스택의 동작 방식을 이해하는 가장 쉬운 방법은 기업 환경에서 널리 사 용되는 다른 기술들과 오픈스택을 연관 지어보는 것이다. 이번 절에서는 오픈스택과 오픈스택이 제어하는 기본 자원(컴퓨트, 스토리지, 네트워크 등) 간의 관계를 알아볼 것이다. 곧 알게 되겠지만, 일반적으로 오픈스택은 실제 자원을 제공하지 않고 단순히 하위 계층의 자원을 제어만 할 뿐이다. [그림 1.4]에서는 가상 머신이 최종적으로 사용하는 자원을 오픈스택이 어떻게 관리하는지를 볼 수 있다. 이어지는 몇 개의 하위 절에서 하이퍼바이저가 제어하는 서버 가상화, 하드웨어와 오픈스택 서 비스가 제어하는 네트워크, 제조사와 오픈스택 서비스가 제어하는 블록 및 오브젝트 스토리지 순으로 오픈스택 자원을 구성하는 요소를 자세히 알아볼 것이다. 마지막으로 오픈스택 서비스 를 일반적으로 통용되는 클라우드 용어와 비교해서 살펴볼 것이다. 곧 알게 되겠지만 오픈스택 은 기술이나 제조사와 관계없이 자원과 서비스를 조율하는 프레임워크이다.
  • 40. 391장 오픈스택 소개 그림 1.4 오픈스택 자원 관리 모델 오픈스택 대시보드는 UI를 제공한다. 오픈스택 서비스 네트워크 제조사 네트워크 VM 네트워크 컴퓨트 제조사 하이퍼바이저 VM 컴퓨트 스토리지 제조사 스토리지 시스템 VM 볼륨 오픈스택은 자원을 관리한다. 제조사는 자원을 제공한다. 가상 머신이 사용한다. 1.3.1 오픈스택과 하이퍼바이저 하이퍼바이저 또는 가상 머신 모니터Virtual Machine Monitor, VMM는 가상 머신을 위해 물리 하드웨어를 에뮬레이션하는 소프트웨어다. 오픈스택 자체는 하이퍼바이저가 아니며 단지 하이퍼바이저의 동작을 제어할 뿐이다. 오픈스택은 젠서버XenServer/XCP, KVMKernel-based Virtual Machine, QEMU, LXC, ESXi, Hyper-V 등의 다양한 하이퍼바이저를 지원한다(하이퍼바이저 지원 매트릭스 는 https://wiki.openstack.org/wiki/HypervisorSupportMatrix에서 볼 수 있다). 현재 VMware ESX, VMware ESXi, 마이크로소프트 Hyper-V가 기업 가상화 시장을 주도하고 있다. 하지만 라이선스 제한이나 비용 등의 여러 요인 때문에 오픈스택 커뮤니티는 상용 하이 퍼바이저보다는 오픈 소스 하이퍼바이저에 더 많은 지원을 해오고 있다.
  • 41. 40 1부 시작하기 [그림 1.5]는 물리 하드웨어 위에서 하이퍼바이저가 가상화한 자원을 오픈스택이 관리하는 모 습을 보여준다. 오픈스택은 다양한 하이퍼바이저 자원과 가상 머신을 오픈스택 클러스터에서 관리하고 조율한다. 그림 1.5 오픈스택은 하이퍼바이저를 관리한다. 오픈스택 컴퓨트 하이퍼바이저 관리 컴퓨트 서버 하드웨어가상 하드웨어 VM 컴퓨트 CPU 디스크 RAM 네트워크 가상화 환경의 규모와 관계없이 대부분의 사람이나 조직은 광범위한 기능을 지원하는 젠서버 또는 KVM 하이퍼바이저 둘 중 하나를 사용한다. 시트릭스Citrix의 제품인 젠서버는 오픈 소스 하이퍼바이저지만 시트릭스가 상용(유료) 지원 서비스를 제공한다. KVM은 리눅스 커널에 포 함되어 있어서 레드햇Red Hat, 우분투Ubuntu, 수세SUSE 등 많은 리눅스 배포판에서 KVM에 대한 상 용 지원을 제공하고 있다.
  • 42. 411장 오픈스택 소개 인증 문제 대규모 서비스 제공자들이 오픈스택 기반의 공용 IaaS를 제공하기 위한 준비를 시작했을 때, 하이퍼바이저 에서 동작 중인 윈도우 서버를 위한 마이크로소프트 인증이 필요하다는 것을 곧바로 인지했다. 그 당시 시트 릭스는 젠서버에 대한 마이크로소프트 인증 절차를 통과하여 고객들의 요구에 부응했다. 하지만 시트릭스가 클라우드스택CloudStack이라는 경쟁력 있는 플랫폼을 보유하고 있었음에도 많은 사용자가 젠서버를 오픈스택 의 하이퍼바이저로 사용했다. 그 이후로 많은 리눅스 배포판에서 마이크로소프트 인증 절차를 통과했고 현재 KVM을 비롯한 오픈스택이 제어할 수 있는 하이퍼바이저들은 모두 윈도우 게스트를 완벽히 지원한다. 이 책의 예제에서는 KVM을 사용할 것이다. KVM은 2007년 초반에 발표된 2.6.20 버전 이후 로 리눅스 커널에 포함되었으며 현재 오픈스택은 KVM을 완벽히 지원하고 있다. KVM은 반가 상화paravirtualization 또한 지원하는데, 이를 위해서는 가상화된 운영체제 이미지 내에서 자체적으 로 반가상화를 지원하거나 하이퍼바이저 전용 드라이버를 설치하여 반가상화 기능을 추가해야 한다. 오픈 소스 하이퍼바이저의 고질적인 문제점은 배포하고 관리하는 방법을 배우기 쉽지 않 으며, 종종 시스템, 네트워크, 애플리케이션 관리 경험까지도 필요하다는 점이다. 가상화된 자 원을 제공하는 중앙 부서에 자원을 요청할 때는 그 프로비저닝 과정에서 조직의 네트워크, 시 스템, 보안, 그리고 재정적인 부분까지 검토를 거쳐야만 한다. 이때 사용자는 일반적으로 다음 세 가지 중 하나를 선택할 수 있다. ●● 커뮤니티에서 배포한 코드를 사용한 사용자 자체 지원 - 커뮤니티에서 관리하는 소프트웨어에 대한 커뮤니티 의 지원을 받아 사용자가 직접 가상화 환경을 설계, 배포, 운영한다. ●● 커뮤니티에서 배포한 코드를 사용한 상용 지원 - 커뮤니티에서 관리하는 소프트웨어에 대해 특정 업체의 지원 을 받아 사용자 또는 업체가 가상화 환경을 책임진다. ●● 업체가 개발한 커뮤니티 프로젝트 소프트웨어를 사용한 상용 지원 - 업체가 지원하는 소프트웨어를 사용하여 일반적으로는 사용자가 가상화 환경의 운영과 업체 관리를 책임진다. 다수의 업체가 오픈스택과 KVM을 상용 지원하고 있지만, 조직 내부에서 사용하는 많은 클라 우드 환경은 상용 지원이나 인증이 필요없는 작업을 위해 구축되므로, 상용 지원을 받지 않고 KVM과 함께 오픈스택을 사용하는 것이 가장 인기 있는 방식이다. 이 책에서는 배포 환경이나 지원 방식과 상관없는 공통적으로 유용한 주제를 다룬다.
  • 43. 42 1부 시작하기 리눅스 컨테이너 최근 인프라 수준의 가상화 대신에 운영체제 수준의 가상화를 사용하여 오픈스택 인스턴스를 제 공하는 방식이 많은 관심을 받고 있다. 운영체제 수준의 가상화를 이용하면 단일 서버에서 다수 의 격리된 OS 인스턴스(컨테이너)를 가동할 수 있다. 그러나 이 가상화 방식은 하이퍼바이저 기술은 아니며, 컨테이너는 운영체제와 동일한 커널을 공유하며 동작한다. 컨테이너는 전full가상 화에서 필연적인 에뮬레이션 오버헤드 없이 가상의 격리 공간을 제공하는 방식이다. 운영체제 수준의 가상화 프로젝트 중 가장 인기 있는 두 가지가 바로 도커Docker (http://www. docker.com/)와 로켓Rocket (https://github.com/coreos/rkt)이다. 컨테이너가 OS 단위의 인스턴스보다 애플리케이션 실행에 더 적합한지에 대해서는 논쟁의 여지가 남아 있지만, 분명히 컨테이너 기반 기술은 클라우드를 구축하는 데 점점 더 널리 채택될 것이다. 1.3.2 오픈스택과 네트워크 서비스 오픈스택 자체는 가상 스위치가 아니지만 여러 물리 및 가상 네트워크 장치와 가상 오버레이 네트워크를 관리할 수 있다. 하이퍼바이저의 경우에는 하이버파이저 자체적으로 제공하는 서 비스만 제한적으로 오픈스택이 제어할 수 있지만, DHCPDynamic Host Configuration Protocol나 라우팅 등의 네트워크 서비스는 오픈스택이 직접 제공한다. 그러나 하이퍼바이저에서와 마찬가지로 네트워크 서비스에서도 오픈스택은 상용이든 오픈 소스든 어떠한 하부 기술에도 종속되지 않 는다. 더 중요한 것은 네트워크 유형이나 제조사가 변경되더라도 구성 설정을 변경할 필요가 없다는 점이다. 네트워크 서비스에 특정 하드웨어, 소프트웨어, 사용자 인터페이스가 밀접하게 관련되 어 있다면 다른 제조사나 기술로 변경하는 것이 쉽지 않다. [그림 1.6]에서 보듯이 오픈스택은 이러한 인터페이스를 오픈스택 API로 추상화하고 있다. 오픈스택은 아리스타 네트웍스Arista Networks, 시스코 넥서스Cisco Nexus, 리눅스 브리지Linux Bridge, OVSOpen vSwitch 등 많은 유형의 네트워크 기술(메커니즘)을 관리할 수 있다. 이 책에서는 오픈 스택과 OVS가 제공하는 네트워크 서비스를 사용한다. OVS는 특정 하드웨어가 필요 없고 쉽 게 구해서 사용할 수 있기 때문에 오픈스택에서 일반적으로 선택되는 스위치다. 네트워크 메커 니즘에 따라서 오픈스택이 지원하는 여러 네트워크 타입(VLAN, 터널 등)이 존재하며, 이에 대해서는 6장에서 다룬다.
  • 44. 431장 오픈스택 소개 그림 1.6 오픈스택은 네트워크를 관리한다. 오픈스택 네트워크 제조사 네트워크 장비 VM 네트워크 VM 컴퓨트 서버 하드웨어 1.3.3 오픈스택과 스토리지 일반적인 스토리지의 개념에서 볼 때 오픈스택 자체는 스토리지 어레이가 아니다. 오픈스택은 가상 머신이 사용하는 스토리지를 물리적으로 제공하지는 않는다. 파일 공유(NFS, CIFS 등)를 사용해본 적이 있다면 이미 “파일 기반” 스토리지를 사용해본 것 이다. 이 유형의 스토리지는 사람이 찾아보기도 쉽고 컴퓨터가 접속하기도 편리하지만, 이것은 일반적으로 블록block 스토리지라는 또 다른 유형의 스토리지를 추상화한 것이다. 블록 스토리 지는 운영체제나 파일 시스템이 주로 사용한다고 볼 수 있다. 오브젝트object 기반 스토리지라는 그다지 친숙하지 않은 또 다른 유형의 스토리지가 있다. 이 유형의 스토리지는 일반적으로 소프트웨어 API(예를 들어 GET /obj=xxx)를 통해 접근할 수 있다. 오브젝트 기반 스토리지는 파일과 블록 스토리지를 한 단계 더 추상화한 것이지만 파 일이나 블록 스토리지에서의 제한 사항이 없다. 오브젝트 기반 스토리지는 다수의 참여 노드
  • 45. 44 1부 시작하기 간에 쉽게 배포하고 복제할 수 있다. VM이 빠르게 접근해야만 하는 블록 스토리지와는 다르게 오브젝트 스토리지에서는 더 긴 지연 시간이 허용되기 때문에 VM의 볼륨(인스턴스에 항상 연 결되어 있음)으로는 사용되지 않는다. 오브젝트 스토리지는 볼륨과 이미지(운영체제 포함)의 백업을 저장하기 위해 일반적으로 사용한다. 먼저 오픈스택이 어떻게 블록 스토리지와 함께 동작하는지를 알아본 후 오브젝트 스토리지를 살펴볼 것이다. 블록 스토리지 오픈스택은 현재 최종 사용자를 위한 파일 기반 스토리지를 관리하지 않는다.1 [그림 1.7]에서 오픈스택이 하이퍼바이저와 네트워크를 관리하는 것과 매우 유사하게 블록 스토리지를 관리하 는 것을 볼 수 있다. 그림 1.7 오픈스택은 블록 (VM) 스토리지를 관리한다. 네트워크 스토리지 오픈스택 서버 하드웨어 제조사 네트워크 제조사 스토리지 시스템 VM 네트워크 VM 컴퓨트 VM 볼륨 1  옮긴이_ 오픈스택 주노 버전부터 공유 파일 서비스인 마닐라(Manila) 프로젝트가 추되었다.
  • 46. 451장 오픈스택 소개 이 그림은 기본적인 VM의 자원 관리 측면에서 완전한 그림을 보여준다. 오픈스택은 세프Ceph, 델Dell, EMC, HP, IBM, 넷앱NetApp 등의 다양한 제조사가 제공하는 스토리지 솔루션을 관리할 수 있다. 하이퍼바이저와 네트워크에서와 마찬가지로 오픈스택은 어떠한 구성 설정 변경 없이 스토리지 제조사와 기술을 변경할 수 있는 유연성을 제공한다. 오브젝트 스토리지 오픈스택 자체가 (VM 부팅용) 블록 스토리지를 위한 스토리지 어레이는 아니지만 오브젝트 스토리지를 제공하는 능력을 기본적으로 가지고 있다. 어떠한 다른 소프트웨어 없이 오픈스택 이 지원하는 리눅스를 구동할 물리 하드웨어만 있다면 오픈스택은 분산 오브젝트 스토리지 클 러스터를 제공할 수 있다. 이 유형의 스토리지는 볼륨 백업을 저장하기 위해 사용할 수 있으며, 또한 바이너리 객체로 분류될 수 있는 대량의 데이터를 위해 사용하는 것이 일반적이다. [그림 1.8]은 오픈스택 환경에 포함된 기본 오브젝트 서버 배포 환경을 보여준다. 그림 1.8 오픈스택은 오브젝트 기반 (API) 스토리지를 제공한다. 오픈스택 프록시 노드 스토리지 노드 스토리지 노드 스토리지 노드 오브젝트 스토리지를 단일 장소에만 두어서는 안 된다. 실제로 서로 간에 복제를 하는 다수의 노드(프록시와 스토리지)를 다수의 장소에 둘 수 있다.
  • 47. 46 1부 시작하기 일반적으로 오브젝트 스토리지는 문서나 파일과 같이 사용자를 대신하여 애플리케이션이 접근 하는 데이터를 저장하는 데 사용한다. 오픈스택 환경에서 오브젝트 스토리지를 사용하는 사례 가 많이 있다. 예를 들어, 오브젝트 스토리지는 VM 이미지의 저장소로 흔히 사용된다. VM이 이 스토리지를 직접 사용한다는 의미는 아니지만, VM은 이 스토리지에 저장된 데이터에서 프 로비저닝된다. 프로비저닝 과정에서는 임의의 데이터에 접근할 때의 지연 시간이 크게 중요하 지 않기 때문에 이는 합리적인 선택이다. 또한 오브젝트 스토리지는 VM의 스냅샷을 장기간 백 업해두는 용도로 사용할 수도 있다. 1.3.4 오픈스택과 클라우드 용어 오픈스택은 클라우드 구축을 위한 프레임워크며 공용 및 사설 클라우드를 구축하기 위해 사용 한다. 공용과 사설 클라우드의 정의 외에도 “as-a-service”라는 클라우드의 목적이 존재한 다. 오픈스택은 어떤 “as-a-service”인가? 오픈스택은 여러 가지 “as-a-service” 클라우드 를 위한 토대로 사용할 수 있다. VM과 스토리지 자원을 확보하기 위한 아마존 형태의 서비스를 독자들의 회사에 제공하고자 한다. 이것은 IaaSInfrastructure as a Service로 간주된다. 이 상황에서 사용자에게는 개별 가상 머신을 직접 프로비저닝하고 관리할 수 있는 접근 권한이 주어진다. 사용자는 클라우드를 구성하는 물 리 구성요소를 볼 수는 없지만 가상 구성요소에는 직접 접근할 수 있다. 오픈스택은 자원을 제 어하여 최종 사용자에게 인프라를 제공하는 책임만 진다. 이제 클라우드 사용자에게 IaaS 기능에 대한 직접 접근 권한은 주지 않고 오픈스택이 제공하고 지원하는 애플리케이션 오케스트레이션 기능에 대한 접근 권한만 부여한다고 가정하자. 이 상 황에서 오픈스택은 PaaSPlatform as a Service를 제공하는 백엔드back end로 간주할 수 있다. 사용자는 하부에 존재하는 물리 및 가상 인프라 구성요소를 볼 수 없다. 개발팀이 소프트웨어 테스트를 위한 서버와 네트워크 인프라(IaaS 위에 애플리케이션을 배포)를 요청하는 경우를 생각해보 자. 테스트용 플랫폼을 배포하기 위한 백엔드로 오픈스택을 사용하여 클라우드 오케스트레이 션을 할 수 있다. 이제 오픈스택이 제공하는 IaaS 또는 PaaS를 사용하는 고객에게 특정 서비스를 제공한다고 가 정해보자. 이 상황에서 오픈스택은 SaaSSoftware as a Service의 백엔드 구성요소로 역할을 한다. 보