본문 바로가기

잡동사니(OLD)/IT활용&최적화

[OpenStack를 이용한 가상화 시스템 만들기] DevStack 를 이용한 오픈스택 설치


안녕하세요! 요즘 OpenStack 를 사용하게 되면서 까먹지 않고 정리할겸 OpenStack 강좌를 진행하려고 합니다~!

OpenStack 이 개념자체도 너무 광범위하고, 제가 이런 가상화 시스템 전문가도 아니기 때문에 너무 디테일한 부분까지는 모를거에요^^;


첫내용은 OpenStack을 설치하는 부분입니다. OpenStack은 수많은 패키지들의 조합이라고 보면되는데요 그때문에 설치하기 무지 까다롭습니다.

그래서 나온데 DevStack 입니다 DevStack 은 OpenStack의 필수 구성요소를 쉘스크립트(.sh) 를 이용해서 편하게 설치하게 도와줍니다.



아래는 오픈스텍의 기본 구조입니다



이해가 가시나요? DevStack를 이용하면 기본적인 위구조의 시스템이 구축됩니다.



그럼 이제 DevStack을 이용하여 설치하도록 하겠습니다.


1. 서버 H/W 현황

CentOS 6.6 ( 64bit )

CPU: 8Core

RAM: 16GB

SSD: 64GB

HDD: 1TB


2. DevStack 다운로드

- DevStack을 설치하기 위해서 DevStack공식 저장소(gti) 에서 설치 스크립트를 다운로드 합니다.


SSH를 통해 접속합니다( root 로 로그인 )

> cd /

git clone https://github.com/openstack-dev/devstack.git

> ls -all

devstack 폴더가 생성되어 있는지 확인합니다




3. 사용자 생성

- DevStack설치는 root 에서는 보안상 설치가 불가능합니다. 

아래 명령어를 통해서 stack 사용자를 추가합니다.

> ./devstack/tools/create-stack-user.sh

그럼 stack 이라는 계정이 추가됩니다

그후 devstack 폴더의 소유자를 변경해줍니다

> chown stack:stack devstack



4. localrc 생성

- DevStack을 설치하기 위해서는 다양한 구성으로 가능한데 설치전 localrc 를 생성해주어야 합니다.

설치 유형 구분은 아래와 같습니다


Multi Node( 멀티노드를 사용하기 위한 설치입니다.  즉 아래의 노드를 각각 관리할경우 사용합니다 )

installation runs different OpenStack services on different nodes. A basic installation requires nodes:

  1. Controller Node:

Controller Node runs control services, such as database, message queue and API services for the Identity Service, Image Service and Compute.

  1. Network Node:

Network Node runs networking services and is responsible for virtual networking needed for people to create public or private networks, and uplink their virtual machines into external networks.

  1. Compute Node:

Compute nodes run the virtual machine instances in OpenStack.

Additional Nodes can be added as per requirements which may include a Storage node, an additional Network, compute or nodes.

Single Node ( 싱글노드는 한서버에 Controller , Network, Compute 노드를 모두 설치합니다 )

Single Node Installation runs all OpenStack services in one node including Control, Network, Compute, Storage services.

This week, we’ll discuss how to install a single node in Openstack.

[Tweet "Single Node #Openstack Installation Process"]

 


여기서는 Single Node로 설치하겠습니다


> cd devstack

> vi localrc

###########################

# Date : 2013.03.20       #

# Name : naleejang        #

###########################

# Devstack localrc for nova-network all-in-one



# default

# 설치하려는 서버의 IP를 입력합니다.

HOST_IP=설치할 서버 IP


# network

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

FLOATING_RANGE - IP범위 설정( 공인 IP 혹은 내부 IP로 설정 )

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=관리자암호

MYSQL_PASSWORD=MYSQL암호

RABBIT_PASSWORD=RABBIT암호

SERVICE_PASSWORD=서비스 암호

SERVICE_TOKEN=openstackservicetoken


# cinder

VOLUME_GROUP="cinder-volume"

VOLUME_NAME_PREFIX="volume-"

위와 같이 설정을 완료했다면 설치를 진행합니다


> ./devstack/stack.sh

주의!

만약 root에서 작업하려고 한다면 아래와 같은 메시지를 보실겁니다. 필히 stack 사용자를 생성하세요

You are running this script as root.

Cut it out.

Really.

If you need an account to run DevStack, do this (as root, heh) to create a non-root account:

/devstack/tools/create-stack-user.sh


설치시작.. ( 약 30분 ~ 1시간 소요 )

.

.

.

2014-11-07 07:34:45.684 | +++ export OS_PASSWORD=hanintel.com

2014-11-07 07:34:45.684 | +++ OS_PASSWORD=hanintel.com

2014-11-07 07:34:45.684 | ++ euca-bundle-image -r x86_64 -i /devstack/files/images/cirros-0.3.2-x86_64-uec/cirros-0.3.2-x86_64-vmlinuz --kernel true -d /devstack/files/images/s3-materials/cirros-0.3.2

2014-11-07 07:34:46.175 | Checking image

2014-11-07 07:34:46.175 | Compressing image

2014-11-07 07:34:46.175 | Encrypting image

2014-11-07 07:34:46.175 | Splitting image...

2014-11-07 07:34:46.175 | Part: cirros-0.3.2-x86_64-vmlinuz.part.00

2014-11-07 07:34:46.175 | Generating manifest /devstack/files/images/s3-materials/cirros-0.3.2/cirros-0.3.2-x86_64-vmlinuz.manifest.xml

2014-11-07 07:34:46.177 | ++ euca-bundle-image -r x86_64 -i /devstack/files/images/cirros-0.3.2-x86_64-uec/cirros-0.3.2-x86_64-initrd --ramdisk true -d /devstack/files/images/s3-materials/cirros-0.3.2

2014-11-07 07:34:46.584 | Checking image

2014-11-07 07:34:46.584 | Compressing image

2014-11-07 07:34:46.584 | Encrypting image

2014-11-07 07:34:46.584 | Splitting image...

2014-11-07 07:34:46.584 | Part: cirros-0.3.2-x86_64-initrd.part.00

2014-11-07 07:34:46.584 | Generating manifest /devstack/files/images/s3-materials/cirros-0.3.2/cirros-0.3.2-x86_64-initrd.manifest.xml

2014-11-07 07:34:46.586 | ++ euca-bundle-image -r x86_64 -i /devstack/files/images/cirros-0.3.2-x86_64-uec/cirros-0.3.2-x86_64-blank.img -d /devstack/files/images/s3-materials/cirros-0.3.2

2014-11-07 07:34:47.030 | Checking image

2014-11-07 07:34:47.030 | Compressing image

2014-11-07 07:34:47.030 | Encrypting image

2014-11-07 07:34:47.030 | Splitting image...

2014-11-07 07:34:47.030 | Part: cirros-0.3.2-x86_64-blank.img.part.00

2014-11-07 07:34:47.030 | Generating manifest /devstack/files/images/s3-materials/cirros-0.3.2/cirros-0.3.2-x86_64-blank.img.manifest.xml

2014-11-07 07:34:47.032 | ++ [[ stack == \u\n\s\t\a\c\k ]]

2014-11-07 07:34:47.033 | ++ [[ stack == \c\l\e\a\n ]]

2014-11-07 07:34:47.033 | + merge_config_group /devstack/local.conf post-extra

2014-11-07 07:34:47.033 | + local localfile=/devstack/local.conf

2014-11-07 07:34:47.033 | + shift

2014-11-07 07:34:47.033 | + local matchgroups=post-extra

2014-11-07 07:34:47.033 | + [[ -r /devstack/local.conf ]]

2014-11-07 07:34:47.033 | + return 0

2014-11-07 07:34:47.033 | + [[ -x /devstack/local.sh ]]

2014-11-07 07:34:47.033 | + service_check

2014-11-07 07:34:47.033 | + local service

2014-11-07 07:34:47.033 | + local failures

2014-11-07 07:34:47.033 | + SCREEN_NAME=stack

2014-11-07 07:34:47.033 | + SERVICE_DIR=/opt/stack/status

2014-11-07 07:34:47.033 | + [[ ! -d /opt/stack/status/stack ]]

2014-11-07 07:34:47.033 | ++ ls '/opt/stack/status/stack/*.failure'

2014-11-07 07:34:47.035 | ++ /bin/true

2014-11-07 07:34:47.036 | + failures=

2014-11-07 07:34:47.036 | + '[' -n '' ']'


Horizon is now available at http://xxx.xxx.xxxx.xxx/

Keystone is serving at http://xxx.xxx.xxxx.xxx:5000/v2.0/

Examples on using novaclient command line is in exercise.sh

The default users are: admin and demo

The password: hanintel.com

This is your host ip: xxx.xxx.xxxx.xxx


위처럼 나오면 설치 성공입니다.

Horizon is now available at 의 IP로 접속하시면 아래와 같은 화면을 보실 수 있습니다


접속하시면 admin/위에서 설정하신 비밀번호 로 로그인하시면 됩니다.


이것으로 OpenStack 설치가 완료되었습니다~