OpenStack Yoga版安装笔记(五)glance安装

1、官方文档

OpenStack Installation Guideicon-default.png?t=N7T8https://docs.openstack.org/install-guide/

本次安装是在Ubuntu 22.04上进行,基本按照OpenStack Installation Guide顺序执行,主要内容包括:

  • 环境安装 (已完成)
  • OpenStack服务安装
    • keyston安装(已完成
    • glance安装 (本篇文档安装)
  • 启动一个实例

参考OpenStack Yoga版最小化部署(Minimal deployment for Yoga),顺序安装必须的核心服务,本次安装glance服务。

2、Image service overview

2.1 镜像服务概述

OpenStack镜像服务,代号glance。通过镜像服务,用户可以查询、注册、下载虚拟机镜像。利用镜像服务的REST API接口,用户能够查询虚拟机镜像的元数据(即虚拟机镜像信息)、下载虚拟机镜像。虚拟机镜像可以存储在简单的文件系统,或者对象存储系统(比如OpenStack对象存储)等多种位置,并通过镜像服务进行访问。

本次安装为了简化操作,将镜像上传并存储在托管镜像服务的控制节点上的一个目录中。默认情况下,这个目录是/var/lib/glance/images/

OpenStack的镜像服务是基础设施即服务(IaaS)的核心组成部分。它处理来自终端用户或OpenStack计算组件的存取镜像的API请求,以及对镜像元数据进行定义的API请求。此外,它还能在多种存储类型中存储镜像,包括OpenStack对象存储。

这意味着OpenStack镜像服务提供了一个集中的平台,用于管理云环境中的镜像。用户和OpenStack计算组件可以通过API与镜像服务交互,上传、下载镜像或查询镜像信息。镜像服务支持多种后端存储,使得用户可以根据需要选择合适的存储解决方案,例如使用OpenStack对象存储服务来存储大规模的镜像数据。这为云服务提供商和用户提供了灵活性和扩展性。

2.2 镜像服务的缓存功能

在OpenStack镜像服务中,运行着一些周期性进程,以支持缓存功能。复制服务(Replication services )确保集群一致性和可用性。其他周期性进程包括审计器(auditors)、更新器(updaters)和收割者(reapers)。

  1. 缓存:缓存机制可以提高镜像服务的性能,通过在本地存储或内存中保存镜像的副本,减少对原始存储位置的访问次数,从而加快镜像的检索和分发速度。

  2. 复制服务:复制服务用于在不同的节点或数据中心之间同步镜像数据,以确保数据的高可用性和灾难恢复能力。即便某个节点发生故障,其他节点仍然可以提供服务。

  3. 审计器:审计器进程负责检查镜像服务的状态和一致性,确保所有组件都按照预期运行,并且数据没有损坏或丢失。

  4. 更新器:更新器进程用于定期更新镜像元数据或属性,以确保镜像信息的准确性和最新性。

  5. 收割者:清理进程负责清理不再需要的镜像或数据,例如删除过期的缓存副本或未被使用的镜像版本,以释放存储空间并保持系统的整洁。

这些周期性进程共同工作,确保OpenStack镜像服务的稳定性、效率和可靠性。

2.3 镜像服务主要组件

OpenStack镜像服务(通常称为Glance)包括以下几个主要组件:

2.3.1 glance-api

接受镜像查询、镜像存取的API调用请求。

2.3.2 Database

存储镜像的元数据。元数据包括了关于镜像的各种信息,比如镜像的名称、大小、状态、创建时间、标签等。这些信息通常存储在数据库中,以便 Glance-api 可以快速检索和更新。

2.3.3 Storage repository for image files

存储镜像。真正的镜像存放在后端存储中。OpenStack 镜像服务支持多种存储类型,包括:

  • 普通文件系统:可以是任何挂载到 glance-api 控制节点上的文件系统。这是最基本的存储方式,适用于小规模部署。
  • OpenStack Object Storage(Swift)
  • OpenStack Block Storage(Cinder)
  • RADOS 块设备:RADOS 是 Ceph 存储后端使用的一种分布式对象存储系统,它可以为 OpenStack 提供持久化块存储。
  • VMware 数据存储:如果 OpenStack 与 VMware 环境集成,可以使用 VMware 的数据存储作为镜像的存储位置。
  • HTTP:通过 HTTP 协议,可以远程存储和检索镜像,这种方式适用于需要从外部源引入镜像的场景。

需要注意的是,并非所有存储库类型都支持读写操作。有些存储库可能仅支持只读,这意味着你可以从这些存储库中检索镜像,但不能直接将镜像上传或修改。例如,通过 HTTP 存储的镜像如果是从外部源下载的,可能就不支持写操作。选择存储库类型时,需要考虑镜像的使用方式和存储库的特性。

2.3.4 Metadata definition service

OpenStack Glance服务的元数据定义服务是一个共用的API,它允许供应商(开发商)、管理员、服务和用户有针对性地自定义元数据。这些元数据可以应用于多种类型的资源,例如镜像、工件、卷、配置选项和聚合体。一个元数据自定义通常包括新属性的键、描述、约束条件以及它可以关联的资源类型。

“这些元数据可以应用于多种类型的资源,例如镜像、工件、卷、配置选项和聚合体。”这句话意味着元数据(metadata)可以应用于多种类型的资源。在这里,“资源”是指在OpenStack Glance服务中可以被管理和操作的对象。这些资源包括:

  • 镜像(Images):在OpenStack中,镜像是虚拟机实例的模板,包含了启动虚拟机所需的所有信息。
  • 工件(Artifacts):指的是软件构建过程中生成的文件,如编译后的程序或库文件。
  • 卷(Volumes):在云环境中,卷是持久化存储的单元,可以附加到虚拟机上,用作数据存储。
  • 配置选项(Flavors):定义了虚拟机实例的硬件配置,如CPU、内存和存储容量。
  • 聚合体(Aggregates):指的是一组具有共同特征的资源,例如具有相同硬件配置的服务器集群。

3、Install and configure (Ubuntu)

注意glance安装版本为:glance 24.2.1.dev1

3.1 Prerequisites

在安装和配置image service之前,需要先创建数据库、服务凭证(用户名/密码)、服务API端点。

1、Create the glance database:

root@controller:~# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

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

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

MariaDB [(none)]> CREATE DATABASE glance;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
    ->   IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
    ->   IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> 
MariaDB [(none)]> quit
Bye
root@controller:~# 

2、以admin user操作OpenStackClient:

ubcode@osclient:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:ff:20:81 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 10.0.20.100/24 brd 10.0.20.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feff:2081/64 scope link 
       valid_lft forever preferred_lft forever
ubcode@osclient:~$ cat admin-openrc 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(admin/amdin)\$ '
ubcode@osclient:~$ . admin-openrc 
ubcode@osclient ~(admin/amdin)$ 

3、Create the service credentials:

ubcode@osclient ~(admin/amdin)$ openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | b7849907a23b4604a3e3940f4034326b |
| name                | glance                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ openstack role add --project service --user glance admin
ubcode@osclient ~(admin/amdin)$ openstack service create --name glance \
>   --description "OpenStack Image" image
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Image                  |
| enabled     | True                             |
| id          | d6a3dadf92e542289c5ebd37e3553cdd |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ 

4、Create the Image service API endpoints:

ubcode@osclient ~(admin/amdin)$ openstack endpoint create --region RegionOne \
>   image public http://controller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | e047382ce61740bf9dc4219c97eff2f8 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | d6a3dadf92e542289c5ebd37e3553cdd |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ openstack endpoint create --region RegionOne \
>   image internal http://controller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | ae98462c8f4346f3991d693232a108d3 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | d6a3dadf92e542289c5ebd37e3553cdd |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ openstack endpoint create --region RegionOne \
>   image admin http://controller:9292
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 56d1454571064cb3ad3c749d18fb57e6 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | d6a3dadf92e542289c5ebd37e3553cdd |
| service_name | glance                           |
| service_type | image                            |
| url          | http://controller:9292           |
+--------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ 

3.2 Install and configure components

1、安装glance软件包

root@controller:~# apt install glance

2、Edit the /etc/glance/glance-api.conf

。[database]

[database]
# connection = sqlite:var/lib/glance/glance.sqlite
connection = mysql+pymysql://glance:openstack@controller/glance
backend = sqlalchemy
  1. [database]:这行指定了接下来的配置项属于数据库部分。

  2. # connection = sqlite:var/lib/glance/glance.sqlite:这行被注释掉了,意味着它目前不会被使用。它原本的目的是设置数据库连接到一个SQLite数据库文件,路径是 /var/lib/glance/glance.sqlite。SQLite是一个轻量级的数据库,它将数据库存储在一个单一的文件中。

  3. connection = mysql+pymysql://glance:openstack@controller/glance:这行设置了数据库连接到一个MySQL数据库。mysql+pymysql 是指定使用pymysql作为MySQL的Python适配器。glance:openstack 是数据库用户名和密码,controller 是数据库服务器的主机名或IP地址,glance 是数据库的名称。

  4. backend = sqlalchemy:这行指定了后端存储使用的是SQLAlchemy。SQLAlchemy是一个Python的SQL工具包和对象关系映射(ORM)系统,它提供了一个全功能的SQL表达式语言以及一个丰富的集合,用于映射Python类到数据库表。

简而言之,这段配置将数据库的后端从SQLite更改为MySQL,并且使用了SQLAlchemy作为ORM工具来管理数据库操作。

 。[keystone_authtoken]和[paste_deploy]

[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = openstack
...

[paste_deploy]
...
flavor = keystone

。[glance_store]

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

。[oslo_limit](未配置)

。[DEFAULT](未配置)

3、初始化glance数据库

root@controller:~# su -s /bin/sh -c "glance-manage db_sync" glance

3.3 Finalize installation

root@controller:~# service glance-api restart

root@controller:~# glance-manage --version
24.2.1

4、Verify operation

在controller node上操作

1、以admin user操作OpenStackClient:

root@controller:~# vi admin-openrc  <--在controller node上创建admin-openrc
root@controller:~# cat admin-openrc 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(admin/amdin)\$ '
root@controller:~# . admin-openrc 

2、下载cirros镜像

root@controller ~(admin/amdin)# wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

3、上传cirros镜像

root@controller ~(admin/amdin)# glance image-create --name "cirros" \
>   --file cirros-0.4.0-x86_64-disk.img \
>   --disk-format qcow2 --container-format bare \
>   --visibility=public
+------------------+----------------------------------------------------------------------------------+
| Property         | Value                                                                            |
+------------------+----------------------------------------------------------------------------------+
| checksum         | 443b7623e27ecf03dc9e01ee93f67afe                                                 |
| container_format | bare                                                                             |
| created_at       | 2024-07-06T13:54:01Z                                                             |
| disk_format      | qcow2                                                                            |
| id               | 429decdd-9230-49c0-b735-70364c226eb5                                             |
| min_disk         | 0                                                                                |
| min_ram          | 0                                                                                |
| name             | cirros                                                                           |
| os_hash_algo     | sha512                                                                           |
| os_hash_value    | 6513f21e44aa3da349f248188a44bc304a3653a04122d8fb4535423c8e1d14cd6a153f735bb0982e |
|                  | 2161b5b5186106570c17a9e58b64dd39390617cd5a350f78                                 |
| os_hidden        | False                                                                            |
| owner            | ee65b6c3961747b988ab8bd1cc19fb93                                                 |
| protected        | False                                                                            |
| size             | 12716032                                                                         |
| status           | active                                                                           |
| tags             | []                                                                               |
| updated_at       | 2024-07-06T13:54:02Z                                                             |
| virtual_size     | 46137344                                                                         |
| visibility       | public                                                                           |
+------------------+----------------------------------------------------------------------------------+
root@controller:~# 

参数解释:

  1. --disk-format qcow2: 指定磁盘格式为qcow2。qcow2是一种流行的QEMU磁盘镜像格式,支持多种特性,如快照、压缩等。

  2. --container-format bare: 指定容器格式为bare,意味着这个镜像是裸机镜像,不是封装在任何容器格式中的。

  3. --visibility=public: 设置镜像的可见性为公共,这意味着所有用户都可以访问这个镜像。

4、检查cirros镜像

root@controller ~(admin/amdin)# glance image-list
+--------------------------------------+--------+
| ID                                   | Name   |
+--------------------------------------+--------+
| 429decdd-9230-49c0-b735-70364c226eb5 | cirros |
+--------------------------------------+--------+

root@controller ~(admin/amdin)# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 429decdd-9230-49c0-b735-70364c226eb5 | cirros | active |
+--------------------------------------+--------+--------+

root@controller ~(admin/amdin)# openstack service list
+----------------------------------+----------+----------+
| ID                               | Name     | Type     |
+----------------------------------+----------+----------+
| 75fe01049ec648b69e48d200971bf601 | keystone | identity |
| d6a3dadf92e542289c5ebd37e3553cdd | glance   | image    |
+----------------------------------+----------+----------+
root@controller ~(admin/amdin)# 

5、关闭虚机,拍摄快照

 

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值