Stein 오픈스택 클라우드 서버 구축(5) - 이미지 서비스 (Glance) 설치 및 구성

blog post 

 

이번 포스트에서는 인증 서비스(Keystone)에 이어 이미지 관리 서비스(Glance)를 구축해 보도록 하겠습니다. 본 과정은 모두 컨트롤러 노드에서 진행되며, Glance 관련 기본 내용은 해당 포스트를 참고하시기 바랍니다. [바로가기]

 

 

1. 전체 구성

 

 

이번 포스트를 통해 구성될 컨트롤러 노드 서비스 구성은 다음과 같습니다.

 

 

 

 

2. Glance 서비스 사용자 및 역할 추가

 

 

앞서 인증서비스(Keystone) 관련 포스트에서 사용자나 서비스는 API 통신을 위해 인증 및 승인 절차가 필요하다고 했습니다. 따라서 일반 사용자 뿐만 아니라 오픈스택 컴포넌트들도 사용자로서 도메인과 역할(role), 프로젝트에 귀속되어야 하고 서비스간 질의 응답을 위한 endpoint url 등이 지정되어야 합니다. 이때 glance 서비스는 관리자 역할을 부여받으며, 인증 및 승인 과정은 물론 Keystone에 의해 진행됩니다.

 

Glance 뿐만 아니라 이후 진행할 컴퓨트 서비스(Nova)나 네트워크 서비스(Neutron)역시 동일한 과정을 거칩니다. 관련 내용은 인증서비스 관련 포스트를 참고하시기 바랍니다. [바로가기]

 

먼저 다음과 같이 사용자/역할/서비스/엔드포인트 url을 생성합니다.

 

 

# 사용자로서 glance를 추가합니다. servicepassword 부분은 본인이 원하는 패스워드로 변경.
[root@Controller ~]# openstack user create --domain default --project service --password servicepassword glance 
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | 8d3e3541755f454f84dafacd37b4303c |
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 90688075098e4e04930667c66d606cc1 |
| name                | glance                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

# 방금 추가한 사용자 glance에 관리자(admin)역할을 부여합니다.
[root@Controller ~]# openstack role add --project service --user glance admin

# 사용자 glance를 서비스 엔트리에 저장합니다.
[root@Controller ~]# openstack service create --name glance --description "OpenStack Image service" image 
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Image service          |
| enabled     | True                             |
| id          | 47703902bbcd413483d393cc04e5b4da |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+

# keystone의 호스트(즉 컨트롤러 노드의 통신용ip)를 환경변수로 지정합니다.
[root@Controller ~]# export controller=10.0.0.30

# glance 서비스의 endpoint를 추가합니다. (public)
[root@Controller ~]# openstack endpoint create --region RegionOne image public http://$controller:9292 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 08955ed3b8904146830e49ad1570a0e7 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 47703902bbcd413483d393cc04e5b4da |
| service_name | glance                           |
| service_type | image                            |
| url          | http://10.0.0.26:9292            |
+--------------+----------------------------------+

# glance 서비스의 endpoint를 추가합니다. (internal)
[root@Controller ~]# openstack endpoint create --region RegionOne image internal http://$controller:9292 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 3156e913462e496ba7a190325d93bd59 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 47703902bbcd413483d393cc04e5b4da |
| service_name | glance                           |
| service_type | image                            |
| url          | http://10.0.0.26:9292            |
+--------------+----------------------------------+

# glance 서비스의 endpoint를 추가합니다. (admin)
[root@Controller ~]# openstack endpoint create --region RegionOne image admin http://$controller:9292 
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | c5504fa0ce7945ff9a71a68cd885b0bd |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 47703902bbcd413483d393cc04e5b4da |
| service_name | glance                           |
| service_type | image                            |
| url          | http://10.0.0.26:9292            |
+--------------+----------------------------------+

 

 

3. DB 생성 및 초기화

 

다음과 같이 Glance 전용 DB를 생성합니다.

 

[root@Controller ~]# mysql -u root -p 
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.3.10-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# 아래 password에 본인이 원하는 패스워드로 대체하여 입력합니다.
MariaDB [(none)]> create database glance; 
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on glance.* to glance@'localhost' identified by 'password'; 
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on glance.* to glance@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges; 
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye

 


 

4. Glance 서비스 설치 및 설정

 

아래와 같이 glance api와 registry를 설치하고 관련 설정을 진행합니다.

 

# Stein 레포지토리로부터 glance 서비스를 설치합니다.
[root@Controller ~]# yum --enablerepo=centos-openstack-stein,epel -y install openstack-glance

// 필요한 옵션만 설정하기 위해 기본 glance 옵션 파일을 백업하고 새로운 옵션 파일을 만듭니다.
// 참고: 만약 기존 glance 옵션 파일을 그냥 사용하고자 하는 경우에는 아래 mv 작업을 하지 않아도 무관합니다.
[root@Controller ~]# mv /etc/glance/glance-api.conf /etc/glance/glance-api.conf.org 

//만약 옵션 파일을 새로 만들 경우에는 아래 옵션 전체를 입력합니다.
//기존 옵션 파일을 사용하고자 하는 경우에는 옵션을 직접 찾아서 아래 값으로 바꿔줍니다.
[root@Controller ~]# vi /etc/glance/glance-api.conf
[DEFAULT]
bind_host = 0.0.0.0

[glance_store]
stores = file,http
default_store = file

# 아래 경로는 이미지 저장 경로입니다. 본인이 원하는 곳으로 경로를 지정하시면 됩니다.
filesystem_store_datadir = /var/lib/glance/images/

# 방금 생성한 glance db 정보입니다. password와 ip에 본인의 구성에 맞게 변경합니다.
[database]
connection = mysql+pymysql://glance:password@10.0.0.26/glance

# Keystone 인증 정보입니다. 
# 아래 ip들을 keystone이 세팅된 현재 컨트롤러 노드의 통신용 포트의 ip로 바꾸고 password 부분을 본인의 패스워드로 변경합니다..
[keystone_authtoken]
www_authenticate_uri = http://10.0.0.26:5000
auth_url = http://10.0.0.26:5000
memcached_servers = 10.0.0.26:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = servicepassword

[paste_deploy]
flavor = keystone

 

그리고 앞서 설정한 정보들로 DB를 동기화 하고 glance 서비스를 시작합니다.

 

# 앞서 설정파일을 새로 만든 경우, 해당 파일에 대한 권한을 설정해줍니다. 생성하지 않은 경우에는 진행할 필요 없습니다.
[root@Controller ~]# chmod 640 /etc/glance/glance-api.conf 
[root@Controller ~]# chown root:glance /etc/glance/glance-api.conf

# 서비스를 재시작 합니다.
[root@Controller ~]# su -s /bin/bash glance -c "glance-manage db_sync" 
[root@Controller ~]# systemctl start openstack-glance-api 
[root@Controller ~]# systemctl enable openstack-glance-api 

 

 

4. 방화벽 및 Selinux 설정

 

방화벽과 Selinux를 사용하는 경우에는 아래 과정을 진행함으로써 서비스와 포트의 통신을 허용합니다.

 

[root@Controller ~]# setsebool -P glance_api_can_network on 
[root@Controller ~]# firewall-cmd --add-port=9292/tcp --permanent 
[root@Controller ~]# firewall-cmd --reload 

 

 

5. 이미지 생성 테스트

 

 

이제 외부에서 CentOS7의 ISO 파일을 받아서 glance의 이미지로 생성해 보도록 하겠습니다.

 

[root@Network ~]# wget http://mirror.kakao.com/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

[root@Network ~]# openstack image create "CentOS7" --file /var/lib/glance/images/CentOS-8.1.1911-x86_64-dvd1.iso --disk-format iso
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field            | Value                                                                                                                                                                                      |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum         | 8d0573c5fb5444007936b652d8c6724d                                                                                                                                                           |
| container_format | bare                                                                                                                                                                                       |
| created_at       | 2019-12-23T00:19:16Z                                                                                                                                                                       |
| disk_format      | iso                                                                                                                                                                                        |
| file             | /v2/images/1053ce29-e127-46cd-88b6-18a74678725d/file                                                                                                                                       |
| id               | 1053ce29-e127-46cd-88b6-18a74678725d                                                                                                                                                       |
| min_disk         | 0                                                                                                                                                                                          |
| min_ram          | 0                                                                                                                                                                                          |
| name             | CentOS7                                                                                                                                                                                    |
| owner            | 9626ec30dfd74a1488e67b23aa19fa01                                                                                                                                                           |
| properties       | os_hash_algo='sha512', os_hash_value='4adc991714e23196f0eb4e01b993658175dce2726d1c9794f7b38a8449ee521a20be80921de5a8cf51a3b66a56391c43a371480d16b5d8d0196cfd9140a19be6', os_hidden='False' |
| protected        | False                                                                                                                                                                                      |
| schema           | /v2/schemas/image                                                                                                                                                                          |
| size             | 7554990080                                                                                                                                                                                 |
| status           | active                                                                                                                                                                                     |
| tags             |                                                                                                                                                                                            |
| updated_at       | 2019-12-23T00:21:40Z                                                                                                                                                                       |
| virtual_size     | None                                                                                                                                                                                       |
| visibility       | public                                                                                                                                                                                     |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

 

이번 포스트를 통해 glance 서비스 설치부터 설정, 이미지 생성 까지 다뤄보았습니다. 다음 포스트에서는 가상머신 생성을 위한 컴퓨트 서비스를 구축하는 과정에 대해 알아보도록 하겠습니다.

 

TAGS.

Comments