OpenStack2014.02.05 00:10

안녕하세요~!! 오랜만에 다시 블로그에 글을 쓰는 것 같습니다. 

요즘 오픈스택 한국 커뮤니티에서 주최하는 "제1회 OpenStack Day in Korea" 라는 행사를 준비하느라 하루가 어떻게 가는지 모르겠습니다. 좋은 프로그램으로 많은 분들에게 많은 혜택을 드리기 위해 운영진들과 열심히 기획하고 준비했습니다.


정말 많은 분들이 오셔서 좋은 양질의 강의를 통해 많은 것들을 가져가시고, 오픈스택 한국 커뮤니티에서 드리는 기념티도 챙겨가셨으면 좋겠습니다. (단, 기념티는 오전에 등록하시는 분들 한해서 드릴 예정입니다~!! ^^)


이번에도 저는 오프스택을 처음 시작하시는 분들을 위한 데모 및 실습 트랙을 맏아서 진행할 예정입니다.


첫번째 시간에는 클라우드가 무엇인지부터 해서 오픈스택의 역사 및 구성요소, 설치방법들을 알아볼 예정입니다.

두번째 시간에는 실습에 참여하시는 분들과 함께 DevStack을 이용하여 오픈스택을 직접 설치해 볼 것입니다.

세번째 시간에는 설치한 오픈스택으로 어떻게 인스턴스를 생성하고 사용하면 되는지에 대한 운영 방법등을 알아볼것입니다.


실습 트랙이라 많은 분들과 함께 할 수는 없지만, 참여하신 모든 분들이 이 시간을 통해 오픈스택과 좀 더 친해질 수 있는 계기가 되었으면 좋겠습니다.


OpenStack Day in Korea 에 참여하고자 하시는 분들은 바로 여기서 신청해 주세요 ==> http://onoffmix.com/event/22995





 


OpenStack Day in Korea 데모실습 (2).zip



Posted by 나리 짱!!! naleejang
OpenStack2013.12.09 13:05

그동안 모두들~~~ 안녕하셨죠?

어느새 2013년이 다 지나가고, 12월도 얼마 남지 않았습니다. 어떻게 연초에 계획했던 일들은 다들 잘 이루셨나요? 모두들 소원하는 것들을 이루셨으리라 믿습니다. 



저는 이번에 그동안 활동해 왔던 "Openstack 한국 커뮤니티"의 새로운 대표가 되었습니다. 

오픈스택을 처음 만났을 때가 2011년 9월이였고, 그때의 오픈스택 버전은 막 Diablo 가 릴리즈 되었을 무렵이였습니다. 제가 처음으로 맡았던 건 Object Storage였던 Swift 였고, Swift를 설치하면서 경험했던 삽질들을 메뉴얼화 하여 오프스택 한국 커뮤니티 홈페이지에 공개를 했던 기억이 납니다. 그리고, 그때 처음으로 Daum에서 개최한 Devon에 커뮤니티 부스로 참여를 했었습니다. 오픈소스~ 클라우드~ 시스템~ 네트워크~ 처음에는 전부 다 생소하고, 어렵기만 했는데, 하나씩 하나씩 매일 매일 들여다 보고, 테스트하고, 설치를 밥먹듯이 하니, 조금씩 조금씩 하나씩 하나씩 알아가는 것이 너무 너무 재미있기만 했었습니다. 지금도 물론 그렇구요~~~ 그리고, 가장 즐거웠던 건 커뮤니티를 통해 사람들을 만나고, 내가 모르는 것들을 그들을 통해 배우고, 내가 알고 있는 것들을 다른 이들에게 나눠줄 수 있다는 것이였습니다. 


요즘 들어 "오픈스택"에 대한 사람들의 관심도가 높아지고 있습니다. 

하루에 페이스북 오프스택 그룹에 가입하는 신입 회원들의 수가 늘고 있습니다. 

처음 오픈스택을 시작했을 때보다 "오픈스택"을 하는 회사들이 점점 늘고 있습니다.

3개의 프로젝트로 시작한 오픈스택이 이제는 무려 10개의 프로젝트로 늘어났습니다.

오픈소스 클라우드 플랫폼인 오픈스택에 관심을 보이고, 사랑해 주는 사람들이 늘고, 회사가 늘고 있습니다.


재미난 것 내가 좋아하는 것을 할때는 눈에서 불꽃이 일고, 심장이 터질듯이 띈다고 하죠~!!

그만큼 열정을 다해 오픈스택 한국 커뮤니티를 이끌어 나가겠습니다. 

지켜봐 주시고, 관심 가져주시고, 아낌없는 응원과 후원, 그리고 참여 부탁드립니다.


2013년 12월의 어느날~~



오픈스택 공식 홈페이지 : http://www.openstack.org

한국 커뮤니티 홈페이지 : http://www.openstack.or.kr

페이스북 그룹 : https://www.facebook.com/groups/openstack.kr/

Posted by 나리 짱!!! naleejang
OpenStack2013.07.24 17:32

오랜만에 다시 OpenStack을 설치하고 운영을 할 수 있는 기회가 저에게 다시 돌아왔습니다.

그리하여 새로운 마음으로 우선 VM에 Devstack을 이용하여 Openstack을 설치를 했습니다. 그리고, 이것 저것 실험도 하고, 명령어는 어떤 것들이 있는지 확인하기 위해 SSH 쉘 창에서 명령어를 입력하는 순간 아래와 같은 메시지를 만났습니다. 순간, 일전에 어느분이 이런 질문을 남긴 걸 본 기억이 나서 다음에는 잊어버리지 말자!! 하는 생각으로 몇 자 적어봅니다.





DevStack으로 오픈스택을 설치한 후 CLI 명령어를 실행할 때 다음과 같은 인증 정보를 입력하라는 메시지를 만날 수 있다.

 stack@ubuntu:~/devstack$ keystone tenant-list

 You must provide a username via either --os-username or env[OS_USERNAME]



이럴땐 인증 정보를 입력해 주기만 하면 된다. 우선, vi 에디터를 열어 다음과 같이 입력한 후 저장하고 빠져 나온다.

 stack@ubuntu:~$  vi userInfo


 export OS_USERNAME=admin

 export OS_PASSWORD=openstack

 export OS_AUTH_URL=http://192.168.0.37:5000/v2.0

 export OS_TENANT_NAME=admin

 

 :wq



그리고 입력한 정보는 source를 이용하여 현재 터미널에 적용시킨다.

stack@ubuntu:~$ source userInfo 



이제 한번 명령어를 입력해 보자. 이제는 잘 실행이 될 것이다.

stack@ubuntu:~$ keystone tenant-list

+----------------------------------+--------------------+---------+

|                id                                |            name           | enabled |

+----------------------------------+--------------------+---------+

| 4aa34116defb4e4d9c2dadf1e376745b |       admin              |   True  |

| 41a139d9e39c4c56b07cdbea6ae27dfa |      alt_demo          |   True  |

| 1afbf6b04179463886ddb5c25f45c9ea   |        demo              |   True  |

| a64d919a434b4ac0a4d92c19cbf0151a | invisible_to_admin   |   True  |

| 500af432c95549f7a42262a222035c4e   |      service             |   True  |

+----------------------------------+--------------------+---------+



명령어도 많이 바뀌고, UI도 바뀌고, 프로젝트 모듈명도 바뀌고, 바뀐 부분이 상당히 많이 보이네요~!! 

이런 자료들도 조만간 정리해서 곧 올려드릴께요~!!  

Posted by 나리 짱!!! naleejang
OpenStack2013.07.23 15:30

오랜만에 Openstack과 관련된 글을 쓰는 것 같습니다. 

사실 그동안 프로젝트 하느라 openstack을 들여다 볼 시간적 여유가 없었거든요~!! 

얼마전에 오픈스택 3주년 기념 세미나 때 오픈스택 아키텍쳐를 최초에 설계한 Ken Pepple 이 과거 오픈스택이 처음 탄생했을 때의 아주 단순했던 아키텍쳐부터 지금까지의 아키텍쳐 변화를 그림과 함께 설명을 했었습니다. 


사실 요즘 오프스택 아키텍쳐를 보면 눈에 잘 들어오지 않습니다. 너무 커서~~~ 말입니다. 그래서 오늘은 그 아키텍쳐를 한번 부분별로 살펴 볼까 합니다. 그러면 더 눈에 잘 보이지 않을까요?



Conceptual Architecture

아래 그림은 개념적으로 설계한 Conceptual Architecture 이다. 기본 3개의 프로젝트에 4개의 추가 프로젝트로 구성되어 있다. 단 이번 Grizzly 버전을 업그레이드하면서 Network Service인 Quantum 프로젝트가 Neutron 으로 이름이 변경이 되었다.


Logical Architecture

정말 복잡한 그래서 눈에 잘 들어오지 않는 논리적으로 설계한 Logical Architecture이다. 오늘은 이 복잡한 아키텍처를 프로젝트별로 나누어서 살펴보고자 한다.


Compute

아래 그림은 논리 설계도 중 Compute 서비스에 해당하는 Nova 프로젝트에 대한 아키텍쳐이다. 구조를 살펴보면, Queue 중심으로 nova-api, nova-compute, nova-consoleauth, nova-scheduler, nova-conductor, nova-cert 가 메시지를 서로 주고 받을 수 있도록 설계되어 있으며, hypervisor는 libvirt나 XenApi를 통해 nova-compute와 연동이 되어 있다. 


Object Store

오브젝트 스토리지 서비스를 제공하는 Swift는 의외로 간단하다. Swift 별도로 구성을 했을 경우에는 오브젝트 스토리지로 Compute 서비스와 연동해서는 Glance 이미지의 이미지 백업 스토리지로 사용할 수 있다. Swift는 Proxy를 중심으로 account, container, object 가 존재한다.

Image Store

이미지 서비스를 제공하는 Glance는 glance.conf 파일에서 설정해 둔 Glance 스토리지에 Image 파일을 등록 및 수정, 삭제 등의 관리를 담당한다. 이전 Folsom 버전까지만 해서 이미지 파일을 등록하기 위해서는 CLI Command 를 이용해야만 했었는데 지금은 Dashboard에서 UI로 관리가 가능해 졌다.

Network

네트워크 서비스를 위해 별도로 분리된 Quantum 프로젝트는 Grizzly를 업데이트 하는 과정에서 Neutron 이라는 이름으로 그 명칭이 변경이 되었다. Neutron에는 Server, agent, plugins으로 구성되어 있으며, 기본 네트워크는 openvswitch로 되어 있다. 사용 가능한 플러그인은 Big switch networks의 Floodlight(http://www.bigswitch.com/products/open-source-projects), cisco의 ncclient, linuxbridge, ml2(Modular layer 2), NEC OpenFlow, Nicira NVP, ryu, PLUMgrid(http://plumgrid.com/solutions/openstack/) 와 같은 것들이 있다.

Block Storage

블록 스토리지는 컴퓨터 서버에 디바이스처럼 추가하여 사용할 수 있는 스토리지로 cinder-volume, cinder-backup, database, volume provider, cinder-scheduler 가 존재한다. 이전에는 Nova-Volume이 이 기능을 대신하였으나, Cinder라는 별도 프로젝트로 분리하여 현재는 cinder가 블록 스토리지를 관리하고 있다. 기본적으로는 LVM을 생성하여 cinder-volume으로 사용하나 이 외에도 다음과 같은 스토리지 서비스를 대신할 수 있다. 
IBM (Xiv, Storwize and SVC), SolidFire, Scality, Coraid appliances, RADOS block storage (Ceph), Sheepdog, NetApp, Windows Server 2012 iSCSI, HP (Lefthand and 3PAR), Nexenta appliances, Huawei (T series and Dorado storage systems), Zadara VPSA, Red Hat’s GlusterFS, EMC (VNX and VMAX arrays), Xen and linux iSCSI.

Identity

인증 서비스를 담당하고 있는 Keystone은 오픈스택의 모든 서비스들의 인증을 담당하며, 테넌트, 사용자, 인증 토큰, End Point URL, LDAP 등을 관리한다. Flosom 버전에서는 서비스들의 권한만 생성하면 되었지만, Grizzly로 와서는 사용자 권한 및 Role, 인증 토큰, 인증키까지도 관리되도록 업그레이드 되었다.

Dashboard

Dashboard 서비스를 담당하는 Horizon~!! 사용자들이 오픈스택을 쉽게 사용할 수 있도록 지원해 주는 가장 가까운 곳에서 사용들을 만나는 UI 서비스이다. Horizon 서비는 날이 가면 갈수록 점점 더 버전이 업그레이드 되고 있다. 오픈스택의 각 프로젝트에서 제공하는 API를 이용하여 Dashboard를 구현하였으며, Apache2 서버에 Python 장고 프레임웍을 사용한다.


Posted by 나리 짱!!! naleejang
OpenStack2013.07.19 00:39

안녕하세요~!! 


2013년 7월 18일 오픈스택 한국 커뮤니티에서 오픈스택 탄생 3주년을 기념하는 행사가 있었습니다. 

그 행사에서 발표한 "오픈스택~!! 이틀이면 할 수 있다! 시즌2" 를 오픈스택 한국 커뮤니티 회원분들과 공유하고자 합니다.

발표자료가 거의 대부분이 그림이여서 지난번 아름다운 개발자 세미나 때처럼 간단한 발표요약도 함께 해 보았습니다. 



오픈스택 3주년을 기념하는 세미나에서 어떤 이야기를 하면 좋을까? 하고 고민하다가 오픈스택 이야기를 하는게 좋을것 같다는 생각을 했다. 오픈스택은 클라우드이니까 오픈스택을 이야기하기 전에 클라우드 이야기를 살짝 하고, 오픈스택 이야기 그리고, 클라우드의 핵심인 하이퍼 바이저 이야기를 하면 좋을 것 같다는 생각을 했다. 


내가 경험한 것을 위주로 일반사람들이 알고 있는 클라우드는 어떤 것이며, 우리.. 오픈스택 커뮤니티 회원이라면 알아야 할 클라우드와는 어떻게 다른지를 비교해 보았다. 그리고, 그 중에서도 오픈 소스형 클라우드 플랫폼은 어떤 것들이 있는지를 알아보았으며, 오픈 소스 클라우드 커뮤니티 간의 인기 순위도 알아보았다. 인기순위를 알아보면서 확실히 오픈스택이 많이 알려졌구나~!! 인기가 정말 좋구나~!! 라는 생각을 많이 하게 되었다.


오픈스택은 2010년 6월 나사와 랙스페이스가 손을 잡고 아파치 2.0 라이센스로 오픈한 오픈 소스형 클라우드 플랫폼이다. 현재 7번의 릴리즈를 거쳤으며, 지난 4월에 릴리즈 한 버전이 Openstack Grizzly이다. 다음번 릴리즈는 올 10월에 있을 예정이며, 이름은 Openstack Havana이다. 


현재 오픈스택커뮤니티가 있는 국가는  87개이며, 1만명이 넘는 사용자들이 오픈스택을 사용하고 있고, 공부하고, 커뮤니티를 이끌어나가고 있다. 


오픈스택은 컴퓨트 서비스인 Nova, 이미지 서비스인 Glance, 오브젝트 스토리지 서비스인 Swift 이렇게 세가지의 기본 서비스에 인증은 위한 Keystone, 블록스토리지 관리를 위한 Cinder, 네트워크를 위한 Quantum, 사용자 UI인 Horizon 이렇게 크게 7가지 서비스로 이루어져 있다. 


설치하는 방법은 몇가지가 되는데, 초보자들도 따라하기 쉬운 Devstack을 이용한 설치, 표준 버전을 설치하기 위한 매뉴얼 방식 이렇게 두가지가 있으며, Devstack 같은 경우에는 현재 계속 업데이트 되고 있기 때문에 단지 스터디용 혹은 테스트용이 적당하며, 설치할때마다 매번 소스가 업데이트되어 설치가 잘 되는 경우도 있고, 그렇지 않은 경우도 매우 많다. 그러나 매뉴얼 방식의 패키지 형태로 설치를 하게 되면 안정적이고, 서버가 재부팅되어도 프로세스가 다시 재시작된다는 점이 Devstack과는 다른 점이다. 


클라우드의 핵심~!! 하이퍼 바이저 같은 경우에는 우선 먼저 정의부터 알아보았다. 

하이퍼 바이저는 한 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리 플랫폼으로 Native와 Hosted 형태로 나뉠 수 있다. Native는 하드웨어에 바로 하이퍼 바이저를 설치하여 게스트 OS를 생성하는 반면 Hosted는 이미 설치되어 있는 운영체제 위에 프로그램처럼 하이퍼바이저를 설치하고 그 위에 게스트 OS를 생성하는 방법이다.


Native 하이퍼 바이저의 종류로는 크게 Xen, Ctrix의 XenServer, KVM, Hyper-V, VMWare ESX server 등이 있으며, Hosted 방식은 우리가 많이 쓰는 오라클사의 Virtualbox, 패러럴사의 Workstation, Desktop, Qemu, VMWare의 Workstation과 Fusion 등이 있다. 


그럼, 오픈소스 클라우드 플랫폼들은 어떤 하이퍼 바이저를 지원할까? 대표적으로 오픈스택 경우에는 Xen, KVM, Qemu를 지원하고 있었으며, 클라우드 스택 같은 경우에는 KVM, Xen, Vmware 를 지원하고 있었다. 오픈네블라 역시 KVM, Xen, Vmware 그리고 Hyper-V를 지원하고 있었으며, 유칼립투스 같은 경우도 KVM, Xen, Vmware를 지원하고 있었다.


그리고 이런 하이퍼 바이저 들이 지원하고 있는 이미지 포맷과 설명 또한 함께 찾아보았다.


내가 오픈스택을 처음 만난 건 2010년 9월이였다. 그리고 오픈스택이 탄생한 건 2010년 6월이였다. 나는 오픈스택을 만난 이래로 오픈스택과 울고 웃고, 밤을 지새고, 주말을 함께 보내며, 오픈스택 때문에 좋은 사람들을 만나고, 오픈스택 때문에 발전하고 공부한다.  내가 처음 오픈스택을 접했을때는 그게 뭐야? 하고 물어보는 사람들이 많았는데 이제는 나를 알아주고 오픈스택을 알아주는 사람들이 늘어나고 있다. 오픈스택의 발전과 많은 사람들이 오픈소스형 프로젝트인 오픈스택을 알아주고, 사용하고 활용하는 그날이 오길 기대해 본다.


Posted by 나리 짱!!! naleejang
OpenStack2013.07.11 16:24

안녕하세요~!!!

오랜만에 다시 글을 쓰려니 어떻게 글을 써야 할지 감을 잊어버렸나 봅니다. ㅠㅠ


이번에 오픈스택 코리아 커뮤니티에서 오픈스택 탄생 3주년 기념 세미나 및 맥주 파티를 하게 되었습니다.

참가 신청은 http://onoffmix.com/event/17173  <- 여기서 하시면 됩니다~!!


그리고, 이번 세미나에서는 "Openstack 이틀만 하면 나처럼 할 수 있다! Season 2!!" 를 준비해 봤습니다. 


많은 분들이 참여하셔서 세미나도 들으시고, 

좋은 사람들과의 만남도 갖고,

맥주도 마시면서 오픈스택 탄생 3주년을 축하해 주시기 바랍니다.


참고로, 참여하시는 분들은 오픈스택 기념 티셔츠도 드리니 많은 참여 부탁드립니다.



이번에 오픈스택 커뮤니티에서 제작한 홍보 팜플렛입니다.




쿠캔비어 오시는 길입니다.



Posted by 나리 짱!!! naleejang
OpenStack2013.06.13 12:49

오늘은 OpenStack Grizzly Dashboard에서 이미지를 등록하는 방법을 Post해보고자 합니다. Folsom 이전 버전에서는 Glance Image을 올리기 위해서 CLI 명령어를 이용을 해야만 했습니다. 그런데 현재 Grizzly 버전에서는 Dashboard에서 이미지를 직접 올릴 수 있는 기능을 제공을 합니다. 참 많이 업데이트가 되었죠~!!

 

그럼, 지금부터 Dashboard를 통해 이미지를 등록해 보도록 하겠습니다.

 

1.     우선, Horizon DashboardAdmin 계정으로 로그인을 한다. 그리고, 시스템 패널이미지들 이라는 메뉴를 선택하여 들어간다.


  

2.     이미지들 목록 상단 우측에 Create Image 라는 버튼을 클릭하면 아래와 같이 Create An Image라는 팝업이 뜬다.


 

3.     팝업이 뜨면 아래 그림처럼 이름, Image Location 또는 Image File, Format 을 입력하고, Public을 체크한다. 만일 Ubuntu Image를 올릴 예정이라면 아래 URLImage Location란에 입력하면 된다.

http://uec-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img


4.     입력을 하고 Create Image 버튼을 클릭하면 팝업이 닫히면서 목록에 Saving이라는 상태를 확인할 수 있을 것이다.


5.     위에서 등록한 이미지 상태는 프로젝트 탭의 Image & Snapshots 메뉴에서도 확인할 수 있다.


6.     이미지 등록이 완료되면 상태가 Saving에서 Active로 변경된다.


이제 인스턴스 생성을 해서 사용하면 된다. 이전에는 이미지를 등록하려면 복잡하고 어려운 명령어를 일일이 다 찾아 봐야 했지만, 이젠 UI를 이용해서 쉽게 이미지를 업로드 할 수 있다.

Posted by 나리 짱!!! naleejang
OpenStack2013.06.05 09:26

안녕하세요~!! 그동안 OpenStack 자동 쉘 스트립트인 Devstack의 stack.sh를 분석을 했습니다. 드디어 분석이 끝났네요~!!!

Devstack을 분석하고 나니 이번 Openstack grizzly에 어떤 컴포넌트들이 들어와 있는지 알수가 있었습니다. 그래서 그 결과를 여러분들과 함께 공유하려고 합니다. ^^


DevStack 다운로드

Devstack은 git을 통하여 (https://github.com/openstack-dev/devstack) 다운로드 받는다.


DevStack 파일 목록

Devstack의 메인 디렉토리에는 총 14개의 스크립트 파일과 7개의 디렉토리로 구성되어 있다. 나는 이번에 여기서 반드시 봐야할 쉘 스크립트 2개와 2개의 디렉토리에 있는 스크립트 내용들을 함께 분석하였다.


<files>

 AUTHORS

 clean.sh

 eucarc

 exercise.sh

 exerciserc

 functions

 HACKING.rst

 LICENSE

 openrc

 README.md

 rejoin-stack.sh

 stack.sh

 stackrc

 unstack.sh


<directory>

 exercises

 extras.d

 files

 lib

 samples

 tests

 tools


DevStack 컴포넌트들

아래 그림은 DevStack에서 설치가능한 오픈스택 컴포넌트 목록들이다. 이것들은 localrc의 ENABLE 된 정보를 가지고 설치가 진행된다. 


DevStack 설치 스크립트 분석

Devstack의 Openstack 설치 스트립트는 stack.sh이다. stack.sh 만 분석을 해서 Openstack이 어떻게 해서 설치가 되고 어떤 컴포넌트들이 설치가 되는지 알 수 있다. 자세한 분석 내용은 아래 분석 파일을 참조하면 된다. 물론 완벽하게 분석을 한것은 아니며, 주로 주석을 위주로 해서 기능을 분석하고 해당 Function들을 따라가는 수준으로 분석하였다. 틀린 부분이 있다면 그 부분도 서로 서로 공유가 되면 좋겠다.


stack_분석.sh




Posted by 나리 짱!!! naleejang
OpenStack2013.04.15 09:21

어제에 이어 오늘 또 이렇게 블로그에 글을 올립니다. 글을 쓴다는것이 상당히 어려운 작업인것 같습니다. 시간 투자도 많이 필요하고, 나를 포함하여 어떻게 하면 제 글을 읽는 분들이 좀 더 이해가 쉬울까? 라는 생각을 무수히도 많이 하게 되는것 같습니다. 그럼에도 제가 이렇게 시간을 투자하여 글을 쓰는 이유는 제 글을 통해 많은 분들이 지식을 좀 더 쉽게 습득하길 바라는 제 작은 소망이 있기 때문입니다. 그리고, 제 글을 읽고 감사하다는 작은 메시지 때문에 이런 일을 하는게 아닌가 싶습니다. 


오늘은 얼마전에 설치한 OpenStack Grizzly with Quantum 설치 매뉴얼을 여러분들께 공개할까 합니다. 

아직도 OpenStack을 시작하는 많은 분들이 설치에 어려움을 느끼시는 것 같습니다. 요즘은 방명록에 설치가 잘 안되서 문의를 해 주시는 분들이 생각보다 상당히 많으십니다. 블로그에 1편, 2편으로 나누어서 글을 올릴까 하다가 매뉴얼을 통째로 올리기로 했습니다. 


저도 아직은 많이 부족합니다. 다만 이제 막 시작하시는 분들보다 좀 더 먼저 접했다는거.. 저도 아직은 많이 더 배워야 하는 단계입니다. 매뉴얼 내용이 많이 부족하더라도, 함께 공부하는 입장이니 너그럽게 이해해 주시고, 항상 도움 주는 OpenStack Korea Community 회원분들과 함께 이 정보를 공유하도록 하겠습니다.


감사합니다.



Devstack for Openstack grizzly with Quantum Install Manual.pdf



Posted by 나리 짱!!! naleejang
OpenStack2013.04.14 18:00

안녕하세요~!! 


얼마전에 OpenStack Grizzly을 설치하고 Dashboard를 보면서 감탄을 하고 있는 중입니다. 어떤 기능들이 추가 되었길래 감탄중이냐구요?? 그래서 오늘 감탄하고 있는 기능들 새롭게 추가된 기능들을 소개드리고자 합니다.


예전에 Folsom 설치할 때는 Dashboard에서 오류도 많이 나고 불안정했었는데, 이번 Grizzly 버전에서는 상당히 많이 안정이 된 것 같습니다.


  • 네트워크 토폴로지 기능

생성한 네트워크와 생성한 Instance 의 네트워크 구성도를 그림으로 표현해 주는 기능이 가장 신선했고, 네트워크를 이해하는데 도움을 많이 주는 것 같다.



  • 이미지 추가 기능

예전에는 이미지를 추가하기 위해서는 반드시 Command 명령어로 이미지를 올려야만 했었는데 이번 grizzly Dashboard에서는 이미지를 바로 올릴 수가 있다. 



  • 인스턴스 생성시 네트워크 선택 기능

이전에는 단지 Combo box로 되어 있어 선택을 해야했었는데 이번에는 이미지로 되어 있어 Available networks의 + 버튼을 클릭하면 network 박스가 상단의 Selected Networks로 올라간다.



  • 목록에서 탭으로

기존 Access & Security 화면은 모든 기능은 목록처럼 쭉 나열되어 있었다. 그런데 이번 Grizzly 버전에서는 탭으로 정리되어 나온다.


이 외에도 다양한 기능들이 더 추가가 된 듯 싶은데 이번 글에서 다 쓰기가 힘이 좀 들것 같아 오늘은 이번것으로 마무리하고자 한다. 다음에 좀 더 많은 내용들을 블로그에 정리해서 올리도록 하겠다.

Posted by 나리 짱!!! naleejang
OpenStack2013.03.20 13:58

처음 OpenStack를 시작하는 사람들이 Openstack를 설치할때 가장 많이 사용하는것이 바로 Devstack Shell Script이다. DevStack Shell Script를 사용하여 OpenStack을 설치하게 되면 간단한 환경설정만으로도 쉽게 클라우드를 설치할 수 있다.


그런데, localrc라고 하는 환경설정 파일을 만드는것조차도 초보자들에게는 매우 어렵게만 느껴진다. 그리고, 나역시 물론 처음에는 잘 안되서 삽질을 했었다. 그래서, devstack shell script를 전부 분석을 하기도 했는데, 계속 업데이트 되어서 다운로드 받을때마다 다시 보긴해야 하지만 말이다. 


그럼, 지금부터 localrc 환경설정 방법을 잠시 살펴보도록 하겠다.


- HOST_IP : 설치하고자 하는 서버의 IP

- FIXED_RANGE : 인스턴스에 할당해 주기 위한 내부 IP 범위

- FLOATING_RANGE : 대체적으로 공인 IP 범위를 할당하며, 그렇지 않을 경우 내부 인트라넷 IP 범위를 할당한다.


  • Single Node, Nova-network 사용시

# default

HOST_IP=192.168.42.101

 

# network

FLAT_INTERFACE=eth0

FIXED_RANGE=10.0.0.0/20

FIXED_NETWORK_SIZE=4096

FLOATING_RANGE=192.168.0.1/24

 

# vnc

VNCSERVER_LISTEN=0.0.0.0

VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP

 

# logs

DEST=/opt/stack

LOGFILE=$DEST/logs/stack.sh.log

SCREEN_LOGDIR=$DEST/logs/screen

 

# system password

ADMIN_PASSWORD=openstack

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack

SERVICE_TOKEN=openstackservicetoken

 

# cinder

VOLUME_GROUP="cinder-volume"

VOLUME_NAME_PREFIX="volume-"


  • Multi Node, Nova-network 사용시 Controller Node

# default

HOST_IP=192.168.42.101

MULTI_HOST=True

 

# network

FLAT_INTERFACE=eth0

FIXED_RANGE=10.0.0.0/20

FIXED_NETWORK_SIZE=4096

FLOATING_RANGE=192.168.0.1/24

 

# vnc

VNCSERVER_LISTEN=0.0.0.0

VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP

 

# logs

DEST=/opt/stack

LOGFILE=$DEST/logs/stack.sh.log

SCREEN_LOGDIR=$DEST/logs/screen

 

# system password

ADMIN_PASSWORD=openstack

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack

SERVICE_TOKEN=openstackservicetoken

 

# cinder

VOLUME_GROUP="cinder-volume"

VOLUME_NAME_PREFIX="volume-"


  • Multi Node, Nova-network 사용시 Compute Node

# default

HOST_IP=192.168.42.102

MULTI_HOST=True

 

# network

FLAT_INTERFACE=eth0

FIXED_RANGE=10.0.0.0/20

FIXED_NETWORK_SIZE=4096

FLOATING_RANGE=192.168.0.1/24

 

# vnc

VNCSERVER_LISTEN=0.0.0.0

VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP

 

# logs

DEST=/opt/stack

LOGFILE=$DEST/logs/stack.sh.log

SCREEN_LOGDIR=$DEST/logs/screen

 

# system password

ADMIN_PASSWORD=openstack

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack

SERVICE_TOKEN=openstackservicetoken

 

# cinder

VOLUME_GROUP="cinder-volume"

VOLUME_NAME_PREFIX="volume-"


# system hosts
SERVICE_HOST=192.168.42.101
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
KEYSTONE_AUTH_HOST=$SERVICE_HOST
KEYSTONE_SERVICE_HOST=$SERVICE_HOST

# install service
ENABLED_SERVICES=n-cpu,n-net,n-api,cinder,c-sch,c-api,c-vol

  • Single Node, Quantum 사용시

# default

HOST_IP=192.168.42.101

 

# network

FLAT_INTERFACE=eth0

FIXED_RANGE=10.0.0.0/20

NETWORK_GATEWAY=10.0.0.1

FLOATING_RANGE=192.168.0.1/24

EXT_GW_IP=192.168.0.1

 

# vnc

VNCSERVER_LISTEN=0.0.0.0

VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP

 

# logs

DEST=/opt/stack

LOGFILE=$DEST/logs/stack.sh.log

SCREEN_LOGDIR=$DEST/logs/screen

 

# system password

ADMIN_PASSWORD=openstack

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack

SERVICE_TOKEN=openstackservicetoken

 

# cinder

VOLUME_GROUP="cinder-volume"

VOLUME_NAME_PREFIX="volume-"

 

# install service

disable_service n-net

enable_service q-svc q-agt q-dhcp q-l3 q-meta quantum


  • Multi Node, Quantum 사용시 - Controller Node

# default

HOST_IP=192.168.42.101

MULTI_HOST=True


# network

FLAT_INTERFACE=eth1

FIXED_RANGE=10.0.0.0/20

NETWORK_GATEWAY=10.0.0.1

FLOATING_RANGE=192.168.0.1/24

EXT_GW_IP=192.168.0.1

 

# vnc

VNCSERVER_LISTEN=0.0.0.0

VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP

 

# logs

DEST=/opt/stack

LOGFILE=$DEST/logs/stack.sh.log

SCREEN_LOGDIR=$DEST/logs/screen

 

# system password

ADMIN_PASSWORD=openstack

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack

SERVICE_TOKEN=openstackservicetoken

 

# cinder

VOLUME_GROUP="cinder-volume"

VOLUME_NAME_PREFIX="volume-"

 

# install service

disable_service n-net

enable_service q-svc q-agt q-dhcp q-l3 q-meta quantum


  • Multi Node, Quantum 사용시 - Compute Node

# default

HOST_IP=192.168.42.102

MULTI_HOST=True


# network

FLAT_INTERFACE=eth1

FIXED_RANGE=10.0.0.0/20

NETWORK_GATEWAY=10.0.0.1

FLOATING_RANGE=192.168.0.1/24

EXT_GW_IP=192.168.0.1

 

# vnc

VNCSERVER_LISTEN=0.0.0.0

VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP

 

# logs

DEST=/opt/stack

LOGFILE=$DEST/logs/stack.sh.log

SCREEN_LOGDIR=$DEST/logs/screen

 

# system password

ADMIN_PASSWORD=openstack

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack

SERVICE_TOKEN=openstackservicetoken

 

# cinder

VOLUME_GROUP="cinder-volume"

VOLUME_NAME_PREFIX="volume-"


# system hosts
SERVICE_HOST=192.168.42.101
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
KEYSTONE_AUTH_HOST=$SERVICE_HOST

KEYSTONE_SERVICE_HOST=$SERVICE_HOST 


# install service

ENABLED_SERVICES=n-cpu,n-api,g-api,cinder,c-sch,c-api,c-vol,quantum,q-agt


이젠 환경설정 때문에 고민하지 않아도 된다. 아래 보이는 gitHub에서 가서 설치하고자 하는 유형의 localrc를 다운로드 받아 사용하기만 하면 된다. 단, 위에 굵게 표시되어 있는 IP 정보는 반드시 설치하고자 하는 호스트의 환경에 맞추어야 한다.


https://github.com/naleeJang/devstack-localrc

Posted by 나리 짱!!! naleejang
OpenStack2013.03.13 14:43

클라우드를 접하면서 자주 만나는 부분~ 그리고, 가장 어려웠던 부분이 바로 네트워크와 관련된 용어가 아닐까 싶다. 처음에는 그저 그런것도 있는가보다 하고 지났갔는데, 계속 그냥 지나가다 보니, 나중에는 왜 이런걸 사용하는 걸까? 하는 의문점이 들기 시작했다. 그래서 오늘은 네트워크 용어에 대해 잠시 알아보고 가려고 한다. 




그림으로 한번 그려봤는데 역시나 그림으로 그리면서도 이 그림이 맍는건지 의문이 가는 이유는 무엇일까? 에휴~


  • 라우터 (Router) 

- 라우터는 위의 그림에서처럼 인터넷과 같은 서로 다른 네트워크를 연결할 때 쓰이는 장비이다. 

- 한마디로 말해서 라우터란? 지능을 가진 경로 배정기 라고 할수 있다.

- 경로 배정기는 자신이 가야 할 길을 자동으로 찾아서 갈 수 있는 능력을 가진 장비를 뜻한다.

- 라우터는 두가지 일을 하는데 하나는 Path Determination(경로 결정)이고, 또 하나는 Switching(스위칭)이다.

- 경로결정은 데이터 패킷이 목적지까지 갈 수 있는 길을 검사하여 어느곳으로 가는것이 가장 적절할지를 결정하며

- 길이 결정되면 그쪽으로 데이터 패킷을 스위칭해 준다. 


  • 브릿지(Bridge) 

- 브릿지는 말 그대로 다리다. 콜리전 도메인을 나누어 서로 통신이 가능하도록 연결시켜 주는 장비이다. 

- 콜리전 도메인은 CSMA/CD 방식에 따라 한번에 한 PC만 데이터를 전송할 수 있는 방식을 말하는데 

- 이때 두 PC에서 데이터를 전송하려고 하는것을 콜리전이 발생했다 라고 한다.

- 이와 같은 문제를 해결하기 위해 나온 장비가 바로 브릿지이다. 

- 브릿지와 스위치는 같은 역할을 한다.

 

  • 스위치 (Switch)

- 브릿지와 같은 역할을 한다. 

- 그러나 스위치는 처리 방식이 하드웨어로 이루어져 있어 소프트웨어적인 처리를 하는 브릿지보다 빠르다.

- 브릿지는 같은 속도를 지원하지만, 스위치는 서로 다른 속도를 연결해 줄 수 있는 기능이 있다.

- 브릿지보다 많은 포트수를 제공한다. 브릿지는 2~3개, 스위치는 20~100 이상

- 스위치를 프레임 처리 방식은 cut-through, store-and-forward 방식 지원, 브릿지는 store-and-forward 방식만 지원


  • 허브 (Hub)

- 허브는 Multiport(멀티포트), Repeater(리피터) 라고 할 수 있다.

- 멀티포트는 포트가 많다는 뜻이며,

- 리피터는 들어온 데이터를 그대로 재전송한다는 뜻이다.

- 한마디로 말해 포트가 여러개 달린 장비로써, 한 포트로 들어온 데이터를 나머지 포트로 뿌려준다.


  • VLAN (Virtual LAN)

- 스위치에서 지원하는 기능이다.

- VLAN을 사용하면 한 대의 스위치를 마치 여러대의 분리된 스위치처럼 사용할 수 있다.

- 뿐만 아니라, 하나의 스위치에 연결된 장비들도 브로드캐스트 도메인이 서로 다를 수 있다.



오픈스택의 퀀텀 방식을 보면 라우터, VLAN, 브릿지 와 같은 용어들이 나온다. 스위치를 쓰지 않고 브릿지를 쓰는 이유를 소프트웨어적으로 처리해야 하기 때문에 하드웨어 방식의 스위치가 아닌 브릿지를 사용할 것임을 알 수 있다.


Posted by 나리 짱!!! naleejang
OpenStack2013.03.01 21:39

클라우드 컴퓨팅이라고 하는 오픈소스 프로젝트인 "오픈스택(openstack)을 하다보면 네트워크 개념을 빼 놓을래야 빼 놓을수가 없다. 늘 항상 따라 나오는 개념이 바로 Network이다. 난 클라우드 컴퓨팅을 하면서, 늘 Network가 어려웠다. 그래서, 오늘은 그중에서도 Network Range에 대한 이야기를 써 보려고 한다. 다른 사람들도 나와 같은 어려움을 겪고 있을 것이기 때문에,... 하지만, 그 누구도 이런것 쯤은 다 알고 있는 개념이라고 생각을 하고 있고, 그 누구도 물어보지도 않고, 가르쳐주지도 않는다. 그래서, 오늘 터득하게 된 이 개념을 다른 사람들과 공유하고자 한다. 물론 내가 올린 글에 틀린 부분도 있을수 있겠지만 말이다.


오픈스택에서 네트워크를 설정하는 방법은 두가지가 있다. 

하나는 Nova-network을 사용해서 설정하는 방법, 또 다른 하나는 Quantum을 이용해서 설정하는 방법이다. 

이때 등장하는 용어 중에 Fixed IP Range와 Floating IP Range가 있다. 


Fixed IP Range

Virtual Instance를 생성할 때 할당해 주는 사설 IP 범위. 이 IP는 호스트 내부에서만 통신이 가능하다.


Floating IP Range 

Virtual Instance를 외부에서 접속할 수 있도록 할당해 주는 공인 IP 범위.



IP의 범위는 크게 다음과 같은 세가지 클래스로 구분이 된다.

 클래스 명

클래스 범위 

서브넷 마스크 

 서브넷마스크 Bit 수

호스트 Bit수 

사용가능 호스트 수 

 A Class

1.0.0.0 ~ 126.0.0.0 

255.0.0.0 

 8 Bit

24 Bit 

약 1,600 만개 

 B Class

127.0.0.0 ~ 191.0.0.0 

255.255.0.0 

 16 Bit

16 Bit 

약 65,000 개 

 C Class

192.0.0.0 ~ 223.0.0.0 

255.255.255.0 

 24 Bit

8 Bit 

 254 개


대표적으로 오픈스택을 설치할때 메뉴얼에 가장 많이 등장하는 Fixed Range 범위는 10.0.4.0/20,  10.0.0.0/24  이다. 

예제의 IP는 A Class에 해당되지만, 뒤에 나오는 /20은 서브네마스크 Bit 수를 의미하므로 B Class를 좀더 세분화했다고 할 수 있다. 


10.0.4.0 이라는 IP를 이진수로 표현하면 아래와 같다. 그런데 서브넷 마스크로 20 bit를 사용한다고 했으니 앞에서 부터 20 bit를 1로 채우면 그게 바로 서브네 마스크가 되는 것이다.


0000 1010 . 0000 0000 . 0000 0100 . 0000 0000  Network IP (10.0.4.0)

1111 1111 . 1111 1111 . 1111 0000 . 0000 0000  Subnet Mask (255.255.240.0)

-----------------------------------------  (And 연산)

0000 1010 . 0000 0000 . 0000 0000 . 0000 0000  Subnet (10.0.0.0)


여기서 사용되는 10.0.4.0의 서브넷 마스크는 255.255.240.0 이 되며, 서브넷은 10.0.0.0 이 된다. 

그리고, 호스트 IP 범위는 10.0.4.1 ~ 10.0.255.254 까지가 되는 것이다. 10.0.255.255는 왜 빼는거지? 10.0.255.255는 브로드캐스트용 주소라고 한다~!! 그렇게 되면 사용가능한 Network Size는 4,094 개가 되는 것이다.


그럼 이번에는 10.0.0.0/24 도 한번 더 해 볼까? /24는 서브넷 마스크 Bit수니까


0000 1010 . 0000 0000 . 0000 0000 . 0000 0000  Network IP (10.0.0.0)

1111 1111 . 1111 1111 . 1111 1111 . 0000 0000  Subnet Mask (255.255.255.0)

----------------------------------------- (And 연산)

0000 1010 . 0000 0000 . 0000 0000 . 0000 0000  Subnet (10.0.0.0)


10.0.0.0/24 의 네트워크 IP는 10.0.0.0 이고, 서브넷 마스크는 255.255.255.0, 서브넷은 10.0.0.0 이다.

이때 사용 가능한 호스트 IP 범위는 10.0.0.1 ~ 10.0.0.254 가 되며, 호스트 수는 254개이다.



이와 같은 공식을 거치면 우리가 할당해 주기 위한 Floating IP Range도 계산할 수 있다. 어렵게만 생각했던 네트워크 범위 할당 알고나니 별 것이 아니였다. 이젠 알고 쓰자~!!! ^^ 

Posted by 나리 짱!!! naleejang
OpenStack2013.01.11 17:46

2011 9! 나는 Openstack이라고 하는 오픈 소스 클라우드 프로젝트를 만났다. 그때 막 대두가 되고 있는 것들이 빅데이터, 클라우드, 가상화 라고 불리는 것들이고, 그때 접한 것이 바로 Openstack이였다. 내가 Openstack을 처음 만났을 때는 프로젝트가 시작 된지 얼마 되지 않았을 때였고, 그 누구도 OpenStack을 어떻게 설치하고, 어떻게 사용하면 되는지에 대한 방법을 제대로 알고 있는 사람이 얼마 되지 않았었다. 그때 도전한 것이 바로 Openstack Swift였다. Swift Amazon S3와 같은 개념을 가지고 있는 Object Storage이다. 기존에는 물론 Web Hard라고 하는 것이 존재를 하고 있었지만, 그것은 단지 데이터를 업로드하고 다운로드 할 수 있는 아주 단순한 기능만을 제공하고 있는 반면에 Object Storage OpenStack SwiftOpenStack Nova의 이미지 자료를 백업할 수 있는 백업용으로, 사용자들에게 웹 하드처럼 데이터를 저장하고 다운로드 받을 수 있는 공간으로 사용할 수 있게끔 누구나 시스템을 설치하고, 운영할 수 있는 방법을 제공하는 것이 바로 Openstack Swift였던 것이다.


나를 알고, 적을 알면 백전백승이다라는 옛말이 있다. Openstack을 알아야 어디에 어떻게 활용을 하고, Amazon을 알아야 우리 회사에 필요한 클라우드 시스템이 어떤 것인지를 알 수가 있는 것이다. 그럼, 지금부터 잠시 Openstack에 대해 알아보도록 하자.


Openstack 3가지 기본 서비스와 기본 서비스를 Supporting 해주는 4가지 부가 서비스들로 이루어져 있다.

-      기본서비스

n  Cloud Compute Service : Nova

n  Object Storage Service : Swift

n  Cloud Image Service : Glance

-      부가서비스

n  Identity Service : Keystone

n  Network Service : Quantum

n  Blocked Storage Service : Cinder

n  Dashboard Service : Horizon


Openstack은 위의 7가지 서비스들이 유기적으로 결합되어 하나의 서비스를 제공해 준다. 아래의 Conceptual Architecture 처럼 말이다.



처음에는 단지 Compute, Image, Object Storage 라는 3가지 기본 서비스만으로 시작한 프로젝트가 지금은 무려 7개의 프로젝트가 되었고, NASA Rackspace로 시작된 본 프로젝트는 지금 87개의 나라에 약 6695명의 사람들로 커뮤니티가 형성이 되어 있으며, 공식으로 Support하는 업체만 해도 무려 34개나 된다. 뿐만 아니라, 지난 9 19에는 Rackspace를 떠나 Openstack Foundation 이 출범되었다. 이때 물론 오픈스택 한국 커뮤니티에서도 이를 축하하는 축하의 자리도 마련했었다.



스마트 폰 시장에는 애플의 iPhone과 애플에 맞서는 구글의 Android Phone으로 나뉘어져 있다. Openstack Amazon이라고 하는 iPhone과 같은 것에 대항하는 Android 같은 Open Source라는 점에 주목을 해야 한다. 왜 많은 기업들은 앞 다투어 오픈스택을 지지하고 Supporting하는 걸까? 그것은 바로 가격! 돈이다. 상용서비스는 편하다. 하지만, 장기적으로 상용 서비스를 사용하게 되면 많은 돈이 지출된다. 사람들은 어떻게 하면 돈을 쓰지 않고 클라우드 서비스를 사용할 수 있을까? 의 해결책이 바로 Openstack이 되는 것이다. 그래서, 많은 나라에서 많은 기업들이 Openstack에 관심을 갖고, Openstack을 중심으로 한 다양한 Applications을 개발하며, 이와 관련한 Business가 활발하게 전개되고 있는 것이다. 그러면, 대한민국은 어떨까?



가장 대표적인 Case로 지난 201110KT에서는 Openstack Swift을 기반으로 한 UCloud의 스토리지 서비스를 상용화에 성공하였다. 그에 이어 2012 7월에는 ixcloud에서 Openstack을 기반으로 한 Compute 서비스를 상용화하였다. 뿐만 아니라, 여러 국책과제로 OpenStack이 지정이 되어, 시스템을 구축하고, 운영 중에 있으며, 일반 기업 내에서도 Open Source Project Openstack Private Cloud로 구축하여 운영하고 있다. 뿐만 아니라, 대용량의 스토리지 서비스를 제공하려고 하는 기업에서도 Openstack Swift 라는 Object Storage Service의 기술을 검증하고 안정화 테스트를 계속해서 진행하고 있다. 대학이나 연구소에서는 어떨까? 일부 대학에서는 클라우드를 배우는 과목이 생기고, Based System으로 Openstack을 구축하며, 연구소에서는 다양한 연구용으로 그 Based System OpenStack으로 구축한다. 대용량의 데이터를 보관해야 하는 병원에서는 Openstack Swift를 구축하여 스토리지로 활용하기도 한다. 지금 대한민국의 여러 분야에서 Open Cloud Openstack을 사용하려고 시도하는 곳이 늘어나고 있는 추세이다.


또한 Openstack은 매번 그 기능을 향상시켜 Version Up이 되고 있고, 새로운 기능이 추가될 때마다 새로운 업체들이 Openstack Join하여 Openstack의 가치를 부각시키고 있다. 얼마 전에 가상화 하면 떠오르는 가장 대표적인 업체 Vmware OpenStack Join을 하였고, 대부분의 대형 Vendor 업체들이 Openstack에 가담하고 있다.


Openstack! Android가 스마트 폰 시장의 절반을 가져 갔듯이 Cloud 시장의 절반은 Openstack이 될 것이며, 그 시장의 가치는 아마도 무궁무진할 것이다.

 

참조 URL :

http://wiki.openstack.org/Quantum

http://www.itworld.co.kr/news/77892

http://www.openstack.org/foundation/

http://www.wired.com/wiredenterprise/2012/08/vmware_openstack/

http://www.networkworld.com/news/2012/110512-rightscale-openstack-263969.html

http://docs.openstack.org/trunk/openstack-compute/admin/content/conceptual-architecture.html

Posted by 나리 짱!!! naleejang
OpenStack2013.01.04 15:17

OpenStack의 인증을 담당하고 있는 시스템은 Keystone입니다. 그 Keystone의 서브 명령어들은 몇개나 될까요? 그래서 제가 Keystone help에게 물어보았습니다. 그랬더니 다음과 같이 37개의 서브 명령어들로 이루어져 있다고 Keystone Help가 대답하였습니다. 뿐만 아니라 각각의 명령어들의 담당하는 일까지 친철하게 가르쳐 주었습니다. 저는 그것을 단지 보기 쉽게 테이블로 한번 정리해 보았습니다. 다음에는 각각의 서브 명령어들을 사용하기 위한 공식에 대해 물어볼 예정입니다. 


 No

Command 

설명 

Description 

 1

 catalog

서비스 카탈로그 보기

 

 2

 ec2-credentials-create

tenant별 사용자를 위한 EC2 호환 인증 계정 생성

Create EC2-compatibile credentials for user per tenant

 3

 ec2-credentials-delete

EC2 호환 인증 계정 삭제 

Delete EC2-compatibile credentials

 4

 ec2-credentials-get

EC2 호환 인증 계정 상세 보기

Display EC2-compatibile credentials

 5

 ec2-credentials-list

EC2 호환 인증계정 목록

List EC2-compatibile credentials for a user

 6

 endpoint-create

서비스와 연결되는 endpoint 생성

Create a new endpoint associated with a service

 7

 endpoint-delete

서비스 endpoint 삭제

Delete a service endpoint

 8

 endpoint-get

서비스 endpoint 상세보기

 

 9

 endpoint-list

서비스 endpoint 목록

List configured service endpoints

 10

 password-update

admin 계정 비밀번호 수정

Update own password

 11

 role-create

Role(권한) 생성

Create new role

 12

 role-delete

Role 삭제

Delete role

 13

 role-get

Role 상세보기

Display role details

 14

 role-list

Role 목록

List all roles

 15

 service-create

서비스카탈로그에 서비스 추가

Add service to Service Catalog

 16

 service-delete

서비스카탈로그로부터 서비스 삭제

Delete service from Service Catalog

 17

 service-get

서비스카탈로그의 서비스 상세보기

Display service from Service Catalog

 18

 service-list

서비스카탈로그의 서비스 목록

List all services in Service Catalog

 19

 tenant-create

테넌트 생성

Create new tenant

 20

 tenant-delete

테넌트 삭제

Delete tenant

 21

 tenant-get

테넌트 상세보기

Display tenant details

 22

 tenant-list

테넌트 목록

List all tenants

 23

 tenant-update

테넌트명, 설명, 활성화 여부 수정

Update tenant name, description, enabled status

 24

 token-get

토큰 조회

 

 25

 user-create

사용자계정 생성

Create new user

 26

 user-delete

사용자계정 삭제

Delete user

 27

 user-get

사용자계정 상세보기

Display user details.

 28

 user-list

사용자계정 목록

List users

 29

 user-password-update

사용자 패스워드 수정

Update user password

 30

 user-role-add

사용자에게 권한 추가

Add role to user

 31

 user-role-list

사용자에게 부여된 권한 목록

List roles granted to a user

 32

 user-role-remove

사용자로부터 권한 삭제

Remove role from user

 33

 user-update

사용자 계정, 이메일, 활성화 여부 수정

Update user's name, email, and enabled status

 34

 discover

키스톤 서버 및 인증 조회

Discover Keystone servers and show authentication

 35

 bootstrap

테넌트와 사용자를 생성 후 새로운 권한을 부여

Grants a new role to a new user on a new tenant, after creating each.

 36

 bash-completion

모든 명령어와 옵션을 화면으로 출력

Prints all of the commands and options to stdout.

 37

 help

이 프로그램과 서브 명령어의 도움말을 보여줌.

Display help about this program or one of its subcommands.



명령어의 이해를 돕기 위해 간단하게 그려본 Keystone 구조를 첨부하도록 하겠습니다.



Posted by 나리 짱!!! naleejang
OpenStack2012.12.21 15:40

오늘은 예전에 Devstack Shell Script를 이용해서 살알짝 수정했었던 Swift Install Shell Script를 여러분들께 공개할까 합니다.

테스트나 스터디용으로 만든 버전이라서 혼자 가지고 있는것보다는 같이 공유해서 보면 좋을 것 같다는 생각을 했습니다. 보시다가 더 좋은 아이디어가 있다면 역시 서로서로 공유할 수 있는 아름다운 사회 문화를 만들어 봅시다. ^^



DevStack Shell Script를 보면 Openstack의 

- Compute Service인 Nova 뿐만 아니라 

- Image Service인 Glance, 

- Object Storage인 Swift, 

- Network Service인 Quantum, 

- Volume Storage 인 Cinder, 

- Web Service인 Horizon,

- Auth Service인 Keystone 

등 모든 것을 전부 다 설치할 수 있도록 지원해 준다.



그런데 이중에서 단독으로 따로 떨어져 나와 독단적으로 구성할 수 있는 것이 있는데 그것이 바로 Object Storage인 Swift이다.

Swift가 다른 OpenStack과 함께 설치가 되면 Glance를 통해 이미지를 저장할 수 있는 저장소로 쓰이지만, 따로 구성했을 경우에서는 클라우드 스토리지로 사용할 수 있다.


예전에 테스트로 DevStack Shell Script를 분석하면서 Swift만 따로 구성할 수 있는 Script를 만들면 좋을 것 같아 테스트 삼아 한번 수정해 본것이 있는데 그동안 시간이 안되서 포스팅을 못하고 있었다. 오늘 잠시 시간이 되어 포스팅을 한번 해 볼까 한다.


요즘에 다운로드 받는 DevStack Shell Script를 보면 Part별로 소스가 전부 나누어져 개발되어 있는 것을 볼 수 있다. 전에는 거의 한 소스에 전부 모여 있는 것들이 Part별로 나누어져 숨어 있어 한번 더 소스를 찾아가야 하는 번거로움이 있지만, 소스를 수정할 때나 업무를 분담할때는 오히려 더 좋을 수도 있겠다는 생각이 든다.


그런데, 내가 수정했던 DevStack Shell Script는 좀 오래 된 몇개월 된 버전에서 수정했다는 사실이다.

테스트로 만들어본 GitHub 계정에 올려 놓았으니 테스트로 공부를 해 보고 싶으신 분들에 한에서 다운로드 받아 설치해볼수 있다. 그러나, 절대로 시스템 구축시에는 사용할 수 없다~~~~!!!!


https://github.com/naleeJang/devstack-swift


'OpenStack' 카테고리의 다른 글

OpenStack! 그 시장의 가치는?  (1) 2013.01.11
Keystone 명령어 테이블  (0) 2013.01.04
Openstack Swift Install Shell Script  (2) 2012.12.21
Cinder 명령어로 볼륨 생성하기  (0) 2012.12.13
Chef 명령어 정리  (0) 2012.12.07
Ubuntu에서 Ubuntu Instance로 접속할 때~!!  (7) 2012.11.21
Posted by 나리 짱!!! naleejang
OpenStack2012.12.13 16:21

오픈테크넷에서 세미나를 한 후 저에게 질문을 해 오시는 분들이 생기기 시작했습니다. 저도 아직 오픈스택에 대해 많은 것을 알고 있는것이 아니라, 그냥 단지 먼저 삽질을 시작한 것 뿐이고 아직 삽질하지 못한 부분이 더 많이 있습니다. 


그리고, 질문들이 제가 이전에 겪었던 그래서 커뮤니티 회원의 누군가로부터 도움을 받았던 내용들이라 저도 그 내용을 다시 전파를 해 주었습니다. 오늘은 어떤 분이 cinder 볼륨과 nova 볼륨에 대한 질문을 해 오셨기에 저도 아직 사용해 보지 않은 내용이고 많이 테스트 해 보지 않은 부분이라서 cinder 명령어를 테스트 해 보고, 정리해 보았습니다.



Cinder 명령어는 nova 명령어와 같이 cinder-manage 로 시작하는 명령어가 있고, cinder로 시작하는 명령어가 있다. 어떤 종류의 서브 명령어와 옵션들이 있는지 궁금하다면 help를 치면 친절하게 어떤 명령어들이 있는지 나온다.

$ cinder-manage --help

Available categories:

       config

       db

       host

       logs

       shell

       sm

       version

       volume

       migrate

 

$ cinder --help

Command-line interface to the OpenStack Volume API.

Positional arguments:

  <subcommand>

    absolute-limits     Print a list of absolute limits for a user

    create              Add a new volume.

    credentials         Show user credentials returned from auth

    delete              Remove a volume.

    endpoints           Discover endpoints that get returned from the

                        authenticate services

    extra-specs-list    Print a list of current 'volume types and extra specs'

                        (Admin Only).

    list                List all the volumes.

    quota-class-show    List the quotas for a quota class.

    quota-class-update  Update the quotas for a quota class.

    quota-defaults      List the default quotas for a tenant.

    quota-show          List the quotas for a tenant.

    quota-update        Update the quotas for a tenant.

    rate-limits         Print a list of rate limits for a user

    rename              Rename a volume.

    show                Show details about a volume.

    snapshot-create     Add a new snapshot.

    snapshot-delete     Remove a snapshot.

    snapshot-list       List all the snapshots.

    snapshot-rename     Rename a snapshot.

    snapshot-show       Show details about a snapshot.

    type-create         Create a new volume type.

    type-delete         Delete a specific volume type

    type-key            Set or unset extra_spec for a volume type.

    type-list           Print a list of available 'volume types'.

    bash-completion     Prints all of the commands and options to stdout so

                        that the

    help                Display help about this program or one of its

                        subcommands.


cinder-manage 의 서브 커맨드들은 9개가 존재를 하며 그중에서도 가장 많이 쓰이는 것이 host 가 아닐까 싶다.

cinder volume storage로 설정되어 있는 host 리스트 정보를 보여준다. 아직까지는 cinder가 제대로 구현이 되지 않아 debug 도 함께 보이지만, 이것도 좀 업데이트 되지 않을까 싶다.

$ cinder-manage host list

host                          zone          

2012-12-13 15:49:35 DEBUG cinder.utils [req-f93bbb68-15a9-47e6-a104-20c5cde70c3c None None] backend <module 'cinder.db.sqlalchemy.api' from '/opt/stack/cinder/cinder/db/sqlalchemy/api.pyc'> from (pid=5719) __get_backend /opt/stack/cinder/cinder/utils.py:557

openstack02                   nova          

openstack01                   nova          

openstack03                   nova


그외에 cinder-manage의 서브 커맨드들은 어떤 옵션들이 있는걸까? Help를 통해 알아보자

$ cinder-manage config   # 이 명령어는 cinder.conf 파일을 보여준다.

/usr/local/bin/cinder-manage category action [<args>]

Available actions for config category:

       list

 

$ cinder-manage db       # DB와 내용을 sync시키고, version정보를 보여준다.

/usr/local/bin/cinder-manage category action [<args>]

Available actions for db category:

       sync

       version

 

$ cinder-manage logs     # cinder를 사용하면서 발생하는 에러로그와 시스템로그를 보여준다.

/usr/local/bin/cinder-manage category action [<args>]

Available actions for logs category:

       errors

       syslog


지금까지는 cinder-manage 명령어에 대해서 알아보았다. 지금부터는 cinder 로 시작하는 명령어에 대해서 알아보도록 하자.

나는 우선 cinder 명령어를 익히기 위해서 Dashboard에서 다 지원하지만, Command 로 볼륨을 생성하고 인스턴스에 Attach를 시켜보았다. 같이 한번 해 보도록 하자.


1. 우선 내가 생성할 수 볼륨 사이즈가 어떻게 되는지 알아본다. 이건 다음과 같이 다양한 명령어로 확인할 수 있다. 

$ cinder absolute-limits

+-------------------------+-------+

|           Name          | Value |

+-------------------------+-------+

| maxTotalVolumeGigabytes |  1000 |

|     maxTotalVolumes     |   10  |

+-------------------------+-------+

 

$ cinder quota-show nalee   # nalee는 내 계정이 소속된 Tenant 명이다.

+-----------+-------+

|  Property | Value |

+-----------+-------+

| gigabytes |  1000 |

|  volumes  |   10  |

+-----------+-------+

$ cinder quota-defaults nalee

+-----------+-------+

|  Property | Value |

+-----------+-------+

| gigabytes |  1000 |

|  volumes  |   10  |

+-----------+-------+

$ cinder quota-class-show nalee

+-----------+-------+

|  Property | Value |

+-----------+-------+

| gigabytes |  1000 |

|  volumes  |   10  |

+-----------+-------+


2. cinder create 명령어로 volume을 생성한다.

$ cinder create --display-name "testvol" --display-description "test" --availability-zone "nova" 100

+---------------------+--------------------------------------+

|       Property      |                Value                 |

+---------------------+--------------------------------------+

|     attachments     |                  []                  |

|  availability_zone  |                 nova                 |

|       bootable      |                false                 |

|      created_at     |      2012-12-13T05:28:13.131825      |

| display_description |                 test                 |

|     display_name    |               testvol                |

|          id         | a6257e84-a8a9-403a-8587-ee70aa476a58 |

|       metadata      |                  {}                  |

|         size        |                 100                  |

|     snapshot_id     |                 None                 |

|        status       |               creating               |

|     volume_type     |                 None                 |

+---------------------+--------------------------------------+


이렇게 생성을 하면 Dashboard의 Volumes 메뉴에서 확인이 가능하다.

 

3. 볼륨이 잘 생성되었는지 cinder list로 확인한다.

$ cinder list

+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

|                  ID                  |   Status  | Display Name | Size | Volume Type | Bootable | Attached to |

+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

| 260d2060-eb6f-4ed9-9b46-c7ae999379fb | available |   testvol    | 100  |     None    |  false   |             |

+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+


4. 이번에는 volume의 상세정보를 한번 확인해 보자.

$ cinder show 260d2060-eb6f-4ed9-9b46-c7ae999379fb

+------------------------------+--------------------------------------+

|           Property           |                Value                 |

+------------------------------+--------------------------------------+

|         attachments          |                  []                  |

|      availability_zone       |                 nova                 |

|           bootable           |                false                 |

|          created_at          |      2012-12-13T05:28:13.000000      |

|     display_description      |                 test                 |

|         display_name         |               testvol                |

|              id              | 260d2060-eb6f-4ed9-9b46-c7ae999379fb |

|           metadata           |                  {}                  |

|    os-vol-host-attr:host     |             openstack02              |

| os-vol-tenant-attr:tenant_id |   1e1cf5cd2c3b419a858f9730a320860e   |

|             size             |                 100                  |

|         snapshot_id          |                 None                 |

|            status            |              available               |

|         volume_type          |                 None                 |

+------------------------------+--------------------------------------+


5. 그럼 이제 인스턴스와 cinder 볼륨을 연결시켜보자. 다음과 같이 nova-list 로 인스턴스 정보를 확인하고 cinder list로 볼륨 정보를 확인한다. 

$ nova list

+--------------------------------------+--------+--------+--------------------+

| ID                                   | Name   | Status | Networks           |

+--------------------------------------+--------+--------+--------------------+

| 88b90166-88aa-4d2d-acc1-90b3ca9016c8 | testvm | ACTIVE | private=10.4.128.2 |

+--------------------------------------+--------+--------+--------------------+

$ cinder list

+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

|                  ID                  |   Status  | Display Name | Size | Volume Type | Bootable | Attached to |

+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

| 260d2060-eb6f-4ed9-9b46-c7ae999379fb | available |   testvol    | 100  |     None    |  false   |             |

+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

$ nova volume-attach 88b90166-88aa-4d2d-acc1-90b3ca9016c8 260d2060-eb6f-4ed9-9b46-c7ae999379fb /dev/vdc

+----------+--------------------------------------+

| Property | Value                                |

+----------+--------------------------------------+

| device   | /dev/vdc                             |

| id       | 260d2060-eb6f-4ed9-9b46-c7ae999379fb |

| serverId | 88b90166-88aa-4d2d-acc1-90b3ca9016c8 |

| volumeId | 260d2060-eb6f-4ed9-9b46-c7ae999379fb |

+----------+--------------------------------------+


이렇게 생성하고 나면 Dashboard에서 역시 인스턴스와 볼륨이 연결되어 있는 걸을 확인 할 수 있다.



처음 오픈스택을 시작했을 때는 Help 기능이 있는지도 잘 몰라서 많이 헤매었는데 몇 개월동안 삽질을 하다보니 이제 당연히 Help를 보고 따라 쳐보면 되겠구나 라는 생각이 든다. 나도 그동안 많이 발전한 거겠지~~~ 삽질을 통해서 말이다.ㅋ


오픈스택이라는 오픈소스는 먼저 삽질을 시작한 선배들에게서 배우고, 또 이제 막 삽질을 시작한 후배들에게 정보를 공유할 수 있어 이것이 바로 오픈소스를 공부하고 사용하는 또 하나의 매력이 아닌가 싶다. ^^

Posted by 나리 짱!!! naleejang
OpenStack2012.12.07 05:36

몇일동안 Chef 서버를 설치하고 어떻게 하면 knife를 잘 쓸수 있을까 하고 고민하다가 knife 명령어들은 어떤 것들이 있을까 하고 궁금해 지기 시작했다.



물론 찾아보니 Chef Wiki 페이지(http://wiki.opscode.com/display/chef/Home)에 사용예제와 함께 자세하게 설명이 나와있다.

그리고, Blog나 웹을 검색하다보면 Chef에 대한 글을 많이 올려놓은 것을 찾아볼 수 있었다. 

몇가지 유용한 사이트의 URL을 남겨두도록 하겠다.


- http://blog.naver.com/PostView.nhn?blogId=enril99&logNo=140173071868&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView

http://call518.tistory.com/39

- http://generalthings.com/2012/05/08/simple-steps-install-chef-ubuntu-12-04-10-04/

http://blog.woosum.net/archives/936


아래 내용은 Chef의 knife 명령어들이다. 아래있는 명령어 사용법은 wiki에 아주 친절하게 설명이 되어 있으므로 참조한다.


** BOOTSTRAP COMMANDS **

knife bootstrap FQDN (options)


** CLIENT COMMANDS **

knife client bulk delete REGEX (options)

knife client show CLIENT (options)

knife client delete CLIENT (options)

knife client reregister CLIENT (options)

knife client list (options)

knife client edit CLIENT (options)

knife client create CLIENT (options)


** CONFIGURE COMMANDS **

knife configure (options)

knife configure client DIRECTORY


** COOKBOOK COMMANDS **

knife cookbook show COOKBOOK [VERSION] [PART] [FILENAME] (options)

knife cookbook create COOKBOOK (options)

knife cookbook bulk delete REGEX (options)

knife cookbook list (options)

knife cookbook delete COOKBOOK VERSION (options)

knife cookbook download COOKBOOK [VERSION] (options)

knife cookbook test [COOKBOOKS...] (options)

knife cookbook upload [COOKBOOKS...] (options)

knife cookbook metadata COOKBOOK (options)

knife cookbook metadata from FILE (options)


** COOKBOOK SITE COMMANDS **

knife cookbook site install COOKBOOK [VERSION] (options)

knife cookbook site download COOKBOOK [VERSION] (options)

knife cookbook site search QUERY (options)

knife cookbook site show COOKBOOK [VERSION] (options)

knife cookbook site list (options)

knife cookbook site share COOKBOOK CATEGORY (options)

knife cookbook site unshare COOKBOOK


** DATA BAG COMMANDS **

knife data bag show BAG [ITEM] (options)

knife data bag list (options)

knife data bag from file BAG FILE|FOLDER [FILE|FOLDER..] (options)

knife data bag edit BAG ITEM (options)

knife data bag delete BAG [ITEM] (options)

knife data bag create BAG [ITEM] (options)


** ENVIRONMENT COMMANDS **

knife environment from file FILE [FILE..] (options)

knife environment show ENVIRONMENT (options)

knife environment list (options)

knife environment edit ENVIRONMENT (options)

knife environment delete ENVIRONMENT (options)

knife environment create ENVIRONMENT (options)


** EXEC COMMANDS **

knife exec [SCRIPT] (options)


** HELP COMMANDS **

knife help [list|TOPIC]


** INDEX COMMANDS **

knife index rebuild (options)


** NODE COMMANDS **

knife node run_list add [NODE] [ENTRY[,ENTRY]] (options)

knife node show NODE (options)

knife node bulk delete REGEX (options)

knife node delete NODE (options)

knife node create NODE (options)

knife node edit NODE (options)

knife node list (options)

knife node run_list remove [NODE] [ENTRIES] (options)

knife node from file FILE (options)


** RECIPE COMMANDS **

knife recipe list [PATTERN]


** ROLE COMMANDS **

knife role delete ROLE (options)

knife role list (options)

knife role create ROLE (options)

knife role edit ROLE (options)

knife role bulk delete REGEX (options)

knife role from file FILE [FILE..] (options)

knife role show ROLE (options)


** SEARCH COMMANDS **

knife search INDEX QUERY (options)


** SSH COMMANDS **

knife ssh QUERY COMMAND (options)


** STATUS COMMANDS **

knife status QUERY (options)


** TAG COMMANDS **

knife tag create NODE TAG ...

knife tag list NODE

knife tag delete NODE TAG ...

Posted by 나리 짱!!! naleejang
OpenStack2012.11.21 10:47

오랜만에 Openstack에서 할당 받은 VM Instance에 접속을 할 일이 생겼습니다. 그것도 Ubuntu Command 로 말입니다.

VM을 할당할때 받아두었던 key.pem 파일을 다시 Ubuntu Server로 올리고서 할당받은 Ubuntu VM Instance에 ssh 접속을 하려니 자꾸 에러가 나더군요~!! 그래서, 역시 Google에서 물어봤죠~!! 안 나오더군요~!! 내 검색 키워드에 문제가 있는 건지는 잘 모르겠지만 말이예요~!!


오늘은 그래서 어떤 문제가 발생했길래 그 쉬운 ssh 접속도 제대로 못하나 어떤 에러를 접했고, 어떻게 하면 되는지를 여러분들께 알려드리도록 하겠습니다. 실은 제가 너무 잘 까먹어서 다음에 제가 다시 보고 하기 위해서이기도 해요~!! ^^;;;;



1.우선 OpenStack에서 Ubuntu Instance를 할당받으려면 public key가 필요합니다. 그래서 keypairs에서 key를 하나 생성을 해 줍니다. 여기까지는 다들 아시겠죠~!!


2. 할당 받은 Key를 가지고서 Ubuntu Instance를 하나 생성을 합니다. 이제 생성을 했으니 접속을 해 봐야겠죠~!! ssh로 말입니다.


3. ssh 접속을 하려면 22번 포트가 열려 있어야 합니다. 다들 아시죠~!! Security Groups에서 22번 포트를 추가해 줍니다.


4. 아까 keypairs에서 할당 받은 public key 기억하시죠~!! 그걸 Ubuntu Server에 올려줍니다.


5. 그리고서는 ssh -i key.pem root@10.4.128.132 하고 명령을 내리면 아래와 같은 메시지가 출력이 되면서 접속이 안됩니다.

# ssh -i testkey.pem root@10.4.128.132

The authenticity of host '10.4.128.132 (10.4.128.132)' can't be established.

ECDSA key fingerprint is 53:36:11:29:9f:6c:70:57:26:24:95:9c:e7:8a:fe:3e.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '10.4.128.132' (ECDSA) to the list of known hosts.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Permissions 0644 for 'testkey.pem' are too open.

It is required that your private key files are NOT accessible by others.

This private key will be ignored.

bad permissions: ignore key: testkey.pem

Permission denied (publickey).

해석을 해보면 가장 윗줄에 나온 3줄은 한번로 해당 호스트로 접속한 적이 없어 신뢰할 수 없는데 그래도 계속 접속을 하겠느냐 라는 뜻입니다. 당연히 yes 라고 입력을 하고 접속을 강행을 합니다. 

이때 해당 호스트의 접속 권한을 추가하려고 하는데 private key file이 unprotected 되었다고 메시지가 뜹니다. protect 가 보호하다 라는 뜻을 가지고 있죠~!! 그런데 unprotected라고 하면 보호되지 않았다. 이런 뜻이 되는 겁니다. 

왜 그런가하고 아래 줄을 봤더니 권한이 너무 많이 오픈되었다고 하네요~!! 다른 사용자들이 접근할 수 없는 권한이 있어야 한다고 아래줄에 나오는거 보이시죠~!! 그래서 이 private key file은 무시될 꺼라고 하네요~!!


6. 그럼, 우리는 여기서 chmod로 key.pem 파일의 권한을 빼 주어야 하는 겁니다. 그럴려면 chmod 의 속성들을 알야야 겠죠~!! 

chmod 명령어를 어떻게 쓰는건지 까지 여기서 설명하면 너무 글이 길어지므로 다음에 제가 다시 설명을 드리도록 하겠습니다.

chmod 에 대한 설명은 이곳에서 >> (http://naleejang.tistory.com/56)


7. 정답은 600 입니다. 여기서 100번대는 소유주, 10번대는 그룹, 1번대는 다른 사용자에게 권한을 주겠다는 뜻입니다. 나만 사용할 수 있어야 하니까 당연히 100번대에만 권한을 줍니다. 이때 읽기는 4, 쓰기는 2, 실행은 1입니다. 읽고 쓰기가 가능해야 하므로 4+2 = 6 해서 chmod 600 이 되는 것입니다. 

# chmod 600 testkey.pem

# ssh -i testkey.pem root@10.4.128.132


The programs included with the Ubuntu system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.


Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by

applicable law.


Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-18-generic x86_64)


 * Documentation:  https://help.ubuntu.com/


  System information as of Wed Nov 21 01:17:43 UTC 2012


  System load:  0.08              Processes:           64

  Usage of /:   35.1% of 1.96GB   Users logged in:     0

  Memory usage: 9%                IP address for eth0: 10.0.0.4

  Swap usage:   0%


  Graph this data and manage this system at https://landscape.canonical.com/


0 packages can be updated.

0 updates are security updates.


Get cloud support with Ubuntu Advantage Cloud Guest

  http://www.ubuntu.com/business/services/cloud

root@ubuntu:~#


여러분 보이시나요? 접속이 된것을... 답은 "chmod 600 key.pem" 이였습니다.


우리 다음부터는 이런것으로 삽질말자구요~!! 그럼 오늘 하루도 모두들 파이팅입니다.

Posted by 나리 짱!!! naleejang
OpenStack2012.11.15 18:08

이번 글에서는 아직 해결하지 못한 삽질 중인 문제에 대해 적어보려고 합니다. OpenStack Folsom 이 Release 된지 이제 한달정도가 지났습니다. 그래서, 저도 Folsom에 이번에는 Quantum까지 함께를 설치를 하기로 결정했습니다. 그런데, Host Server에서 Ping이 되질 않더군요~!!! 그래서, Floating IP를 할당해 보자. 하고 시도했더니 그것마저 아니 되네요~!! 


그래서 그 문제를 에러로그만 보여줄 것이 아니라, 전반적인 상황을 그림과 함께 보여주면 어떨까 하는 생각을 했습니다. 그리고, 테스트를 하거나, 설치를 하려고 시도하시는 분들~ 왜 나만 안되지가 아니라 재도 안되네... 하고 공유할 수 있는 계기가 되지 않을까 하는 마음으로 지금부터 글을 적어보고자 합니다. 함께 고민해 주세요~!!!!


우선, 설치과정은 제외를 했습니다. 그리고, 네트워크와 인스턴스를 생성했다는 전제조건으로 그 다음과정부터 적어보도록 하겠습니다. 




우선, 나는 아래 그림처럼 Instance를 하나 생성하였다.


이번에는 VNC 접속을 해 보았다. 잘 된다.


 

여기까지는 정말 아무 문제없이 잘 진행이 되었다. 그래서 계속 잘 될 줄 알았다. 그런데, 문제는 지금부터가 문제이다

지금 내가 생성한 Instance ssh로 접속을 해 볼 것이다. 호스트 서버에 접속을 해서 ping을 먼저 날려본다. Operation not permitted란다. 그럼 ssh도 안 된다. Ping이 안 나가므로

# ping 192.168.0.3

PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.

ping: sendmsg: Operation not permitted

ping: sendmsg: Operation not permitted

ping: sendmsg: Operation not permitted

ping: sendmsg: Operation not permitted

ping: sendmsg: Operation not permitted

^C

--- 192.168.0.3 ping statistics ---

5 packets transmitted, 0 received, 100% packet loss, time 3999ms

 


그럼 인스턴스 생성은 잘 되었을까? Ifconfig  확인해 보자. 현재 이 PC에는 qbr 로 시작하는 가상 라우터가 2개가 생성이 되어 있으며, qvb로 시작되는 가상 브릿지가 2, 가상 인스턴스와 연결되는 qvo로 시작하는 가상 네트워크가 2개가 있다. 그리고, vnet이라고 하는 가상 인스턴스도 생성이 되어 있다.

# ifconfig

br-ex     Link encap:Ethernet  HWaddr 76:fe:a6:96:6a:48 

          inet addr:172.24.4.225  Bcast:0.0.0.0  Mask:255.255.255.240

          inet6 addr: fe80::74fe:a6ff:fe96:6a48/64 Scope:Link

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:58 errors:0 dropped:0 overruns:0 frame:0

          TX packets:61 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:4873 (4.8 KB)  TX bytes:5367 (5.3 KB)

 

eth0      Link encap:Ethernet  HWaddr fa:16:3e:10:08:4f 

          inet addr:10.4.128.15  Bcast:10.4.143.255  Mask:255.255.240.0

          inet6 addr: fe80::f816:3eff:fe10:84f/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1224007 errors:0 dropped:3601 overruns:0 frame:0

          TX packets:719060 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:545013699 (545.0 MB)  TX bytes:56369645 (56.3 MB)

          Interrupt:11 Base address:0xa000

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:1772357 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1772357 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:1336393813 (1.3 GB)  TX bytes:1336393813 (1.3 GB)

 

qbr8f514403-0c Link encap:Ethernet  HWaddr de:a2:4b:f2:25:56 

          inet6 addr: fe80::dc94:ebff:fe68:ea07/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:132 errors:0 dropped:0 overruns:0 frame:0

          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:7612 (7.6 KB)  TX bytes:984 (984.0 B)

 

qbre932b629-3d Link encap:Ethernet  HWaddr b2:74:92:a7:e8:97 

          inet6 addr: fe80::d814:1dff:fe46:78c8/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1326 errors:0 dropped:0 overruns:0 frame:0

          TX packets:640 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:406164 (406.1 KB)  TX bytes:54992 (54.9 KB)

 

qvb8f514403-0c Link encap:Ethernet  HWaddr de:a2:4b:f2:25:56 

          inet6 addr: fe80::dca2:4bff:fef2:2556/64 Scope:Link

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:43 errors:0 dropped:0 overruns:0 frame:0

          TX packets:180 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:6739 (6.7 KB)  TX bytes:16139 (16.1 KB)

 

qvbe932b629-3d Link encap:Ethernet  HWaddr b2:74:92:a7:e8:97 

          inet6 addr: fe80::b074:92ff:fea7:e897/64 Scope:Link

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:3981 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5305 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:644013 (644.0 KB)  TX bytes:1079173 (1.0 MB)

 

qvo8f514403-0c Link encap:Ethernet  HWaddr 16:bb:6d:b6:28:b1 

          inet6 addr: fe80::14bb:6dff:feb6:28b1/64 Scope:Link

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:180 errors:0 dropped:0 overruns:0 frame:0

          TX packets:43 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:16139 (16.1 KB)  TX bytes:6739 (6.7 KB)

 

qvoe932b629-3d Link encap:Ethernet  HWaddr 8e:6f:45:a2:c7:b0 

          inet6 addr: fe80::8c6f:45ff:fea2:c7b0/64 Scope:Link

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:5305 errors:0 dropped:0 overruns:0 frame:0

          TX packets:3981 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:1079173 (1.0 MB)  TX bytes:644013 (644.0 KB)

 

virbr0    Link encap:Ethernet  HWaddr 32:de:0e:64:d7:39 

          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

vnet0     Link encap:Ethernet  HWaddr fe:16:3e:cd:b9:90 

          inet6 addr: fe80::fc16:3eff:fecd:b990/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:4659 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5308 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:500

          RX bytes:1049117 (1.0 MB)  TX bytes:1043423 (1.0 MB)

 

vnet1     Link encap:Ethernet  HWaddr fe:16:3e:f8:b3:48 

          inet6 addr: fe80::fc16:3eff:fef8:b348/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:162 errors:0 dropped:0 overruns:0 frame:0

          TX packets:184 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:500

          RX bytes:14971 (14.9 KB)  TX bytes:16677 (16.6 KB)

 


과연 어떤 문제 때문에 ping이 안 나가는 걸까? 궁금증을 뒤로 하고 또 다른 문제 발견~!!

그럼 해당 IP Floating IP를 줘 보자. 라는 생각이 문득 들어 Access & Security 메뉴로 이동~!! Floating IP를 하나 할당 받는다.



이번에는 할당받은 Floating IP를 인스턴스에 associate 해보자.


방금 생성한 인스턴스를 선택하고 Associate 버튼 클릭~!! ~ 아래와 같은 문구를 보여주고서는 할당 실패~!!


그래서 안되는가 보다하고 할당 받은 IP를 다시 Release하기로 결정~!! IP 선택하고 Release Floating IPs 클릭~!!


오 마이 갓~!! 아래와 같은 에러 메시지를 출력하고 죽어 버렸다.



더 이상한거 방금 할당 받은 Floating IP로는 ping이 아주 잘 나간다는 사실.. Instance에 할당이 되질 않는걸까?

# ping 174.24.4.228

PING 174.24.4.228 (174.24.4.228) 56(84) bytes of data.

64 bytes from 174.24.4.228: icmp_req=1 ttl=238 time=204 ms

64 bytes from 174.24.4.228: icmp_req=2 ttl=238 time=203 ms

64 bytes from 174.24.4.228: icmp_req=3 ttl=238 time=204 ms

64 bytes from 174.24.4.228: icmp_req=4 ttl=238 time=204 ms

^C

--- 174.24.4.228 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3003ms

rtt min/avg/max/mdev = 203.758/204.273/204.779/0.492 ms

 


아직까지는 Dashboard가 불안정하니, 그래서 이번에는 CLI 명령어로 직접 할당해 보기로 함.

우선 Quantum 명령어를 이용하여 port-list floatingip-list 확인

# quantum port-list

+--------------------------------------+------+-------------------+------------------------------------------------------------------------------------+

| id                                   | name | mac_address       | fixed_ips                                                                          |

+--------------------------------------+------+-------------------+------------------------------------------------------------------------------------+

| 152ee4eb-0bd6-4c58-ae82-868f91029ee8 |      | fa:16:3e:59:85:22 | {"subnet_id": "10f0d4ee-5077-45e3-9156-f97529120bbf", "ip_address": "192.168.0.2"} |

| 8f514403-0cdd-4391-bff2-7ce408b26655 |      | fa:16:3e:f8:b3:48 | {"subnet_id": "10f0d4ee-5077-45e3-9156-f97529120bbf", "ip_address": "192.168.0.3"} |

+--------------------------------------+------+-------------------+------------------------------------------------------------------------------------+

# quantum floatingip-list

+--------------------------------------+------------------+---------------------+---------+

| id                                   | fixed_ip_address | floating_ip_address | port_id |

+--------------------------------------+------------------+---------------------+---------+

| 7dafbf72-20ba-4a0a-90f8-d35d1a428adb |                  | 172.24.4.228        |         |

+--------------------------------------+------------------+---------------------+---------+

 


잘 할당이 되어 있다. 그럼, 인스턴스와 연결을 해보자. 공식은 다음과 같다.

floatingip-associate [floatingip ID] [port ID]

# quantum floatingip-associate 7dafbf72-20ba-4a0a-90f8-d35d1a428adb 8f514403-0cdd-4391-bff2-7ce408b26655

Could not find an external network gateway reachable from subnet 10f0d4ee-5077-45e3-9156-f97529120bbf.  Therefore, cannot associate Port 8f514403-0cdd-4391-bff2-7ce408b26655 with a Floating IP.

역시 위와 같은 에러 메시지를 보여주고서는 할당이 안 된다. 멘붕상태돌입..

 


이와 같은 문제를 접하고서 계속 인터넷과 커뮤니티의 소소 몇몇 회원들을 괴롭혔다. 그런데 특정 에러 메시지로는 이런 현상을 설명하기에는 역 부족 이였다. 그래서 문서로 작성하기로 했다. 그림과 함께 작성하면 좀 더 이해하기 쉽지 않을까?

분명히 다른 사람들도 이런 경험을 했으리라 생각한다. 네트워크에 대해 아주 잘 아는 사람들이 있다면 누가 좀 도와주기를 간절히 희망해 본다.


Posted by 나리 짱!!! naleejang