티스토리 뷰

바로 이어서 다음편 올려봅니다. 지금 안올리면 올릴 시간이 없어서예요~!! ㅠㅠ


이번 포스팅은 Glance와 Nova 설치편입니다.


Glance 설치

인스턴스를 생성하기 위해서는 운영체제가 설치되어 있는 이미지가 필요합니다. 이런 이미지 파일을 관리하는 서비스가 바로 Glance입니다. Glance는 오픈스택 컴퓨트 서비스를 사용하기 위한 주요 서비스에 해당합니다.

 

1.     우선 Openstack-glancepython-glanceclient를 설치합니다.

# yum install openstack-glance python-glanceclient

 

2.     설치가 완료되면 /etc/glance/glance-api.conf/etc/glance/glance-registry.conf 파일에 데이터베이스 정보를 다음과 같이 설정합니다.

# openstack-config --set /etc/glance/glance-api.conf database \
  connection mysql://glance:glancedbpass@10.10.15.11/glance
# openstack-config --set /etc/glance/glance-registry.conf database \
  connection mysql://glance:glancedbpass@10.10.15.11/glance

 

3.     이번에는 /etc/glance/glance-api.conf 파일에 Qpid 정보를 설정합니다.

# openstack-config --set /etc/glance/glance-api.conf DEFAULT \
  rpc_backend qpid
# openstack-config --set /etc/glance/glance-api.conf DEFAULT \
  qpid_hostname 10.10.15.11

 

4.     Mysql에 접속해서 glance 데이터베이스와 glance 계정을 생성하고 접속권한을 설정합니다.

# mysql -u root -p
mysql> CREATE DATABASE glance;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'glancedbpass';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'glancedbpass';
Query OK, 0 rows affected (0.00 sec)


5.     이번에는 다음과 같은 명령어로 Glance 테이블을 생성합니다.

# su -s /bin/sh -c "glance-manage db_sync" glance

 

6.     Keystoneglance 계정을 생성하고 서비스 테넌트에 생성한 glance 계정을 추가합니다.

# keystone user-create --name=glance --pass=glancepass \
   --email=glance@example.com
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |        glance@example.com        |
| enabled  |               True               |
|    id    | f56fee77b3944019ab979649360e2464 |
|   name   |              glance              |
| username |              glance              |
+----------+----------------------------------+
# keystone user-role-add --user=glance --tenant=service --role=admin

 

7.     Keystone 서비스 생성이 완료되면 생성한 glance 정보를 openstack-config 명령어를 이용해서 환경설정 파일에 적용합니다.

# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  auth_uri http://10.10.15.11:5000
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  auth_host 10.10.15.11
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  auth_port 35357
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  auth_protocol http
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  admin_tenant_name service
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  admin_user glance
# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
  admin_password glancepass
# openstack-config --set /etc/glance/glance-api.conf paste_deploy \
  flavor keystone
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  auth_uri http://10.10.15.11:5000
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  auth_host 10.10.15.11
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  auth_port 35357
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  auth_protocol http
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  admin_tenant_name service
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  admin_user glance
# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \
  admin_password glancepass
# openstack-config --set /etc/glance/glance-registry.conf paste_deploy \
  flavor keystone

 

8.     사용자와 다른 서비스들이 접속할 수 있도록 Keystone 서비스와 endpoint를 생성합니다.

# keystone service-create --name=glance --type=image \
--description="OpenStack Image Service"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |     OpenStack Image Service      |
|   enabled   |               True               |
|      id     | b87d2c7a58474da1a5a0a6100d074893 |
|     name    |              glance              |
|     type    |              image               |
+-------------+----------------------------------+
# keystone endpoint-create \
  --service-id=b87d2c7a58474da1a5a0a6100d074893 \
  --publicurl=http://10.10.15.11:9292 \
  --internalurl=http://10.10.15.11:9292 \
  --adminurl=http://10.10.15.11:9292
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
|   adminurl  |     http://10.10.15.11:9292      |
|      id     | 8abd3e5eb80b4c0cadf7f8568236d991 |
| internalurl |     http://10.10.15.11:9292      |
|  publicurl  |     http://10.10.15.11:9292      |
|    region   |            regionOne             |
|  service_id | b87d2c7a58474da1a5a0a6100d074893 |
+-------------+----------------------------------+

 

9.     Keystone 서비스와 endpoint 생성을 완료했으면 glance-apiglance-registry 서비스를 재시작합니다. 그리고 부팅 시 자동으로 서비스가 시작될 수 있도록 설정합니다.

# service openstack-glance-api start
Starting openstack-glance-api:                             [  OK  ]
# service openstack-glance-registry start
Starting openstack-glance-registry:                        [  OK  ]
# chkconfig openstack-glance-api on
# chkconfig openstack-glance-registry on

 

10.  /tmp/images 디렉터리를 하나 생성하고 해당 디렉터리에 들어간 후 wget을 이용해서 가장 가벼운 cirros 이미지를 하나 내려 받습니다.

# mkdir /tmp/images
# cd /tmp/images/
# wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img

 

11.  내려 받은 이미지는 glance 명령어를 이용해서 다음과 같이 등록합니다.

# glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 \
--container-format bare --is-public True --progress < cirros-0.3.2-x86_64-disk.img
[=============================>] 100%
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 64d7c1cd2b6f60c92c14662941cb7913     |
| container_format | bare                                 |
| created_at       | 2014-06-15T19:08:14                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | qcow2                                |
| id               | 06be01da-151d-4681-bdc9-6127a3590972 |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | cirros-0.3.2-x86_64                  |
| owner            | dbd8df87e5c34536844d915b555061b6     |
| protected        | False                                |
| size             | 13167616                             |
| status           | active                               |
| updated_at       | 2014-06-15T19:08:15                  |
| virtual_size     | None                                 |
+------------------+--------------------------------------+

 

12.  이미지 목록도 확인해 봅니다.

# glance image-list
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
| ID                                   | Name                | Disk Format | Container Format | Size     | Status |
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
| 06be01da-151d-4681-bdc9-6127a3590972 | cirros-0.3.2-x86_64 | qcow2       | bare             | 13167616 | active |
+--------------------------------------+---------------------+-------------+------------------+----------+--------+

 

Nova Management 설치

가상 인스턴스를 생성하고 부팅시키며, 필요 없을 경우 삭제하는 일은 Nova에서 담당합니다. Nova는 사용자에게서 전달받은 인스턴스 관련 명령어들을 하이퍼바이저로 전달하고, 하이퍼바이저는 전달받은 명령어 대로 인스턴스를 생성 또는 삭제합니다. 그럼 지금부터 오픈스택의 핵심 기능인 Nova를 설치해 보겠습니다.

 

1.     우선 yum install을 이용해서 다음과 같이 Nova 관련 서비스들을 설치합니다.

# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler \
  python-novaclient

 

2.     설치가 완료되면 openstack-config를 이용해서 데이터베이스 정보를 설정합니다.

# openstack-config --set /etc/nova/nova.conf \
  database connection mysql://nova:novadbpass@10.10.15.11/nova

 

3.     이번에는 다음과 같이 Qpid 정보를 설정합니다.

# openstack-config --set /etc/nova/nova.conf \
  DEFAULT rpc_backend qpid
# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname 10.10.15.11

 

4.     VNC 콘솔 접속을 위한 VNC Server 정보를 다음과 같이 설정합니다.

# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.10.15.11
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 10.10.15.11
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 10.10.15.11

 

5.     Mysql을 접속해서 nova 데이터베이스와 계정을 생성하고 접속권한을 설정합니다.

# mysql -u root -p
mysql> CREATE DATABASE nova;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'novadbpass';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'novadbpass';
Query OK, 0 rows affected (0.00 sec)

 

6.     Nova 테이블 생성을 위하여 nova-manage db sync 명령을 다음과 같이 실행합니다.

# su -s /bin/sh -c "nova-manage db sync" nova

 

7.     테이블 생성이 완료되면 인증을 위한 Keystonenova 계정을 생성해야 합니다. Nova 계정을 생성하고 서비스 테넌트에 생성한 nova를 추가합니다.

# keystone user-create --name=nova --pass=novapass --email=nova@example.com
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |         nova@example.com         |
| enabled  |               True               |
|    id    | fcad2a86ef664e4ca0bd4188f68c9cee |
|   name   |               nova               |
| username |               nova               |
+----------+----------------------------------+
# keystone user-role-add --user=nova --tenant=service --role=admin

 

 

8.     Openstack-config를 이용해서 nova.confkeystone 정보를 설정합니다.

# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://10.10.15.11:5000
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host 10.10.15.11
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password novapass

 

9.     이번에는 사용자와 다른 서비스들이 접속할 수 있도록 keystone 서비스와 endpoint를 생성합니다.

# keystone service-create --name=nova --type=compute \
--description="OpenStack Compute"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |        OpenStack Compute         |
|   enabled   |               True               |
|      id     | 867c0b68aac94cf8b6ef69f528abc651 |
|     name    |               nova               |
|     type    |             compute              |
+-------------+----------------------------------+
# keystone endpoint-create \
  --service-id=867c0b68aac94cf8b6ef69f528abc651 \
  --publicurl=http://10.10.15.11:8774/v2/%\(tenant_id\)s \
  --internalurl=http://10.10.15.11:8774/v2/%\(tenant_id\)s \
  --adminurl=http://10.10.15.11:8774/v2/%\(tenant_id\)s
+-------------+------------------------------------------+
|   Property  |                  Value                   |
+-------------+------------------------------------------+
|   adminurl  | http://10.10.15.11:8774/v2/%(tenant_id)s |
|      id     |     ec40706eb0ee49d688897a4c6978e37b     |
| internalurl | http://10.10.15.11:8774/v2/%(tenant_id)s |
|  publicurl  | http://10.10.15.11:8774/v2/%(tenant_id)s |
|    region   |                regionOne                 |
|  service_id |     867c0b68aac94cf8b6ef69f528abc651     |
+-------------+------------------------------------------+

 

10.  모든 설정이 완료되면 nova 관련 서비스들을 모두 재시작합니다. 그리고 부팅 시 자동으로 서비스가 실행될 수 있도록 설정합니다.

# service openstack-nova-api start
Starting openstack-nova-api:                               [  OK  ]
# service openstack-nova-cert start
Starting openstack-nova-cert:                              [  OK  ]
# service openstack-nova-consoleauth start
Starting openstack-nova-consoleauth:                       [  OK  ]
# service openstack-nova-scheduler start
Starting openstack-nova-scheduler:                         [  OK  ]
# service openstack-nova-conductor start
Starting openstack-nova-conductor:                         [  OK  ]
# service openstack-nova-novncproxy start
Starting openstack-nova-novncproxy:                        [  OK  ]
# chkconfig openstack-nova-api on
# chkconfig openstack-nova-cert on
# chkconfig openstack-nova-consoleauth on
# chkconfig openstack-nova-scheduler on
# chkconfig openstack-nova-conductor on
# chkconfig openstack-nova-novncproxy on

 

11.  Nova가 정상적으로 설치되었는지 nova 명령어로 이미지 목록을 확인해 봅니다.

# nova image-list
+--------------------------------------+---------------------+--------+--------+
| ID                                   | Name                | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| 06be01da-151d-4681-bdc9-6127a3590972 | cirros-0.3.2-x86_64 | ACTIVE |        |
+--------------------------------------+---------------------+--------+--------+

 


 

Nova-network 설정

오픈스택에서 네트워킹은 기존 네트워킹 방식인 Nova-network를 사용하는 방법과 Neutron을 설치해서 SDN(Software Defined Network)을 사용하는 방법 두 가지가 있습니다. 여기서는 기존 네트워킹 방식인 Nova-network를 이용해서 네트워크를 설정해 보겠습니다.

 

1.     Openstack-config 명령어를 이용해서 /etc/nova/nova.conf에 기존 nova-network API를 사용하겠다고 다음과 같이 설정합니다.

# openstack-config --set /etc/nova/nova.conf DEFAULT \
  network_api_class nova.network.api.API
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  security_group_api nova

 

2.     설정이 끝나면 nova 서비스를 재시작합니다.

# service openstack-nova-api restart
Stopping openstack-nova-api:                               [  OK  ]
Starting openstack-nova-api:                               [  OK  ]
# service openstack-nova-scheduler restart
Stopping openstack-nova-scheduler:                         [  OK  ]
Starting openstack-nova-scheduler:                         [  OK  ]
# service openstack-nova-conductor restart
Stopping openstack-nova-conductor:                         [  OK  ]
Starting openstack-nova-conductor:                         [  OK  ]



이렇게 해서 Glance와 Nova 설치 포스팅을 모두 마쳤습니다. 다음 포스팅에서는 Horizon 설치와 Cinder 설치를 포스팅하도록 하겠습니다.  

댓글
  • 프로필사진 skskdvj 멀티노드 구성시에 11step에서
    glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 \
    --container-format bare --is-public True --progress < cirros-0.3.2-x86_64-disk.img
    img파일 추가시에

    [root@controller images]# glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 \
    > --container-format bare --is-public True --progress < /tmp/images/cirros-0.3.2-x86_64-disk.img
    [=============================>] 100%
    Request returned failure status.
    Invalid OpenStack Identity credentials.

    failure 발생되면 인증관련 error 발생되어 몇번이고 다시 해봤지만, 동일 하게 여기서 다음 단계로 진행을 못하고 있습니다. 확인 부탁드립니다. 테스트로 구성해서 환경만 보고 싶은데 쉽지 않네요

    2015.03.26 18:15
  • 프로필사진 Favicon of https://naleejang.tistory.com BlogIcon 나리 짱!!! naleejang 인증 관련 파일은 별도로 저장해 두신거죠?
    아래 명령어대로 실행하시면 인증이 정상적으로 실행되는지 확인하실 수 있습니다.
    glance --debug image-list

    그리고, glance-api.conf파일 보시면 log를 어느 디렉토리에 쌓을 건인지에 대한 디렉토리가 보일꺼예요~!! 그 디렉토리에 들어가시면 에러 로그를 확인하실 수 있을꺼예요~!!
    2015.03.30 15:24 신고
  • 프로필사진 BlogIcon 박상준 혹시 해결하셨나요? 저도 같은 부분에서 에러가 발생되는데.. 해결이 안되네요 2016.03.24 17:38
  • 프로필사진 Favicon of https://neo-blog.tistory.com BlogIcon 네오블로그 위에분 해결하셨는지 모르겠지만 glance 유저 생성 후 roll add command가 빠지신듯 하네요..
    저도 keystone user-role-add 부분이 윗 command의 결과로만 보여서 윗분과 같은 결과가 나왔었네요
    2015.04.08 22:40 신고
  • 프로필사진 Favicon of https://naleejang.tistory.com BlogIcon 나리 짱!!! naleejang 감사합니다. 2015.04.13 11:09 신고
  • 프로필사진 dreamer83 안녕하세요. OpenStack 자료 감사히 잘 보고있습니다.
    설치메뉴얼 대로 진행하는 중에 궁금한 부분이 있어서 댓글을 남깁니다.

    nova manage 설치 6번
    su -s /bin/sh -c "nova-manage db sync" nova

    를 실행하면 command failed, please check log for more info 메시지가 뜨는데

    /etc/nova/nova/conf 의 #connection=mysql://nova:nova@localhost/nova 의 주석을 해제해야 하는 건가요?

    관련문제 해결 방법을 알려주셨으면 좋겠습니다.

    2015.04.22 15:28
  • 프로필사진 dreamer83 아.. 설정시에 문제가 있었던것 같네요..
    주석 해제하고 위 메뉴얼의 설정을 참고해서 수정하니까
    진행되는걸 확인했습니다. 감사합니다..
    2015.04.23 11:15
  • 프로필사진 mecuria glance 에서 5번을 하던도중 이런게 뜨는데 어떤게 문제인지 몰라서요 ㅠㅠ

    # su -s /bin/sh -c "glance-manage db_sync" glance

    /usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
    2015.06.19 15:21
  • 프로필사진 Favicon of https://naleejang.tistory.com BlogIcon 나리 짱!!! naleejang 패키지 설치가 제대로 안되서 나는 에러로 보이는데 시스템마다 달라서 제가 뭐때문에 안되는거라고 딱 찍어서 말씀드리기가 좀 곤란하네여 ^^; 2015.06.19 19:38 신고
  • 프로필사진 mecuria glance 10 번에서요
    wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img

    부분 주소가 바뀐것 같아요.
    cdn 을 뺴고 주소를 넣으니까 다운 받더라구요.
    wget http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
    2015.06.22 08:04
  • 프로필사진 Favicon of https://naleejang.tistory.com BlogIcon 나리 짱!!! naleejang 제가 이걸 쓴지 벌써 일년이나 되었네요~!!
    아마도 그 사이에 많은 것들이 변경되었으리라 생각합니다.
    IT는 1년이면 충분히 강산이 변하더라구요~!!
    2015.06.22 16:12 신고
  • 프로필사진 mecuria 아 그렇군요 ㅎㅎ 아무튼 열심히 보면서 할께요 ^^ 2015.06.23 15:21
댓글쓰기 폼