본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Manually Install OpenStack

Openstack Glance on Centos (Rocky)

by iamlucia 2020. 8. 21.

 

Glance: Image Service (VM 이미지 관리 서비스) 


1. Glance 이미지 서비스는 VM 이미지를 발견하고, 등록하고 검색하는 기능을 제공한다.

2. Glance는 실제 이미지 검색 및 VM 이미지의 metadata 요청을 지원하는 RESTful API를 가진다.

3. Glance를 통해 사용가능해진 VM 이미지는 Swift 스토리지나 설정한 디렉토리 등 다양한 위치에 저장된다. 

4. 다른 오픈스택 프로젝트(서비스)와 마찬가지로 Glance는 다음의 디자인 가이드라인을 따른다:

  • 컴포넌트 기반 아키텍처(Component-based architecture): 빠르고 새로운 behaviors
  • 고가용성(High available): 과부하에 대한 scale 조정 
  • 결함 허용(Fault Tolerance): 서로 독립된 프로세스를 통해 cascading failure 방지 
  • 회복성(Recoverable): 오류에 대한 진단, 디버그 및 수정이 쉬움
  • 개방형 표준(Open standard): 커뮤니티발(driven) api 에 대한 참조 구현

✋ Prerequisties .
서비스 정보를 입력할 오픈스택 기본 환경설정 필요
참조: 
https://4betterme.tistory.com/39

<< ⭕ Glance 서비스 설치는  컨트롤러 노드에서 진행 >>

 


🔨 데이터베이스 , 서비스 인증, API Endpoint 생성 

 

🟢 Mysql 에서 glance 데이터 베이스를 생성한 다음, 해당 데이터베이스에 접속권한 부여 :

 

#  mysql -u root -p 
[root 비밀번호 입력]하여 mariadb 접속
-------------------------------
MariaDB [(none)]> CREATE DATABASE glance;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \ IDENTIFIED BY '[glance db 비밀번호]';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \ IDENTIFIED BY '[glance db 비밀번호]';
MariaDB [(none)]> exit; 

 

🟢 admin 계정 인증 실행 :

 

# source key_adminrc[환경변수 설정 스크립트]

 

🟢 Glance 계정 생성 및 admin 역할-glance 계정 - service 프로젝트 연결 :  

 

# openstack user create --domain default --password-prompt glance
---------------------------------
User Password: (test123)[glance 계정 패스워드]
Repeat User Password:

# openstack role add --project service --user glance admin

 

🟢 Glance 서비스 생성 : 

 

# openstack service create --name glance  --description "OpenStack Image" image

 

🟢 Glance API Endpoint 생성 : 

 

# openstack endpoint create --region RegionOne image public http://[컨트롤러 노드 관리용 ip]:9292
# openstack endpoint create --region RegionOne image internal http://
[컨트롤러 노드 관리용 ip]:9292
# openstack endpoint create --region RegionOne image admin http://
[컨트롤러 노드 관리용 ip]:9292

 

 


🔨 Glance 서비스 설치 및 구성

 

🟢 Glance 패키지 설치 :

 

# yum -y install openstack-glance

 

 

🟢 glance-api 설정 파일 수정 :

 

# vi /etc/glance/glance-api.conf
--------------------------------------
[database]

# ...
connection = mysql+pymysql://glance:[glance db 비밀번호]@[컨트롤러 관리용 ip]/glance

[keystone_authtoken]
# ...
www_authenticate_uri = http://[컨트롤러 관리용 ip]:5000
auth_url = http://[컨트롤러 관리용 ip]:5000
memcached_servers = [컨트롤러 관리용 ip]:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = [glance 비밀번호] : the password you chose for the glance user in the Identity service

[paste_deploy]
# ...
flavor = keystone

[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

 

🟢 glance-registry 설정 파일 수정 :

 

# vi  /etc/glance/glance-registry.conf
--------------------------------------
[database] 
# ...
connection = mysql+pymysql/://glance:[glance db 비밀번호]@[컨트롤러 관리용 ip]/glance

[keystone_authtoken] 
# ... 
www_authenticate_uri = http://[컨트롤러 관리용 ip]:5000 
auth_url = http://[컨트롤러 관리용 ip]:5000 
memcached_servers = [컨트롤러 관리용 ip]:11211 
auth_type = password 
project_domain_name = Default 
user_domain_name = Default 
project_name = service 
username = glance 
password = [glance 비밀번호] : the password you chose for the glance user in the Identity service

[paste_deploy] 
# ... 
flavor = keystone

 

🟢 특정 계정으로 쉘 스크립트 실행시켜 glance 데이터베이스 Populate (테이블 생성) :  

 

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

 


🔨 설치 마무리

🟢 glance-api 및 glance-registry 서비스 실행 및 활성화

 

# systemctl enable openstack-glance-api.service openstack-glance-registry.service
# systemctl start openstack-glance-api.service openstack-glance-registry.service

 


🔫 Trouble Shooting 

🔴 ERROR  : TOKEN 관련 오류 발생

 

WARNING keystonemiddleware._common.config [-] The option "__file__" in conf is not known to auth_token
WARNING keystonemiddleware._common.config [-] The option "here" in conf is not known to auth_token
WARNING keystonemiddleware.auth_token [-] AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True.

 

🟠 컨트롤러 노드의 오픈스택 서비스를 담는 데이터베이스의 glance database명 오타 발견

🟢 Trouble shooting : mariadb 접속하여 DB명 수정 후 다시 glance 데이터베이스 Populate 

 

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

 


📍 Verification: 이미지 생성

작은 사이즈의 리눅스 이미지인 cirros를 활용하여 Glance 서비스의 정상 작동을 확인하자.

 

🟢 admin credential 스크립트 실행

 

# source key-adminrc

 

🟢 admin credential 스크립트 실행

 

# yum -y install wget
#
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

 

🟢 이미지 업로드 :

 

# openstack image create "cirros" --file cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --public
=> "cirros"라는 이름의 이미지를 생성cirros-0.4.0-x86_64-disk.img 파일을 활용하여 
=> --file: cirros-0.4.0-x86_64-disk.img 파일을 활용하여 
=> --disk-format: 디스크 포맷은 qcow2으로
=> --container-format: 이미지 서비스 컨테이너의 포맷이 bare인 경우 해당 VM 이미지를 위한 컨테이너가 존재하지 않는다는 뜻 
=> --public: 모든 프로젝트가 접근할 수 있는 형태

 

🟢 이미지 업로드된 이미지 확인 및 속성 확인 :

 

# openstack image list