基本配置

Glance 有许多选项可用于配置 Glance API 服务器以及 Glance 可以用于存储镜像的各种存储后端。

大多数配置是通过配置文件完成的。

启动 Glance 服务器时,可以指定要使用的配置文件(请参阅 关于控制 Glance 服务器的文档)。如果您没有指定配置文件,Glance 将按顺序在以下目录中查找配置文件

  • ~/.glance

  • ~/

  • /etc/glance

  • /etc

Glance API 服务器配置文件应命名为 glance-api.conf。由于 Glance 为其每个服务维护一个配置文件,因此还有许多其他配置文件。如果您通过操作系统的包管理系统安装了 Glance,那么您可能会在 /etc/glance 中安装示例配置文件。

此外,每个服务器应用程序的示例配置文件以及详细注释都可以在 Glance 示例配置 部分中找到。

PasteDeploy 配置(控制每个组件的 WSGI 应用程序的部署)默认情况下可以在 <component>-paste.ini 中找到,与主配置文件 <component>.conf 位于同一位置。例如,glance-api-paste.ini 对应于 glance-api.conf。paste 配置的路径是可配置的,如下所示

[paste_deploy]
config_file = /path/to/paste/config

Glance 中的常用配置选项

Glance 有一些命令行选项,这些选项在所有 Glance 程序中都是通用的

--verbose

可选。默认值:False

可以在命令行和配置文件中指定。

启用日志记录的 INFO 级别,并打印更详细的命令行界面输出。

--debug

可选。默认值:False

可以在命令行和配置文件中指定。

启用日志记录的 DEBUG 级别。

--config-file=PATH

可选。默认值:请参阅下面的默认搜索顺序。

仅在命令行上指定。

获取运行程序时要使用的配置文件的路径。如果未指定此命令行选项,则我们会检查第一个参数是否为文件。如果是,则尝试将其用作配置文件。如果没有文件或没有参数,则按以下顺序搜索配置文件

  • ~/.glance

  • ~/

  • /etc/glance

  • /etc

搜索的文件名取决于服务器应用程序的名称。因此,如果您正在启动 API 服务器,则会搜索 glance-api.conf

--config-dir=DIR

可选。默认值:None

仅在命令行上指定。

获取包含所有 *.conf 片段的配置目录的路径。当通过部署框架生成未知数量的配置片段时,这提供了一种替代方案,而不是显式列出所有配置文件。

如果设置了 --config-dir,则会忽略 --config-file

一个示例用法是

$ glance-api --config-dir=/etc/glance/glance-api.d

$ ls /etc/glance/glance-api.d
  00-core.conf
  01-swift.conf
  02-ssl.conf
  ... etc.

上述示例中的数字前缀仅在需要特定的解析顺序时才必要(即,如果在后面的片段中覆盖了早期片段中设置的单个配置选项)。

请注意,glance-manage 当前从三个文件加载配置

  • glance-api.conf

  • glance-manage.conf

默认情况下,glance-manage.conf 仅指定自定义日志文件,但 glance-manage 的其他配置选项应迁移到其中。警告:在 glance-manage.conf 中设置的选项将覆盖 glance-api.conf 中设置的相同部分和名称的选项

配置服务器启动选项

可以将以下选项放在 glance-api.conf 文件中,在 [DEFAULT] 部分下。它们分别启用 API 服务器的启动和绑定行为。

bind_host=ADDRESS

要绑定的主机地址。

可选。默认值:0.0.0.0

bind_port=PORT

服务器应绑定的端口。

可选。默认值:API 服务器的 9292

backlog=REQUESTS

配置套接字的回退请求数。

可选。默认值:4096

tcp_keepidle=SECONDS

为每个服务器套接字设置 TCP_KEEPIDLE 的值(以秒为单位)。不支持在 OS X 上。

可选。默认值:600

client_socket_timeout=SECONDS

客户端连接套接字操作的超时时间。如果传入连接在此期间空闲,则将关闭该连接。值为 0 表示等待永远。

可选。默认值:900

workers=PROCESSES

要启动的 Glance API 工作进程数。每个工作进程将在同一端口上侦听。增加此值可以提高性能(尤其是在启用压缩的 SSL 时)。通常建议每个 CPU 使用一个工作进程。值为 0 将阻止创建任何新的工作进程。

可选。默认值:将默认使用可用的 CPU 数量。

max_request_id_length=LENGTH

限制 x-openstack-request-id 标头的最大大小,该标头被记录。仅当配置了上下文中间件时才影响。

可选。默认值:64(受 max_header_line 默认值限制:16384)

配置 Glance 中的日志记录

Glance 中有许多配置选项控制 Glance 服务器如何记录消息。

--log-config=PATH

可选。默认值:None

仅在命令行上指定。

获取用于配置日志记录的配置文件的路径。

仅在配置文件中可用的日志记录选项

您需要在应用程序配置文件的 [DEFAULT] 部分中放置不同的日志记录选项。例如,您可以在名为 etc/glance-api.conf 的配置文件中执行以下操作

[DEFAULT]
log_file = /var/log/glance/api.log
log_file

用于记录 Glance 服务器消息的文件的文件路径。如果丢失,默认情况下会将消息输出到 stdout,因此如果您以守护程序模式运行 Glance 服务器(使用 glance-control),则应确保将 log_file 选项设置为适当的值。

log_dir

用于日志文件的文件路径。如果未指定(默认值),则将 log_file 用作绝对文件路径。

log_date_format

日志输出中时间戳的格式字符串。

默认值为 %Y-%m-%d %H:%M:%S。有关设置此格式字符串的更多信息,请参阅 logging 模块 文档。

log_use_syslog

使用 syslog 日志记录功能。

默认值为 False。

配置 Glance 存储后端

Glance 中有许多配置选项控制 Glance 如何存储磁盘镜像。启用的后端必须在 [DEFAULT] 部分中定义。

enabled_backends=store1_id:store1_type, store2_id:store2_type[,...]

必需。

一个以“store_id:store_type”字符串分隔的逗号列表。存储 ID 可以由用户选择,而有效的存储类型是 (filehttprbdswiftcindervmwares3)。

然后必须在 [glance_store] 部分中设置默认后端

default_backend = store1_id

必需。

此选项必须设置为 enabled_backends 中使用的存储标识符之一。

此外,必须为 enabled_backends 中定义的每个键值对创建一个部分。每个部分必须填充特定于存储的选项。请参阅 配置多个 Cinder 存储后端 以获取完整示例。

配置文件系统存储后端

filesystem_store_datadir=PATH

可选。默认值:/var/lib/glance/images/

只能在配置文件中指定。

此选项特定于文件系统存储后端。

设置文件系统存储后端写入磁盘镜像的路径。请注意,文件系统存储后端将尝试创建此目录(如果它不存在)。确保运行 glance-api 的用户对此目录具有写权限。

filesystem_store_file_perm=PERM_MODE

可选。默认值:0

只能在配置文件中指定。

此选项特定于文件系统存储后端。

创建镜像文件所需的权限值,以八进制表示。您可以使用此值指定消耗服务的用户(例如 Nova)作为拥有创建文件的组的唯一成员。要保持默认值,请分配小于或等于 0 的权限值。请注意,文件所有者必须保留读取权限;如果此值删除了该权限,将记录错误消息并引发 BadStoreConfiguration 异常。如果 Glance 服务没有足够的权限来更改文件访问权限,仍然会保存文件,但 Glance 日志中会出现警告消息。

filesystem_store_chunk_size=SIZE_IN_BYTES

可选。默认值:65536

只能在配置文件中指定。

此选项特定于文件系统存储后端。

读取或写入镜像文件时使用的块大小。提高此值可以提高吞吐量,但处理大量请求时可能会略微增加内存使用量。

使用多个存储配置文件系统存储后端

filesystem_store_datadirs=PATH:PRIORITY

可选。默认值:/var/lib/glance/images/:1

示例

filesystem_store_datadirs = /var/glance/store
filesystem_store_datadirs = /var/glance/store1:100
filesystem_store_datadirs = /var/glance/store2:200

此选项只能在配置文件中指定,并且仅特定于文件系统存储后端。

filesystem_store_datadirs 选项允许管理员配置多个存储目录以在文件系统存储后端中保存 glance 镜像。可以为每个目录关联其优先级。

注意:

  • 如果需要特定的解析顺序(即,如果在后面的片段中覆盖了早期片段中设置的单个配置选项),则可以多次指定此选项。

  • 必须在 glance-api.conf 中指定 filesystem_store_datadir 或 filesystem_store_datadirs 选项之一

  • 优先级为 200 的存储优先于优先级为 100 的存储。

  • 如果未指定优先级,则默认优先级“0”与该优先级相关联。

  • 如果两个文件系统存储具有相同的优先级,则具有最大可用空间的存储将被选择来存储镜像。

  • 如果多次指定相同的存储,将引发 BadStoreConfiguration 异常。

配置 Swift 存储后端

swift_store_auth_address=URL

在使用 Swift 存储后端时必需。

只能在配置文件中指定。

已弃用。请改用 Swift 后端配置文件中的 auth_address

此选项特定于 Swift 存储后端。

设置在向 Swift 存储系统发出调用时提供的身份验证 URL。有关 Swift 身份验证系统的更多信息,请参阅 Swift auth 文档。

重要提示:Swift 身份验证地址默认使用 HTTPS。这意味着如果您使用 HTTP 进行身份验证运行 Swift,则需要将 swift_store_auth_address 设置为完整的 URL,包括 http://

swift_store_user=USER

在使用 Swift 存储后端时必需。

只能在配置文件中指定。

已弃用。请改用 Swift 后端配置文件中的 user

此选项特定于 Swift 存储后端。

设置要使用 swift_store_auth_address 进行身份验证的用户。

swift_store_key=KEY

在使用 Swift 存储后端时必需。

只能在配置文件中指定。

已弃用。请改用 Swift 后端配置文件中的 key

此选项特定于 Swift 存储后端。

设置要使用 swift_store_auth_address 为用户 swift_store_user 进行身份验证的身份验证密钥。

swift_store_container=CONTAINER

可选。默认值:glance

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

设置在 Swift 中用于 Glance 镜像的容器的名称。

swift_store_create_container_on_put

可选。默认值:False

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

如果为 true,Glance 将尝试创建容器 swift_store_container(如果它不存在)。

swift_store_large_object_size=SIZE_IN_MB

可选。默认值:5120

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

当 Glance 开始将镜像文件分块并在 Swift 中执行大型对象清单时,应该使用多大尺寸(以 MB 为单位)?默认情况下,这是 Swift 中的最大对象大小,即 5GB

swift_store_large_object_chunk_size=SIZE_IN_MB

可选。默认值:200

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

在执行大型对象清单时,Glance 应该将多大尺寸(以 MB 为单位)的块写入 Swift?默认值为 200MB。

swift_store_multi_tenant=False

可选。默认值:False

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

如果设置为 True,则启用多租户存储模式,这将导致 Glance 镜像存储在特定租户的 Swift 帐户中。如果设置为 False,Glance 将所有镜像存储在单个 Swift 帐户中。

swift_store_multiple_containers_seed

可选。默认值:0

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

如果设置为 0,则单租户存储将仅使用一个容器来存储所有镜像。如果设置为 1 到 32 之间的整数值,则单租户存储将使用多个容器来存储镜像,并且该值将确定在确定将镜像放置在哪个容器中时要检查的镜像 UUID 中的字符数。将创建的最大容器数大约等于 16^N。只有在禁用 swift_store_multi_tenant 时才使用此设置。

示例:如果将此配置选项设置为 3 且 swift_store_container = ‘glance’,则 UUID 为 ‘fdae39a1-bac5-4238-aba4-69bcc726e848’ 的镜像将被放置在容器 ‘glance_fda’ 中。UUID 中的所有连字符都包含在创建容器名称中,但不计入字符限制,因此在本例中,N=10 时,容器名称将为 ‘glance_fdae39a1-ba’。

在选择 swift_store_multiple_containers_seed 的值时,部署者应与他们的 Swift 操作团队讨论合适的值。此选项的作者建议大规模部署使用值 ‘2’,这将创建最多约 256 个容器。即使在极大规模的部署中,选择高于此值的数字也可能不会对性能产生任何积极影响,并且可能导致大量空闲未使用的容器。最大的部署可以通过提高单个容器上的 Swift 速率限制来提高性能。注意:如果关闭了动态容器创建,则此配置选项的任何高于 ‘1’ 的值可能不合理,因为部署者将必须手动创建每个容器。

swift_store_admin_tenants

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

可选。默认值:未设置。

将作为 Glance 在多租户模式下创建的容器的读写 ACL 应用的 Swift ACL 字符串列表。这将授予指定的租户/用户对所有新创建的镜像对象进行读写访问权限。允许标准的 Swift ACL 字符串格式,包括

<tenant_id>:<username> <tenant_name>:<username> *:<username>

可以使用逗号分隔的列表组合多个 ACL,例如:swift_store_admin_tenants = service:glance,*:admin

swift_store_auth_version

只能在配置文件中指定。

已弃用。请在 Swift 后端配置文件中使用 auth_version 代替。

此选项特定于 Swift 存储后端。

可选。默认值:2

一个字符串,指示要使用的 Swift OpenStack 身份验证版本。有关更多详细信息,请参阅项目 python-swiftclient

swift_store_service_type

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

可选。默认值:object-store

一个字符串,给出要使用的 swift 服务的服务类型。只有当 swift_store_auth_version 为 2 时,才使用此设置。

swift_store_region

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

可选。默认值:未设置。

一个字符串,给出要使用的 swift 服务端点的区域。只有当 swift_store_auth_version 为 2 时,才使用此设置。此设置对于区分多个 swift 服务在身份验证期间可能出现在服务目录中特别有用。

swift_store_endpoint_type

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

可选。默认值:publicURL

一个字符串,给出要使用的 swift 服务端点的端点类型。只有当 swift_store_auth_version 为 2 时,才使用此设置。

swift_store_ssl_compression

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

可选。默认值:True。

如果设置为 False,则禁用 https swift 请求的 SSL 层压缩。对于已经处于压缩格式的镜像(例如 qcow2),设置为 ‘False’ 可能会提高性能。如果设置为 True,则将启用压缩(前提是 swift 代理支持)。

swift_store_cacert

只能在配置文件中指定。

可选。默认值:None

一个字符串,给出将允许 Glance 的服务在与 Swift 通信时执行 SSL 验证的 CA 证书捆绑包的路径。

swift_store_retry_get_count

Swift 下载将在请求失败之前重试的次数。可选。默认值:0

配置多个 Swift 帐户/存储

为了不在数据库中存储 Swift 帐户凭据,并支持多个帐户(或多个 Swift 后端存储),数据库中存储一个引用,并且相应的配置(凭据/参数)详细信息存储在配置文件中。可选。默认值:未启用。

此文件的位置使用配置文件中的 swift_store_config_file 配置选项在 [DEFAULT] 部分中指定。如果指定了不正确的值,Glance API Swift 存储服务将不会被配置。

swift_store_config_file=PATH

此选项特定于 Swift 存储后端。

default_swift_reference=DEFAULT_REFERENCE

配置多个 Swift 帐户/后端存储时需要。

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

它是用于添加任何新镜像的默认 swift 引用。

swift_store_auth_insecure

如果为 True,则绕过 Swift 的 SSL 证书验证。

只能在配置文件中指定。

此选项特定于 Swift 存储后端。

可选。默认值:False

配置 Swift 配置文件

如果设置了 swift_store_config_file,Glance 将使用此参数指定的文件的信息。

注意

swift_store_config_file 当前仅用于单租户 Swift 存储配置。如果您配置了多租户 Swift 存储后端 (swift_store_multi_tenant=True),请确保 swift_store_config_filedefault_swift_reference设置。

该文件包含一组引用,例如

[ref1]
user = tenant:user1
key = key1
auth_version = 2
auth_address = https://:5000/v2.0

[ref2]
user = project_name:user_name2
key = key2
user_domain_id = default
project_domain_id = default
auth_version = 3
auth_address = https://:5000/v3

必须配置默认引用。其参数将在创建新镜像时使用。例如,要将 ref2 指定为默认引用,请将以下值添加到 glance-api.conf 文件的 [glance_store] 部分

default_swift_reference = ref2

在引用中,用户可以指定以下参数

user

project_name:user_name 格式的项目名和用户名对,用于对 Swift 身份验证服务进行身份验证。

key

用于对 Swift 身份验证服务进行身份验证的用户的身份验证密钥。

auth_address

Swift 身份验证服务所在的位置。

auth_version

要使用的 Swift OpenStack 身份验证版本。有效版本是 Keystone 的 23,以及 Swauth 和 Rackspace 的 1(已弃用)。

可选。默认值:2

project_domain_id

请求的项目级别授权范围的项目域 ID。

可选。默认值:None

如果 ``auth_version`3,可以指定此选项。`

project_domain_name

请求的项目级别授权范围的项目域名称。

可选。默认值:None

如果 ``auth_version`3,可以指定此选项。`

user_domain_id

请求的域级别授权范围的用户域 ID。

可选。默认值:None

如果 ``auth_version`3,可以指定此选项。`

user_domain_name

请求的域级别授权范围的用户域名称。

可选。默认值:None

如果 ``auth_version`3,可以指定此选项。`

配置 RBD 存储后端

注意:RBD 存储后端需要 librados 和 librbd 的 python 绑定。这些绑定在基于 Debian 的发行版上位于 python-ceph 包中。

rbd_store_pool=POOL

可选。默认值:rbd

只能在配置文件中指定。

此选项特定于 RBD 存储后端。

设置存储镜像的 RADOS 池。

rbd_store_chunk_size=CHUNK_SIZE_MB

可选。默认值:8

只能在配置文件中指定。

此选项特定于 RBD 存储后端。

镜像将被分成大小为(以兆字节为单位)的对象。为了获得最佳性能,这应该是一个 2 的幂。

rados_connect_timeout

可选。默认值:0

只能在配置文件中指定。

此选项特定于 RBD 存储后端。

防止 glance-api 在连接到 RBD 时挂起。设置 glance-api 在关闭连接之前等待的时间(以秒为单位)。设置 rados_connect_timeout<=0 表示没有超时。

rbd_store_ceph_conf=PATH

可选。默认值:/etc/ceph/ceph.conf~/.ceph/config./ceph.conf

只能在配置文件中指定。

此选项特定于 RBD 存储后端。

设置要使用的 Ceph 配置文件。

rbd_store_user=NAME

可选。默认值:admin

只能在配置文件中指定。

此选项特定于 RBD 存储后端。

设置要作为 RADOS 用户进行身份验证。只有在启用 RADOS 身份验证 时才需要此设置。

必须为 Ceph 配置文件中的此用户设置一个密钥环,例如使用用户 glance

[client.glance]
keyring=/etc/glance/rbd.keyring

要使用名为 glance 的用户设置最小权限,并使用名为 images 的池,请运行

rados mkpool images
ceph-authtool --create-keyring /etc/glance/rbd.keyring
ceph-authtool --gen-key --name client.glance --cap mon 'allow r' --cap osd 'allow rwx pool=images' /etc/glance/rbd.keyring
ceph auth add client.glance -i /etc/glance/rbd.keyring

配置 Cinder 存储后端

Cinder 存储使您能够将镜像存储在块存储 (Cinder) 服务中的卷中(每个镜像一个卷)。Glance 没有直接访问为 Cinder 配置的任何后端的能力;它只是将镜像数据交给块存储服务,Cinder 决定将数据存储在哪里。

Glance 可以通过在配置 cinder 存储时设置 cinder_volume_type 选项来影响数据将存储在何处。有关详细信息,请参阅下文。

注意:要快速从镜像创建 Cinder 卷,需要额外的设置。请参阅 基于卷的镜像 文档以获取更多信息。

警告

由于在用户帐户中创建的镜像卷容易受到普通用户修改,这可能会损坏镜像,因此我们建议始终将服务凭据设置在配置文件中,以便镜像卷将在不可直接访问非服务用户的内部项目中创建。

要在内部项目中创建镜像卷,我们需要将以下配置参数设置为 glance 服务用户和内部服务项目

  • cinder_store_user_name

  • cinder_store_password

  • cinder_store_project_name

  • cinder_store_auth_address

cinder_catalog_info=<service_type>:<service_name>:<endpoint_type>

可选。默认值:volumev3::publicURL

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

设置在服务目录中查找 cinder 时要匹配的信息。格式为冒号分隔的值,形式为:<service_type>:<service_name>:<endpoint_type>

cinder_endpoint_template=http://ADDR:PORT/VERSION/%(tenant)s

可选。默认值:None

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

使用模板覆盖服务目录查找 cinder 端点。请求上下文中替换 %(...)s 部分的值。例如 https://:8776/v3/%(tenant)s

os_region_name=REGION_NAME

可选。默认值:None

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

此节点的区域名称。

已弃用。请使用 cinder_os_region_name 代替。

cinder_os_region_name=REGION_NAME

可选。默认值:None

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

此节点的区域名称。如果指定,则用于从服务目录中查找 cinder。

cinder_ca_certificates_file=CA_FILE_PATH

可选。默认值:None

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

用于 cinder 客户端请求的 ca 证书文件的位置。

cinder_http_retries=TIMES

可选。默认值:3

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

在失败的 http 调用上 cinderclient 重试的次数。

cinder_state_transition_timeout

可选。默认值:300

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

等待 cinder 卷转换完成的时间段(以秒为单位)。

cinder_api_insecure=ON_OFF

可选。默认值:False

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

允许对 cinder 执行不安全的 SSL 请求。

cinder_store_user_name=NAME

可选。默认值:None

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

用于对 Cinder 进行身份验证的用户名。如果为 <None>,则使用当前上下文的用户。

注意:只有在设置了所有 cinder_store_user_namecinder_store_passwordcinder_store_project_namecinder_store_auth_address 时,才应用此选项。这些选项对于将镜像卷放入内部服务项目以隐藏卷并使镜像在项目之间共享很有用。

cinder_store_user_domain_name=NAME

可选。默认值:Default

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

用于对 cinder 进行身份验证的用户的域。

注意:只有在设置了所有 cinder_store_user_namecinder_store_passwordcinder_store_project_namecinder_store_auth_address 时,才应用此选项。

cinder_store_password=PASSWORD

可选。默认值:None

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

用于对 Cinder 进行身份验证的用户的密码。如果为 <None>,则使用当前上下文 auth 令牌。

注意:只有在设置了所有 cinder_store_user_namecinder_store_passwordcinder_store_project_namecinder_store_auth_address 时,才应用此选项。

cinder_store_project_name=NAME

可选。默认值:None

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

镜像存储在 Cinder 中的项目名称。如果为 <None>,则使用当前上下文中的项目。

注意:只有在设置了所有 cinder_store_user_namecinder_store_passwordcinder_store_project_namecinder_store_auth_address 时,才应用此选项。

cinder_store_project_domain_name=NAME

可选。默认值:Default

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

镜像卷存储在 cinder 中的项目的域。

注意:只有在设置了所有 cinder_store_user_namecinder_store_passwordcinder_store_project_namecinder_store_auth_address 时,才应用此选项。

cinder_store_auth_address=URL

可选。默认值:None

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

Cinder 身份验证服务正在侦听的地址。如果为 <None>,则使用服务目录中的 cinder 端点。

注意:只有在设置了所有 cinder_store_user_namecinder_store_passwordcinder_store_project_namecinder_store_auth_address 时,才应用此选项。

rootwrap_config=NAME

可选。默认值:/etc/glance/rootwrap.conf

只能在配置文件中指定。

此选项特定于 Cinder 存储后端。

要用于以 root 身份运行命令的 rootwrap 配置文件路径。

lock_path

必需。默认值为环境变量 OSLO_LOCK_PATH,但我们建议在配置文件中设置一个值。

这指定了用于锁文件的目录。

注意:此选项必须在配置文件中的 [oslo_concurrency] 部分设置。

[oslo_concurrency]
# ...
lock_path = /var/lib/glance/tmp

配置多挂载卷类型

当使用 Cinder 作为 Glance 后端时,我们将镜像存储到位于 service 项目中,由 glance 用户拥有的 Image-Volume 中(推荐)。

当使用镜像创建卷或服务器时,Image-Volume 会附加到 Glance 主机,我们将镜像数据复制到目标位置,无论是卷还是服务器。

当尝试使用相同的镜像创建多个资源时,此工作流程可能会导致问题,因为 Cinder 卷默认情况下不提供多次附加相同卷的能力。

这需要一个名为 卷多挂载 的特殊功能,该功能使卷能够附加到相同或不同的主机多次。

要为 Image-Volumes 启用多挂载功能,可以执行以下步骤

  • 创建一个多挂载卷类型,并设置 <is> multiattach 属性

$ openstack volume type create glance-multiattach
$ openstack volume type set --property multiattach="<is> True"  glance-multiattach

注意

默认情况下,创建新的卷类型是一项仅限管理员的操作。

  • (可选) 设置 volume_backend_name 属性

创建用于 Glance 的多挂载卷类型后,还应设置 volume_backend_name 属性,以防止您的 Image-Volumes 根据 Cinder 执行的调度最终出现在随机后端中。

注意

如果您将为 Cinder 卷重用现有的卷类型,则不需要这样做。

请向您的 Cinder 管理员询问为您的多挂载卷类型设置的正确 volume_backend_name。 这里我们使用 LVM_iSCSI 作为示例。

$ openstack volume type set glance-multiattach --property volume_backend_name=LVM_iSCSI
  • 最后,您需要将多挂载卷类型设置为 cinder_volume_type 配置选项的值,以将其用于创建 Image-Volumes。

在 glance-api.conf 中

[DEFAULT]
# list of enabled stores identified by their property group name
enabled_backends = fast:cinder

# the default store, if not set glance-api service will not start
[glance_store]
default_backend = fast

# conf props for fast store instance
[fast]
...
cinder_volume_type = glance-multiattach

配置多个 Cinder 存储后端

从 Victoria 版本开始,Glance 完全支持通过利用 Cinder volume-types 配置多个 cinder 存储。 请注意,卷类型由 Cinder 管理员定义,因此设置多个 cinder 存储需要与 Cinder 管理员协作。

从 Glance 侧,您会将想要定义的每个 cinder 存储添加到 glance 配置文件中的 enabled_backends 配置选项中。 对于这些存储中的每一个,您必须在 glance-api.conf 的该存储特定配置部分设置 cinder_volume_type 配置选项。 要设置什么取决于 Cinder 中可用的卷类型;请咨询您的 Cinder 管理员以获取合适的卷类型列表。

警告

要使多个 cinder 存储正常工作,必须设置以下配置参数

  • cinder_store_user_name

  • cinder_store_password

  • cinder_store_project_name

  • cinder_store_auth_address

  • cinder_volume_type

这是因为,在初始化 cinder 存储时,我们将查询 cinder 以使用上述凭据验证 glance 配置文件中设置的卷类型。 如果在服务启动期间未进行验证,我们可能由于配置了无效的卷类型而无法稍后创建镜像。

以下是一些多个 cinder 存储配置示例。

示例 1:全新部署

例如,如果 cinder 配置了 2 种卷类型 fastslow,那么 glance 配置应如下所示;

[DEFAULT]
# list of enabled stores identified by their property group name
enabled_backends = fast:cinder, slow:cinder

# the default store, if not set glance-api service will not start
[glance_store]
default_backend = fast

# conf props for fast store instance
[fast]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-fast
description = LVM based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

# conf props for slow store instance
[slow]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-slow
description = NFS based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

示例 2:从单个 cinder 存储升级到多个 cinder 存储,如果 default_volume_type 设置在 cinder.conf 中,并且 cinder_volume_type 也设置在 glance-api.conf 中,那么操作员需要在 glance 中创建一个存储,其中 cinder_volume_type 与旧 glance 配置相同

# cinder.conf
The glance administrator has to find out what the default volume-type is
in the cinder installation, so they need to discuss with either cinder
admin or cloud admin to identify default volume-type from cinder and then
explicitly configure that as the value of ``cinder_volume_type``.

升级前示例配置

# old configuration in glance
[glance_store]
stores = cinder, file, http
default_store = cinder
cinder_state_transition_timeout = 300
rootwrap_config = /etc/glance/rootwrap.conf
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
cinder_catalog_info = volumev3::publicURL
cinder_volume_type = glance-old

升级后示例配置

# new configuration in glance
[DEFAULT]
enabled_backends = old:cinder, new:cinder

[glance_store]
default_backend = new

[new]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-new
description = LVM based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

[old]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-old # as per old cinder.conf
description = NFS based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

示例 3:从单个 cinder 存储升级到多个 cinder 存储,如果 default_volume_type 未设置在 cinder.conf 中,并且 cinder_volume_type 也未设置在 glance-api.conf 中,那么管理员需要在 glance 中创建一个存储以复制确切的旧配置

# cinder.conf
The glance administrator has to find out what the default volume-type is
in the cinder installation, so they need to discuss with either cinder
admin or cloud admin to identify default volume-type from cinder and then
explicitly configure that as the value of ``cinder_volume_type``.

升级前示例配置

# old configuration in glance
[glance_store]
stores = cinder, file, http
default_store = cinder
cinder_state_transition_timeout = 300
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
rootwrap_config = /etc/glance/rootwrap.conf
cinder_catalog_info = volumev3::publicURL

升级后示例配置

# new configuration in glance
[DEFAULT]
enabled_backends = old:cinder, new:cinder

[glance_store]
default_backend = new

# cinder store as per old (single store configuration)
[old]
rootwrap_config = /etc/glance/rootwrap.conf
description = LVM based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

[new]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-new
description = NFS based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

示例 4:从单个 cinder 存储升级到多个 cinder 存储,如果 default_volume_type 设置在 cinder.conf 中,但 cinder_volume_type 未设置在 glance-api.conf 中,那么管理员需要将 cinder_volume_type 设置为 cinder.conf 中设置的 default_backend 的一个存储

# cinder.conf
The glance administrator has to find out what the default volume-type is
in the cinder installation, so they need to discuss with either cinder
admin or cloud admin to identify default volume-type from cinder and then
explicitly configure that as the value of ``cinder_volume_type``.

升级前示例配置

# old configuration in glance
[glance_store]
stores = cinder, file, http
default_store = cinder
cinder_state_transition_timeout = 300
rootwrap_config = /etc/glance/rootwrap.conf
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service

升级后示例配置

# new configuration in glance
[DEFAULT]
enabled_backends = old:cinder,new:cinder

[glance_store]
default_backend = old

[old]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-old # as per old cinder.conf
description = LVM based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

[new]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-new
description = NFS based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

示例 5:从单个 cinder 存储升级到多个 cinder 存储,如果像 cinder_store_user_namecinder_store_passwordcinder_store_project_namecinder_store_auth_address 这样的属性未在单个存储中设置

# old configuration in glance
[glance_store]
stores = cinder, file, http
default_store = cinder
cinder_state_transition_timeout = 300
rootwrap_config = /etc/glance/rootwrap.conf

升级后示例配置

# new configuration in glance
[DEFAULT]
enabled_backends = new:cinder

[glance_store]
default_backend = new

[new]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-new
description = NFS based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service
# etc..

由于 cinder 特定属性未在单个存储中设置,因此 Image-Volumes 将存在于用户项目中,需要进行转移。 升级到多存储后,您需要确保所有 Image-Volumes 都转移到 service 项目。

步骤

1. 登录到拥有 Image-Volume 的用户和项目,并创建一个卷转移请求。

openstack volume transfer request create <Image-Volume-ID>

记下 idauth_key,因为它们将在接受转移时使用。

  1. 列出转移请求以验证转移是否已成功创建。

openstack volume transfer request list
  1. 登录到 glance 用户和服务项目并接受转移。

openstack volume transfer request accept transferID authKey
  1. 列出卷以查看 Image-Volume 是否已成功转移。

openstack volume list --name <Image-Volume-Name>

一旦所有 Image-Volumes 都迁移到服务项目,您就可以列出或显示镜像,它将更新从旧格式到新格式的位置。

警告

重要的是要注意,从单个存储升级到多个存储时,cinder 存储特定配置参数的值在升级之前和之后应保持相同。

示例:假设您在单个存储配置中设置了以下凭据

[glance_store]
stores = cinder, file, http
default_store = cinder
cinder_state_transition_timeout = 300
rootwrap_config = /etc/glance/rootwrap.conf
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service

那么升级后,cinder_store_auth_addresscinder_store_user_namecinder_store_passwordcinder_store_project_name 的 cinder 特定参数值应保持相同

[DEFAULT]
enabled_backends = new:cinder

[glance_store]
default_backend = new

[new]
rootwrap_config = /etc/glance/rootwrap.conf
cinder_volume_type = glance-new
description = NFS based cinder store
cinder_catalog_info = volumev3::publicURL
cinder_store_auth_address = http://localhost/identity/v3
cinder_store_user_name = glance
cinder_store_password = admin
cinder_store_project_name = service

在从单个 cinder 存储升级到多个单个存储时,旧镜像的 location URL 将从 cinder://volume-id 更改为 cinder://store-name/volume-id

注意:从单个 cinder 存储升级到使用多个 cinder 存储后,第一次 image-list 或第一次 GETimage-show 调用镜像将需要额外的时间,因为我们将执行延迟加载操作以更新旧镜像位置 URL 以使用新的镜像位置 URL。 后续 GETimage-listimage-show 调用将像以前一样执行。

配置 VMware 存储后端

vmware_server_host=ADDRESS

在使用 VMware 存储后端时需要。

只能在配置文件中指定。

设置 ESX/ESXi 或 vCenter Server 目标系统的地址。 该地址可以包含 IP (127.0.0.1)、IP 和端口 (127.0.0.1:443)、DNS 名称 (www.my-domain.com) 或 DNS 和端口。

此选项特定于 VMware 存储后端。

vmware_server_username=USERNAME

在使用 VMware 存储后端时需要。

只能在配置文件中指定。

用于向 VMware ESX/ESXi 或 vCenter Server 身份验证的用户名。

vmware_server_password=PASSWORD

在使用 VMware 存储后端时需要。

只能在配置文件中指定。

用于向 VMware ESX/ESXi 或 vCenter Server 身份验证的密码。

vmware_datastores

在使用 VMware 存储后端时需要。

此选项只能在配置文件中指定,并且特定于 VMware 存储后端。

vmware_datastores 允许管理员配置多个数据存储以在 VMware 存储后端中保存 glance 镜像。 该选项所需的格式为:<datacenter_path>:<datastore_name>:<optional_weight>。

其中 datacenter_path 是数据存储所在的的数据中心库存路径。 可以提供可选的权重以指定优先级。

示例

vmware_datastores = datacenter1:datastore1
vmware_datastores = dc_folder/datacenter2:datastore2:100
vmware_datastores = datacenter1:datastore3:200

注意:

  • 可以多次指定此选项以指定多个数据存储。

  • 必须在 glance-api.conf 中指定 vmware_datastore_name 或 vmware_datastores 选项。

  • 权重为 200 的数据存储优先于权重为 100 的数据存储。

  • 如果未指定权重,则默认权重“0”与它关联。

  • 如果两个数据存储具有相同的权重,则具有最大可用空间的存储将用于存储镜像。

  • 如果数据中心路径或数据存储名称包含冒号 (:) 符号,则必须使用反斜杠对其进行转义。

vmware_api_retry_count=TIMES

可选。 默认值:10

只能在配置文件中指定。

在连接相关问题发生时,VMware ESX/VC 服务器 API 必须重试的次数。

vmware_task_poll_interval=SECONDS

可选。 默认值:5

只能在配置文件中指定。

用于轮询在 VMware ESX/VC 服务器上调用的远程任务的间隔。

vmware_store_image_dir

可选。 默认值:/openstack_glance

只能在配置文件中指定。

用于访问将在数据存储中存储镜像的文件夹的路径。

vmware_api_insecure=ON_OFF

可选。默认值:False

只能在配置文件中指定。

允许对 ESX/VC 服务器执行不安全的 SSL 请求。

配置 S3 存储后端

s3_store_host

只能在配置文件中指定。

S3 服务器正在侦听的主机。 此选项可以包含 DNS 名称(例如 s3.amazonaws.com、my-object-storage.com)或 IP 地址(127.0.0.1)。

示例

s3_store_host = http://s3-ap-northeast-1.amazonaws.com
s3_store_host = https://s3-ap-northeast-1.amazonaws.com
s3_store_host = http://my-object-storage.com
s3_store_host = https://my-object-storage.com:9000
s3_store_access_key

只能在配置文件中指定。

用于向 Amazon S3 或 S3 兼容存储服务器进行身份验证的访问密钥。

s3_store_secret_key

只能在配置文件中指定。

用于向 Amazon S3 或 S3 兼容存储服务器进行身份验证的密钥。

s3_store_bucket

只能在配置文件中指定。

将 glance 镜像存储在 S3 中的存储桶名称。 如果 s3_store_create_bucket_on_put 设置为 true,即使存储桶不存在,它也会自动创建。

s3_store_create_bucket_on_put

可选。默认值:False

只能在配置文件中指定。

确定 S3 是否应该创建一个新的存储桶。 此选项采用布尔值,以指示 Glance 是否应该在 S3 中创建新的存储桶(如果它不存在)。

s3_store_bucket_url_format

可选。 默认值:auto

只能在配置文件中指定。

此选项采用用于指定 S3 存储桶中对象的地址的访问模型。 您可以从 autovirtualpath 中设置值。

注意:

  • path 样式中,对象的端点如下所示:https://s3.amazonaws.com/bucket/example.img

  • virtual 样式中,对象的端点如下所示:https://bucket.s3.amazonaws.com/example.img

  • 如果您不遵循存储桶名称中的 DNS 命名约定,您可以使用路径样式获取对象,但不能使用虚拟样式。

s3_store_large_object_size

可选。 默认值:100

只能在配置文件中指定。

S3 应该从多大尺寸(MB)开始对镜像文件进行分块并在 S3 中执行多部分上传。

s3_store_large_object_chunk_size

可选。 默认值:10

只能在配置文件中指定。

S3 在上传部分时应使用的多部分上传部分大小(MB)。

s3_store_thread_pools

可选。 默认值:10

只能在配置文件中指定。

执行 S3 中的多部分上传的线程池数量。

配置多个 S3 存储后端

从 Victoria 版本开始,Glance 完全支持配置多个 S3 存储。 从 Glance 侧,您会将想要定义的每个 S3 存储添加到 glance 配置文件中的 enabled_backends 配置选项中。 对于这些存储中的每一个,您必须在 glance-api.conf 的该存储特定配置部分设置 S3 特定的配置选项。

以下是多个 S3 存储配置的示例。

示例 1:全新部署

例如,如果您想配置 2 个 S3 存储 s3-primarys3-backup,那么 glance 配置应如下所示

[DEFAULT]
# list of enabled stores identified by their property group name
enabled_backends = s3-primary:s3, s3-backup:s3

# the default store, if not set glance-api service will not start
[glance_store]
default_backend = s3-primary

# conf props for s3-primary store instance
[s3-primary]
s3_store_host = https://s3-us-east-1.amazonaws.com
s3_store_access_key = primary-access-key
s3_store_secret_key = primary-secret-key
s3_store_bucket = glance-primary-bucket
s3_store_create_bucket_on_put = True
s3_store_bucket_url_format = virtual
# etc..

# conf props for s3-backup store instance
[s3-backup]
s3_store_host = https://s3-us-west-2.amazonaws.com
s3_store_access_key = backup-access-key
s3_store_secret_key = backup-secret-key
s3_store_bucket = glance-backup-bucket
s3_store_create_bucket_on_put = True
s3_store_bucket_url_format = virtual
# etc..

示例 2:从单个 S3 存储升级到多个 S3 存储

在从单个传统 S3 存储升级到多存储时,您需要确保 s3_store_host 值与旧配置中相同。 这对于维护现有镜像的兼容性至关重要。

警告

在从单个 S3 存储升级到多个 S3 存储时,升级前后 s3_store_host 配置参数的值 必须保持相同。 在升级期间更改 s3_store_host 将破坏对现有镜像的访问。

但是,您可以在任何时候更新 s3_store_access_keys3_store_secret_key,包括在升级期间。 Glance 将自动处理现有镜像的凭据更新,并在每次 GET API 调用时进行延迟更新。 这允许无缝的凭据轮换,而无需立即更新所有现有镜像位置。

升级前示例配置

# old configuration in glance
[glance_store]
stores = s3, file, http
default_store = s3
s3_store_host = https://s3.amazonaws.com
s3_store_access_key = old-access-key
s3_store_secret_key = old-secret-key
s3_store_bucket = glance-images
s3_store_create_bucket_on_put = True
s3_store_bucket_url_format = virtual

升级后示例配置

# new configuration in glance
[DEFAULT]
enabled_backends = s3-legacy:s3

[glance_store]
default_backend = s3-legacy

# S3 store matching old (single store) configuration
# NOTE: s3_store_host MUST remain the same as old configuration
[s3-legacy]
s3_store_host = https://s3.amazonaws.com  # Same as before upgrade
s3_store_access_key = old-access-key  # Can be updated anytime
s3_store_secret_key = old-secret-key  # Can be updated anytime
s3_store_bucket = glance-images
s3_store_create_bucket_on_put = True
s3_store_bucket_url_format = virtual

凭据轮换:您可以在任何时候更新存储配置中的 s3_store_access_keys3_store_secret_key,包括在升级期间或之后。 当通过 GET API 调用访问具有旧凭据的镜像时,Glance 将自动检测凭据不匹配,并使用新的凭据更新镜像位置 URL。 这种延迟更新机制可确保

  • 可以执行凭据轮换而无需停机时间

  • 现有镜像在访问之前继续使用旧凭据

  • 镜像位置会自动更新

  • 无需手动干预即可更新凭据

注意:从单个 S3 存储升级到使用多个 S3 存储后,首次对镜像进行 GETimage-show 调用将花费额外时间,因为我们将执行延迟加载操作,以更新遗留镜像位置 URL,使其使用更新的凭据(如果需要)的新镜像位置 URL。后续的 GETimage-show 调用将正常进行。

配置存储端点

swift_store_endpoint=URL

可选。默认值:None

只能在配置文件中指定。

覆盖 auth 返回的存储 URL。URL 应包含到容器但不包括容器的路径。通过将容器和对象附加到配置的 URL 来获取对象的地址。例如 https://www.my-domain.com/v1/path_up_to_container

配置 Glance 镜像大小限制

以下配置选项在 glance-api.conf 配置文件中的 [DEFAULT] 部分中指定。

image_size_cap=SIZE

可选。默认值:1099511627776 (1 TB)

可以通过 Glance API 服务器上传的最大镜像大小(以字节为单位)。

重要提示:仅在仔细考虑后才应增加此值,并且必须将其设置为小于 8 EB (9223372036854775808) 的值。

配置 Glance 用户存储配额

以下配置选项在 glance-api.conf 配置文件中的 [DEFAULT] 部分中指定。

注意

从 Xena 版本开始,Glance 支持 按租户 配额,其粒度比此选项提供的全局限制更高。您可能需要启用按租户配额并将其保留为未设置状态。

user_storage_quota

可选。默认值:0(无限制)。

此值指定每个用户在所有存储系统上可以使用的最大存储量。可以选择为该值指定单位,接受的单位为 B、KB、MB、GB 或 TB,分别代表字节、千字节、兆字节、千兆字节和太字节。默认单位为字节。

示例值如下:

user_storage_quota=20GB

配置 Glance 按租户配额

Glance 可以利用 Keystone 中设置的按租户资源限制来强制执行配额。在 Glance 中启用它们之前,这些限制必须在 Keystone 中注册默认值,并可以选择按租户覆盖。要指示 Glance 使用 Keystone 中的限制,请在 glance-api.conf 中设置 [DEFAULT]/use_keystone_limits=True

配置镜像缓存

Glance API 服务器可以配置为具有本地镜像缓存。镜像文件的缓存是透明的,并且通过可以放置在服务器应用程序管道中的中间件发生。

此管道在 PasteDeploy 配置文件 <component>-paste.ini 中配置。通常不需要直接编辑此文件,因为它随所有常见部署口味的现成管道一起提供。

启用镜像缓存中间件

要启用镜像缓存中间件,缓存中间件必须出现在应用程序管道中的适当上下文中间件之后

缓存中间件应在您的 glance-api-paste.ini 文件中,标题为 [filter:cache] 的部分中。它应该如下所示

[filter:cache]
paste.filter_factory = glance.api.middleware.cache:CacheFilter.factory

包含此筛选器的现成应用程序管道在 glance-api-paste.ini 文件中定义,如下所示

[pipeline:glance-api-caching]
pipeline = versionnegotiation context cache apiv1app

要启用上述应用程序管道,在您的主 glance-api.conf 配置文件中,选择适当的部署口味,如下所示

[paste_deploy]
flavor = caching

启用镜像缓存管理中间件(已弃用)

有一个可选的 cachemanage 中间件,允许您直接与缓存镜像交互。在 API 配置文件中,使用 cache 风格代替 cache 风格。有三种类型可供选择:cachemanagementkeystone+cachemanagementtrusted-auth+cachemanagement

[paste_deploy]
flavor = keystone+cachemanagement

新的缓存管理端点是在 Images API v. 2.13 中引入的。如果配置了缓存中间件,则新端点将处于活动状态,除非需要继续使用旧的 glance-cache-manage 工具,否则无需使用缓存管理中间件。

影响镜像缓存的配置选项

注意

这些配置选项必须在 glance-cache 和 glance-api 配置文件中设置。

一个主要的配置文件选项会影响镜像缓存。

image_cache_dir=PATH

启用镜像缓存中间件时必需。

默认值:/var/lib/glance/image-cache

这是镜像缓存可以写入文件的基本目录。确保该目录可由运行 glance-api 服务器的用户写入

image_cache_driver=DRIVER

可选。选项为 sqlitexattrcentralized_db

默认值:centralized_db

默认 centralized_db 缓存驱动程序没有特殊依赖项,除了 worker_self_reference_url,需要配置它才能将节点引用存储在数据库中。早期的缓存数据库对于每个 Glance API 服务都是独立的,现在使用 centralized_db 缓存驱动程序,它将有关缓存文件的信息存储在一个地方,即中央数据库中。升级过程中服务重启时,旧的 SQLite 数据库记录将被 迁移 到中央数据库。

sqlite 缓存驱动程序没有特殊依赖项,并使用内置的 sqlite3 模块。它将有关缓存文件的信息存储在 SQLite 数据库中。

注意 在 Caracal 版本中,sqlite 缓存驱动程序已被弃用,将在 F 开发周期中删除。

xattr 缓存驱动程序需要 python-xattr>=0.6.0 库,并且要求包含 image_cache_dir 的文件系统跟踪所有文件的访问时间(换句话说,不能为该文件系统设置 noatime 选项)。此外,必须在 fstab 的文件系统描述行上设置 user_xattr

image_cache_sqlite_db=DB_FILE

可选。

默认值:cache.db

在使用 sqlite 缓存驱动程序时,您可以设置用于存储缓存镜像信息的数据库的名称。数据库始终包含在 image_cache_dir 中。

注意 在 Caracal 版本中,image_cache_sqlite_db 选项已被弃用,将在 F 开发周期中删除。

image_cache_max_size=SIZE

可选。

默认值:10737418240 (10 GB)

镜像缓存应限制的大小(以字节为单位)。即使将该镜像文件写入会使总缓存大小超过此大小,镜像文件也会自动缓存到本地镜像缓存中。 glance-cache-pruner 可执行文件用于将镜像缓存修剪为等于或小于此值。 glance-cache-pruner 可执行文件设计为通过 cron 定期运行。有关此可执行文件的更多信息,请参阅 控制镜像缓存的增长

将记录从 SQLite 迁移到中央数据库

在升级/更新的情况下,我们需要处理将现有记录从 SQLite 数据库迁移到中央数据库。此操作将在服务启动期间执行一次。如果存在使用 image_cache_sqlite_db 配置选项(默认 cache.db)配置的 SQLite 数据库文件,并且 image_cache_driver 未设置为 centralized_db,则我们将从 SQLite 数据库读取记录,并将这些记录插入到新创建的 cached_images 表中中央数据库中。迁移所有记录后,我们将清除 SQLite 数据库表并保留 SQLite 数据库文件(供管理员/操作员稍后删除)。重要的是,一旦部署者选择使用 centralized_db 并将他们的记录从 SQLite 数据库迁移到中央数据库,如果部署者想要恢复到 sqlite 驱动程序,我们将不会将它们迁移回去。

配置通知

Glance 可以选择生成通知,以记录或发送到消息队列。配置选项在 glance-api.conf 配置文件中指定。

[oslo_messaging_notifications]/driver

可选。默认值:noop

设置 oslo.messaging 使用的通知驱动程序。选项包括 messagingmessagingv2logrouting

注意 在 M 版本中,``[DEFAULT]/notification_driver`` 选项已被弃用,转而使用 [oslo_messaging_notifications]/driver

有关更多信息,请参阅 Glance 通知oslo.messaging

[DEFAULT]/disabled_notifications

可选。默认值:[]

禁用的通知列表。可以给出通知类型以禁用单个事件,也可以给出通知组前缀以禁用组中的所有事件。

例如:如果此配置选项设置为 [“image.create”、“metadef_namespace”],则在创建镜像后将不会发送“image.create”通知,并且不会发送任何元定义命名空间的通知。

配置 Glance 属性保护

可以使用 属性保护配置文件 配置对镜像元属性的访问。可以在 glance-api.conf 配置文件中的 [DEFAULT] 部分中指定此文件的位置。如果指定了不正确的值,Glance API 服务将无法启动。

property_protection_file=PATH

可选。默认值:未启用。

如果设置了 property_protection_file,则该文件可以使用角色或策略来指定属性保护。

property_protection_rule_format=<roles|policies>

可选。默认值:roles

配置 Glance API

glance-api 服务实现了 OpenStack Images API 的版本 2。目前没有启用或禁用特定 API 版本的选项。

配置 Glance 任务

Glance 任务仅针对 OpenStack Images API 的版本 2 实现。

配置值 task_time_to_live 用于确定任务在过渡到 successfailure 状态后对用户可见的时间。

task_time_to_live=<Time_in_hours>

可选。默认值:48

配置值 task_executor 用于确定 Glance 服务应使用哪个执行器来处理任务。当前可用的实现是:taskflow

task_executor=<executor_type>

可选。默认值:taskflow

taskflow 引擎在其自己的配置选项下拥有自己的配置选项,这些选项可以在 taskflow_executor 部分中进行调整,以改进任务执行过程。在可用的选项中,您可能会找到 engine_modemax_workers。前者允许选择执行模型,可用的选项是 serialparallelworker-based。后者允许控制每个执行器实例将要实例化的工作器数量。

engine_mode 的默认值为 parallel,而 max_workers 的默认数量为 10

配置 Glance 性能分析

Glance 支持使用 osprofiler 来跟踪每个关键内部处理的性能,包括 RESTful API 调用、DB 操作等。

注意 Glance 性能 分析 目前 是一个 正在 进行 中的 功能。 虽然,一些跟踪点可用,例如 wsgi 主入口处的 API 执行分析和 DB 模块处的 SQL 执行分析,但更细粒度的跟踪点正在开发中。

配置值 enabled 用于确定是否完全启用 glance-api 服务的性能分析功能。

enabled=<True|False>

可选。默认值:False

还有另一个需要定义的配置选项才能启用 Glance 服务的性能分析。配置值 hmac_keys 用于加密性能分析的上下文数据。

hmac_keys=<secret_key_string>

可选。默认值:SECRET_KEY

重要提示:为了使性能分析按设计工作,操作员需要使部署中所有服务的 HMAC 密钥值保持一致。如果没有 HMAC 密钥,即使启用了性能分析功能,性能分析也不会被触发。

配置值 trace_sqlalchemy 用于确定是否完全启用基于 sqlalchemy 引擎的 SQL 执行分析功能,用于 glance-api 服务。

trace_sqlalchemy=<True|False>

可选。默认值:False

配置 Glance 公共端点

此设置允许操作员配置将在 Glance “版本”响应中显示的端点 URL(即对 GET / 的响应)。当 Glance API 服务在代理后面运行时,这可能是必要的,因为版本响应中显示的默认端点是实际运行 API 服务的宿主机的端点。例如,如果 Glance 在负载均衡器后面运行,则可能不允许直接访问运行 Glance API 的各个主机,因此将使用负载均衡器的 URL 作为此值。

public_endpoint=<None|URL>

可选。默认值:None

配置 http_keepalive 选项

http_keepalive=<True|False>

如果为 False,服务器将返回标头“Connection: close”,如果为 True,服务器将在其响应中返回“Connection: Keep-Alive”。为了在客户端成功发送和读取响应后显式关闭客户端套接字连接,只需在创建 wsgi 服务器时将此选项设置为 False 即可。

配置健康检查

此设置允许操作员配置将向负载均衡器提供信息的端点 URL,以确定节点上的给定 API 端点是否可用。Glance API 服务器可以配置为公开健康检查 URL。

要启用健康检查中间件,它必须出现在应用程序管道的开头。

健康检查中间件应放置在您的 glance-api-paste.ini 文件中,在名为 [app:healthcheck] 的部分中。它应该如下所示

[app:healthcheck]
paste.app_factory = oslo_middleware:Healthcheck.app_factory
backends = disable_by_file
disable_by_file_path = /etc/glance/healthcheck_disable

一个现成的组合,包括此应用程序,定义在例如 glance-api-paste.ini 文件中,如下所示

[composite:glance-api]
paste.composite_factory = glance.api:root_app_factory
/: apiv2app
/healthcheck: healthcheck

有关更多信息,请参阅 oslo.middleware

配置支持的磁盘格式

Glance 中的每个镜像都具有关联的磁盘格式属性。创建镜像时,用户指定磁盘格式。他们必须从 Glance 服务支持的集合中选择一种格式。可以通过查询 /v2/schemas/images 资源来查看受支持的集合。操作员可以添加或删除磁盘格式到受支持的集合中。这是通过设置 disk_formats 参数来完成的,该参数位于 glance-api.conf[image_format] 部分中。

disk_formats=<逗号 分隔的 磁盘 格式列表>

可选。默认值:ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso,ploop