配置选项

以下是 Placement 中所有可用配置选项的概述。有关示例配置文件,请参阅 示例配置文件

默认值

debug
类型:

布尔值

默认值:

False

可变:

此选项可以在不重启的情况下更改。

如果设置为 true,日志级别将被设置为 DEBUG,而不是默认的 INFO 级别。

log_config_append
类型:

字符串

默认值:

<None>

可变:

此选项可以在不重启的情况下更改。

日志配置文件的名称。此文件将附加到任何现有的日志配置文件。有关日志配置文件的详细信息,请参阅 Python 日志模块文档。请注意,当使用日志配置文件时,所有日志配置都设置在配置文件中,并且其他日志配置选项将被忽略(例如,log-date-format)。

已弃用的变体

Group

名称

DEFAULT

log-config

DEFAULT

log_config

log_date_format
类型:

字符串

默认值:

%Y-%m-%d %H:%M:%S

定义日志记录中的 %(asctime)s 的格式字符串。默认值:上述值。如果设置了 log_config_append,则此选项将被忽略。

log_file
类型:

字符串

默认值:

<None>

(可选) 将日志输出发送到的日志文件名。如果没有设置默认值,日志将输出到 stderr,如 use_stderr 中定义的那样。如果设置了 log_config_append,则此选项将被忽略。

已弃用的变体

Group

名称

DEFAULT

logfile

log_dir
类型:

字符串

默认值:

<None>

(可选) 用于相对 log_file 路径的基本目录。如果设置了 log_config_append,则此选项将被忽略。

已弃用的变体

Group

名称

DEFAULT

logdir

watch_log_file
类型:

布尔值

默认值:

False

使用设计为监视文件系统的日志记录处理程序。当日志文件被移动或删除时,此处理程序将立即使用指定的路径打开新的日志文件。只有在指定了 log_file 选项并且使用 Linux 平台时才有意义。如果设置了 log_config_append,则此选项将被忽略。

警告

此选项已弃用,将来可能会被静默忽略。

原因:

已知此功能长期存在问题,并且依赖于未维护的库

use_syslog
类型:

布尔值

默认值:

False

使用 syslog 进行日志记录。现有的 syslog 格式已弃用,以后将更改为符合 RFC5424。如果设置了 log_config_append,则此选项将被忽略。

use_journal
类型:

布尔值

默认值:

False

启用 journald 进行日志记录。如果正在 systemd 环境中运行,您可能希望启用 journal 支持。这样做将使用 journal 本机协议,其中包括结构化元数据以及日志消息。如果设置了 log_config_append,则此选项将被忽略。

syslog_log_facility
类型:

字符串

默认值:

LOG_USER

接收日志行的 syslog facility。如果设置了 log_config_append,则此选项将被忽略。

use_json
类型:

布尔值

默认值:

False

使用 JSON 格式进行日志记录。如果设置了 log_config_append,则此选项将被忽略。

use_stderr
类型:

布尔值

默认值:

False

将日志输出记录到标准错误。如果设置了 log_config_append,则此选项将被忽略。

log_color
类型:

布尔值

默认值:

False

(可选) 根据日志级别设置“color”键。此选项仅在将日志记录到 stderr 或 stdout 时生效。如果设置了 log_config_append,则此选项将被忽略。

log_rotate_interval
类型:

整数

默认值:

1

日志文件轮换前的时间量。如果未设置 log_rotation_type 为“interval”,则此选项将被忽略。

log_rotate_interval_type
类型:

字符串

默认值:

days

有效值:

秒、分钟、小时、天、星期几、午夜

轮换间隔类型。在安排下一次轮换时,使用上次文件更改时间(或服务启动时间)。

max_logfile_count
类型:

整数

默认值:

30

最大轮换日志文件数。

max_logfile_size_mb
类型:

整数

默认值:

200

日志文件最大大小(MB)。如果“log_rotation_type”未设置为“size”,则此选项将被忽略。

log_rotation_type
类型:

字符串

默认值:

none

有效值:

interval, size, none

日志轮换类型。

可能的值

interval

以预定义的时间间隔轮换日志。

size

当日志达到预定义的大小后轮换日志。

none

不轮换日志文件。

logging_context_format_string
类型:

字符串

默认值:

%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s

用于带有上下文的日志消息的格式字符串。由 oslo_log.formatters.ContextFormatter 使用

logging_default_format_string
类型:

字符串

默认值:

%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

当上下文未定义时,用于日志消息的格式字符串。由 oslo_log.formatters.ContextFormatter 使用

logging_debug_format_suffix
类型:

字符串

默认值:

%(funcName)s %(pathname)s:%(lineno)d

当消息的日志级别为 DEBUG 时,附加到日志消息的额外数据。由 oslo_log.formatters.ContextFormatter 使用

logging_exception_prefix
类型:

字符串

默认值:

%(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

将此格式作为异常输出的每一行的前缀。由 oslo_log.formatters.ContextFormatter 使用

logging_user_identity_format
类型:

字符串

默认值:

%(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

定义 logging_context_format_string 中使用的 %(user_identity)s 的格式字符串。由 oslo_log.formatters.ContextFormatter 使用

default_log_levels
类型:

列表

默认值:

['amqp=WARN', 'amqplib=WARN', 'boto=WARN', 'qpid=WARN', 'sqlalchemy=WARN', 'suds=INFO', 'oslo.messaging=INFO', 'oslo_messaging=INFO', 'iso8601=WARN', 'requests.packages.urllib3.connectionpool=WARN', 'urllib3.connectionpool=WARN', 'websocket=WARN', 'requests.packages.urllib3.util.retry=WARN', 'urllib3.util.retry=WARN', 'keystonemiddleware=WARN', 'routes.middleware=WARN', 'stevedore=WARN', 'taskflow=WARN', 'keystoneauth=WARN', 'oslo.cache=INFO', 'oslo_policy=INFO', 'dogpile.core.dogpile=INFO']

包日志级别列表,格式为 logger=LEVEL 对。如果设置了 log_config_append,则此选项将被忽略。

publish_errors
类型:

布尔值

默认值:

False

启用或禁用错误事件的发布。

instance_format
类型:

字符串

默认值:

"[instance: %(uuid)s] "

与日志消息一起传递的实例的格式。

instance_uuid_format
类型:

字符串

默认值:

"[instance: %(uuid)s] "

与日志消息一起传递的实例 UUID 的格式。

rate_limit_interval
类型:

整数

默认值:

0

日志速率限制的间隔,秒数。

rate_limit_burst
类型:

整数

默认值:

0

每 rate_limit_interval 允许记录的最大消息数。

rate_limit_except_level
类型:

字符串

默认值:

CRITICAL

有效值:

CRITICAL, ERROR, INFO, WARNING, DEBUG, ‘’

速率限制使用的日志级别。日志级别大于或等于 rate_limit_except_level 的日志不会被过滤。空字符串表示所有级别都不会被过滤。

fatal_deprecations
类型:

布尔值

默认值:

False

启用或禁用弃用信息的致命状态。

tempdir
类型:

字符串

默认值:

<None>

显式指定临时工作目录。

pybasedir
类型:

字符串

默认值:

<Path>

此选项有一个示例默认值,这意味着其实际默认值可能与上述文档值不同。

Placement python 模块安装的目录。

这是其他需要持久化 Placement 内部数据的配置选项的默认路径。极不可能需要更改此选项的默认值。

可能的值

  • 目录的完整路径。

相关选项

  • state_path

state_path
类型:

字符串

默认值:

$pybasedir

用于维护 Placement 中使用的状态的顶级目录。

此目录用于存储 Placement 的内部状态。它被一些具有从 Nova 继承的行为的测试使用。

可能的值

  • 目录的完整路径。默认为 pybasedir 中提供的值。

api

此组下的选项用于定义 Placement API。

auth_strategy
类型:

字符串

默认值:

keystone

有效值:

keystone, noauth2

这决定了用于身份验证的策略:keystone 或 noauth2。‘noauth2’ 专为测试而设计,因为它不执行实际的凭证检查。‘noauth2’ 仅在将 ‘admin’ 指定为用户名时提供管理凭证。

已弃用的变体

Group

名称

DEFAULT

auth_strategy

cors

allowed_origin
类型:

列表

默认值:

<None>

指示是否允许与请求“origin”标头中接收到的域共享此资源。格式:“<protocol>://<host>[:<port>]”,不带尾部斜杠。示例:https://horizon.example.com

allow_credentials
类型:

布尔值

默认值:

True

指示实际请求是否可以包含用户凭据

expose_headers
类型:

列表

默认值:

[]

指示哪些标头可以安全地暴露给 API。默认值为 HTTP 简单标头。

max_age
类型:

整数

默认值:

3600

CORS 预检请求的最大缓存时间。

allow_methods
类型:

列表

默认值:

['OPTIONS', 'GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'TRACE', 'PATCH']

指示实际请求期间可以使用哪些方法。

allow_headers
类型:

列表

默认值:

[]

指示实际请求期间可以使用哪些标头字段名称。

keystone_authtoken

www_authenticate_uri
类型:

字符串

默认值:

<None>

完整的“公共”身份 API 端点。此端点不应是“admin”端点,因为它应可供所有最终用户访问。未经身份验证的客户端将被重定向到此端点以进行身份验证。虽然此端点理想情况下应该是未版本化的,但实际客户端支持各不相同。如果您在此处使用版本化的 v2 端点,则不应与服务用户用于验证令牌的端点相同,因为普通最终用户可能无法访问该端点。

已弃用的变体

Group

名称

keystone_authtoken

auth_uri

auth_uri
类型:

字符串

默认值:

<None>

完整的“公共”身份 API 端点。此端点不应是“admin”端点,因为它应可供所有最终用户访问。未经身份验证的客户端将被重定向到此端点以进行身份验证。虽然此端点理想情况下应该是未版本化的,但实际客户端支持各不相同。如果您在此处使用版本化的 v2 端点,则不应与服务用户用于验证令牌的端点相同,因为普通最终用户可能无法访问该端点。此选项已被弃用,以支持 www_authenticate_uri,并且将在 S 版本中删除。

警告

此选项已弃用以供删除,自 Queens 以来。其值将来可能会被默默地忽略。

原因:

auth_uri 选项已被弃用,以支持 www_authenticate_uri,并且将在 S 版本中删除。

auth_version
类型:

字符串

默认值:

<None>

身份 API 端点的 API 版本。

interface
类型:

字符串

默认值:

internal

用于身份 API 端点的接口。有效值为“public”、“internal”(默认)或“admin”。

delay_auth_decision
类型:

布尔值

默认值:

False

不在中间件中处理授权请求,而是将授权决策委托给下游 WSGI 组件。

http_connect_timeout
类型:

整数

默认值:

<None>

与 Identity API 服务器通信的请求超时值。

http_request_max_retries
类型:

整数

默认值:

3

与 Identity API 服务器通信时,我们尝试重新连接多少次。

cache
类型:

字符串

默认值:

<None>

请求环境键,其中存储了 Swift 缓存对象。当 auth_token 中间件与 Swift 缓存一起部署时,使用此选项与 swift 共享缓存后端。否则,请改用 memcached_servers 选项。

certfile
类型:

字符串

默认值:

<None>

如果身份服务器需要客户端证书,则需要

keyfile
类型:

字符串

默认值:

<None>

如果身份服务器需要客户端证书,则需要

cafile
类型:

字符串

默认值:

<None>

在验证 HTTPS 连接时使用的 PEM 编码的证书颁发机构。默认值为系统 CA。

insecure
类型:

布尔值

默认值:

False

验证 HTTPS 连接。

region_name
类型:

字符串

默认值:

<None>

可以找到身份服务器的区域。

memcached_servers
类型:

列表

默认值:

<None>

可选地指定要用于缓存的 memcached 服务器列表。如果未定义,则令牌将改为在进程内缓存。

已弃用的变体

Group

名称

keystone_authtoken

memcache_servers

token_cache_time
类型:

整数

默认值:

300

为了防止花费过多的精力来验证令牌,中间件将先前看到的令牌缓存配置的时间(以秒为单位)。设置为 -1 以完全禁用缓存。

memcache_security_strategy
类型:

字符串

默认值:

有效值:

None, MAC, ENCRYPT

(可选) 如果定义,指示是否应对缓存中的令牌数据进行身份验证或进行身份验证和加密。如果为 MAC,则令牌数据在缓存中进行身份验证(使用 HMAC)。如果为 ENCRYPT,则令牌数据在缓存中进行加密和身份验证。如果该值不是这些选项之一或为空,auth_token 将在初始化时引发异常。

memcache_secret_key
类型:

字符串

默认值:

<None>

(可选,如果定义了 memcache_security_strategy 则为必需) 此字符串用于密钥派生。

memcache_tls_enabled
类型:

布尔值

默认值:

False

(可选) 与缓存服务器通信时 TLS 使用的全局切换。

memcache_tls_cafile
类型:

字符串

默认值:

<None>

(可选) 建立缓存服务器身份所需的 PEM 格式的串联 CA 证书的文件路径。如果 tls_enabled 为 False,则忽略此选项。

memcache_tls_certfile
类型:

字符串

默认值:

<None>

(可选) 包含客户端证书以及建立证书身份所需的任何数量的 CA 证书的单个 PEM 格式的文件路径。仅当需要客户端身份验证时才需要此文件。如果 tls_enabled 为 False,则忽略此选项。

memcache_tls_keyfile
类型:

字符串

默认值:

<None>

(可选) 包含客户端私钥的单个文件。否则,私钥将从 tls_certfile 中指定的 文件中获取。如果 tls_enabled 为 False,则忽略此选项。

memcache_tls_allowed_ciphers
类型:

字符串

默认值:

<None>

(可选) 设置使用 TLS 上下文创建的套接字的可用密码。它应该是 OpenSSL 密码列表格式的字符串。如果未指定,将启用所有 OpenSSL 密码。

memcache_pool_dead_retry
类型:

整数

默认值:

300

(可选) memcached 服务器被认为已死并在重试之前的时间(以秒为单位)。

memcache_pool_maxsize
类型:

整数

默认值:

10

(可选) 到每个 memcached 服务器的最大打开连接数。

memcache_pool_socket_timeout
类型:

整数

默认值:

3

(可选) 与 memcached 服务器通信的套接字超时时间(以秒为单位)。

memcache_pool_unused_timeout
类型:

整数

默认值:

60

(可选) 连接在池中未使用的时间(以秒为单位),然后将其关闭。

memcache_pool_conn_get_timeout
类型:

整数

默认值:

10

(可选) 操作等待从池中获取 memcached 客户端连接的时间(以秒为单位)。

memcache_use_advanced_pool
类型:

布尔值

默认值:

True

(可选) 使用高级(eventlet 安全)memcached 客户端池。

include_service_catalog
类型:

布尔值

默认值:

True

(可选) 指示是否设置 X-Service-Catalog 标头。如果为 False,中间件不会要求在令牌验证时获取服务目录,也不会设置 X-Service-Catalog 标头。

enforce_token_bind
类型:

字符串

默认值:

permissive

用于控制令牌绑定使用和类型。可以设置为:“disabled”以不检查令牌绑定。“permissive”(默认)如果绑定类型是服务器已知的一种形式,则验证绑定信息,如果不是则忽略它。“strict”类似于“permissive”,但如果绑定类型未知,则拒绝该令牌。“required”需要任何形式的令牌绑定才能被允许。最后,是必须出现在令牌中的绑定方法的名称。

service_token_roles
类型:

列表

默认值:

['service']

服务令牌中必须存在的一组角色选择。服务令牌允许请求可以使用过期的令牌,因此此检查应严格控制只有实际的服务才能发送此令牌。此处的角色作为 ANY 检查应用,因此列表中任何角色都必须存在。出于向后兼容的原因,这目前仅影响 allow_expired 检查。

service_token_roles_required
类型:

布尔值

默认值:

False

出于向后兼容的原因,我们必须允许通过 service_token_roles 检查但未通过有效服务令牌。将此设置为 true 将在未来的版本中成为默认设置,如果可能,应启用它。

service_type
类型:

字符串

默认值:

<None>

服务目录中出现的服务的名称或类型。这用于验证具有受限访问规则的令牌。

memcache_sasl_enabled
类型:

布尔值

默认值:

False

如果 SASL_enable 为 true,则启用 SASL(简单身份验证和安全层),否则禁用。

memcache_username
类型:

字符串

默认值:

''

SASL 的用户名

memcache_password
类型:

字符串

默认值:

''

SASL 的用户名密码

auth_type
类型:

未知类型

默认值:

<None>

要加载的身份验证类型

已弃用的变体

Group

名称

keystone_authtoken

auth_plugin

auth_section
类型:

未知类型

默认值:

<None>

从中加载插件特定选项的配置节

oslo_middleware

enable_proxy_headers_parsing
类型:

布尔值

默认值:

False

应用程序是否位于代理之后。这决定了中间件是否应该解析标头。

oslo_policy

enforce_scope
类型:

布尔值

默认值:

True

此选项控制在评估策略时是否强制执行范围。如果为 True,则将请求中使用的令牌的范围与正在强制执行的策略的 scope_types 进行比较。如果范围不匹配,将引发 InvalidScope 异常。如果为 False,将记录一条消息,告知操作员策略正在使用不匹配的范围调用。

警告

此选项已弃用,将来可能会被静默忽略。

原因:

此配置是临时添加的,旨在促进顺利过渡到新的 RBAC。OpenStack 将始终强制执行范围检查。此配置选项已被弃用,将在 2025.2 版本周期中删除。

enforce_new_defaults
类型:

布尔值

默认值:

True

此选项控制在评估策略时是否使用旧的弃用默认值。如果为 True,则不会评估旧的弃用默认值。这意味着,如果任何现有的令牌允许使用旧的默认值,但对于新的默认值不允许,则将被禁止。鼓励启用此标志以及 enforce_scope 标志,以便同时获得新默认值和 scope_type 的好处。如果为 False,则逻辑上将弃用策略检查字符串与新的策略检查字符串进行 OR 运算,从而允许在具有新策略的发布版本之间实现平滑的升级体验,这是默认行为。

policy_file
类型:

字符串

默认值:

policy.yaml

将角色映射到给定服务权限的文件的相对或绝对路径。相对路径必须相对于设置此选项的配置文件指定。

policy_default_rule
类型:

字符串

默认值:

default

默认规则。在找不到请求的规则时强制执行。

policy_dirs
类型:

多值

默认值:

policy.d

存储策略配置文件目录。它们可以相对于 config_dir 选项定义的搜索路径中的任何目录,也可以是绝对路径。要搜索这些目录,必须存在 policy_file 中定义的的文件。忽略丢失或空的目录。

remote_content_type
类型:

字符串

默认值:

application/x-www-form-urlencoded

有效值:

application/x-www-form-urlencoded, application/json

用于基于 REST 的策略检查发送和接收数据的 Content Type

remote_ssl_verify_server_crt
类型:

布尔值

默认值:

False

基于 REST 的策略检查的服务器身份验证

remote_ssl_ca_crt_file
类型:

字符串

默认值:

<None>

基于 REST 的策略检查的 ca 证书文件的绝对路径

remote_ssl_client_crt_file
类型:

字符串

默认值:

<None>

基于 REST 的策略检查的客户端证书的绝对路径

remote_ssl_client_key_file
类型:

字符串

默认值:

<None>

基于 REST 的策略检查的客户端密钥文件的绝对路径

remote_timeout
类型:

浮点数

默认值:

60

最小值:

0

基于 REST 的策略检查的超时时间(秒)

placement

randomize_allocation_candidates
类型:

布尔值

默认值:

False

如果为 True,在限制分配候选结果时,结果将是对完整结果集的随机抽样。 [placement]max_allocation_candidates 配置可能会限制用作抽样输入的完整集合的大小。

如果为 False,则分配候选结果以确定性但未定义的顺序返回。也就是说,在所有条件相同的情况下,两次分配候选结果的请求将以相同的顺序返回相同的结果;但不能保证该顺序是如何确定的。

incomplete_consumer_project_id
类型:

字符串

默认值:

00000000-0000-0000-0000-000000000000

早期 API 微版本(<1.8)允许创建分配而不指定消费者的项目或用户标识符。在清理数据建模时,我们不再允许缺少项目和用户信息。如果旧客户端创建分配,我们将使用此 ID 代替其未提供的信息。

incomplete_consumer_user_id
类型:

字符串

默认值:

00000000-0000-0000-0000-000000000000

早期 API 微版本(<1.8)允许创建分配而不指定消费者的项目或用户标识符。在清理数据建模时,我们不再允许缺少项目和用户信息。如果旧客户端创建分配,我们将使用此 ID 代替其未提供的信息。

allocation_conflict_retry_count
类型:

整数

默认值:

10

服务器端重试写入分配的次数,当存在资源提供程序生成冲突时。如果预计许多并发分配到相同的资源提供程序,则提高此值可能会有所帮助。

max_allocation_candidates
类型:

整数

默认值:

-1

Placement 为单个请求生成的分配候选结果的最大数量。这是全局限制,用于避免过度使用内存和查询运行时。如果设置为 -1,则表示生成的候选结果的数量仅受资源提供程序数量和结构以及 allocation_candidates 查询内容限制。

请注意,allocation_candidates 查询的 limit 参数是在生成所有可行候选结果之后应用的,因此仅 limit 无法限制查询的运行时或内存消耗。

在具有数千个资源提供程序的部署中,或者如果部署具有广泛且对称的提供程序树(例如,在 nova 的 mdev GPU 或 Placement 功能中的 PCI 的情况下),我们建议根据 Placement 服务可用的内存和客户端超时设置调整此配置选项。一个好的初始值可能是 100000 左右。

在具有广泛且对称的提供程序树的部署中,我们还建议将 [placement]allocation_candidates_generation_strategy 更改为 breadth-first。

allocation_candidates_generation_strategy
类型:

字符串

默认值:

depth-first

有效值:

depth-first, breadth-first

定义 Placement 在分配候选结果生成期间访问可行根提供程序的顺序

  • depth-first,在移动到下一个之前,从第一个可行根提供程序生成所有候选结果。

  • breadth-first,以轮询方式从可行根生成候选结果,从每个可行根创建第一个候选结果,然后再从第一个根创建第二个候选结果。

如果部署具有广泛且对称的提供程序树,即在同一根下有多个子提供程序具有来自相同资源类别的库存(例如,在 nova 的 mdev GPU 或 Placement 功能中的 PCI 的情况下),则使用 max_allocation_candidates 限制的 depth-first 策略可能会生成来自有限数量的根提供程序的候选结果。另一方面,breadth-first 策略将确保以平衡的方式从所有可行根返回候选结果。

两种策略都在 API 响应中以未定义的但确定的顺序生成候选结果。也就是说,在所有条件相同的情况下,两次分配候选结果的请求将以相同的顺序返回相同的结果;但不能保证该顺序是如何确定的。

placement_database

Placement API 数据库是与 placement 服务一起使用的数据库。如果未设置连接选项,placement 服务将不会启动。

connection
类型:

字符串

默认值:

<None>

用于连接到数据库的 SQLAlchemy 连接字符串。

connection_parameters
类型:

字符串

默认值:

''

可选的 URL 参数,用于在连接时附加到连接 URL,格式为 param1=value1&param2=value2&…

sqlite_synchronous
类型:

布尔值

默认值:

True

如果为 True,SQLite 使用同步模式。

slave_connection
类型:

字符串

默认值:

<None>

用于连接到从数据库的 SQLAlchemy 连接字符串。

mysql_sql_mode
类型:

字符串

默认值:

TRADITIONAL

为 MySQL 会话使用的 SQL 模式。此选项(包括默认值)会覆盖服务器设置的任何 SQL 模式。要使用服务器配置设置的任何 SQL 模式,请将其设置为无值。示例:mysql_sql_mode=

connection_recycle_time
类型:

整数

默认值:

3600

连接在连接池中存在的时间超过此秒数后,将在下次从池中检出时替换为新的连接。

max_pool_size
类型:

整数

默认值:

<None>

保持在池中打开的 SQL 连接的最大数量。将值设置为 0 表示没有限制。

max_retries
类型:

整数

默认值:

10

启动期间打开数据库连接的最大重试次数。设置为 -1 表示无限重试次数。

retry_interval
类型:

整数

默认值:

10

重试打开 SQL 连接的间隔时间。

max_overflow
类型:

整数

默认值:

<None>

如果设置,则使用此值作为 SQLAlchemy 的 max_overflow。

connection_debug
类型:

整数

默认值:

0

SQL 调试信息的详细程度:0=无,100=全部。

connection_trace
类型:

布尔值

默认值:

False

将 Python 堆栈跟踪作为注释字符串添加到 SQL。

pool_timeout
类型:

整数

默认值:

<None>

如果设置,则使用此值作为 SQLAlchemy 的 pool_timeout。

sync_on_startup
类型:

布尔值

默认值:

False

如果为 True,则在 Web 服务启动时将尝试数据库模式迁移。

profiler

enabled
类型:

布尔值

默认值:

False

启用此节点上所有服务的分析。

默认值为 False(完全禁用分析功能)。

可能的值

  • True:启用该功能

  • False:禁用该功能。无法通过此项目操作启动分析。如果分析由另一个项目触发,则此项目部分将为空。

已弃用的变体

Group

名称

profiler

profiler_enabled

trace_sqlalchemy
类型:

布尔值

默认值:

False

在服务中启用 SQL 请求分析。

默认值为 False(SQL 请求不会被跟踪)。

可能的值

  • True:启用 SQL 请求分析。每个 SQL 查询都将成为跟踪的一部分,并可以分析花费的时间。

  • False:禁用 SQL 请求分析。花费的时间仅在较高层次的操作上显示。无法以这种方式分析单个 SQL 查询。

trace_requests
类型:

布尔值

默认值:

False

启用 python requests 包分析。

支持的驱动程序:jaeger+otlp

默认值为 False。

可能的值

  • True:启用请求分析。

  • False:禁用请求分析。

hmac_keys
类型:

字符串

默认值:

SECRET_KEY

用于加密性能分析上下文数据的密钥。

此字符串值应具有以下格式:<key1>[,<key2>,…<keyn>],其中每个密钥都是一些随机字符串。通过 REST API 触发分析的用户必须在 REST API 调用中设置这些密钥之一,才能将此节点的分析结果包含到该特定项目中。

应设置“enabled”标志和“hmac_keys”配置选项才能启用分析。此外,为了生成所有服务之间的正确分析信息,至少有一个密钥需要在 OpenStack 项目之间保持一致。这确保了客户端可以使用它来生成包含所有可能资源的跟踪。

connection_string
类型:

字符串

默认值:

messaging://

通知后端连接字符串。

默认值为 messaging://,它将通知程序设置为 oslo_messaging。

可能的示例值

  • messaging:// - 使用 oslo_messaging 驱动程序发送跨度。

  • redis://127.0.0.1:6379 - 使用 redis 驱动程序发送跨度。

  • mongodb://127.0.0.1:27017 - 使用 mongodb 驱动程序发送跨度。

  • elasticsearch://127.0.0.1:9200 - 使用 elasticsearch 驱动程序发送跨度。

  • jaeger://127.0.0.1:6831 - 使用 jaeger 跟踪作为驱动程序发送跨度。

es_doc_type
类型:

字符串

默认值:

notification

在 elasticsearch 中进行通知索引的文档类型。

es_scroll_time
类型:

字符串

默认值:

2m

此参数是一个时间值参数(例如:es_scroll_time=2m),指示参与搜索的节点将保持相关资源多长时间,以便继续并支持它。

es_scroll_size
类型:

整数

默认值:

10000

Elasticsearch 将大型请求拆分为批处理。此参数定义每个批处理的最大大小(例如:es_scroll_size=10000)。

socket_timeout
类型:

浮点数

默认值:

0.1

Redissentinel 在连接上提供超时选项。此参数定义该超时(例如:socket_timeout=0.1)。

sentinel_service_name
类型:

字符串

默认值:

mymaster

Redissentinel 使用服务名称来标识主 redis 服务。此参数定义该名称(例如:sentinal_service_name=mymaster)。

filter_error_trace
类型:

布尔值

默认值:

False

启用将包含错误/异常的跟踪过滤到单独的位置。

默认值为 False。

可能的值

  • True:启用过滤包含错误/异常的跟踪。

  • False:禁用过滤器。

profiler_jaeger

service_name_prefix
类型:

字符串

默认值:

<None>

将服务名称前缀设置为 Jaeger 服务名称。

process_tags
类型:

dict

默认值:

{}

设置进程跟踪器标签。

profiler_otlp

service_name_prefix
类型:

字符串

默认值:

<None>

将服务名称前缀设置为 OTLP 导出器。

workarounds

用于缓解在特定条件下发现的错误或问题的解决方法集合。这些仅应在特殊情况下启用。所有选项都链接到错误 ID,可以在其中找到有关该问题的更多信息。

optimize_for_wide_provider_trees
类型:

布尔值

默认值:

False

启用针对宽提供者树的分配候选生成优化。

bug #2126751 中所述,在相同根提供者下定义了许多相似的子提供者的情况下,Placement 的分配候选生成算法扩展性较差。此配置选项启用某些优化,有助于减少生成 GET /allocation_candidates 响应所需的时间,这些响应是针对从这些子提供者请求多个资源的查询。

例如,如果一台计算节点有 8 个或更多子资源提供者提供各自的单个资源(例如 8 个独立的 PGPU),并且虚拟机请求 8 个或更多此类资源,每个资源都在独立的请求组中,那么如果没有启用此优化,GET /allocation_candidates 查询将花费太长时间进行计算,并且调度将失败。

[placement]max_allocation_candidates 配置选项设置为一个较小的数字(例如 100)可以在一定程度上有所帮助,但单独无法解决设备可用数量或请求设备数量增加时的问题。

何时启用: 如果您在一个树中至少有 8 个子资源提供者提供相同资源类别的库存。并且您正在尝试支持请求 4 个或更多此类资源的虚拟机。例如:

  • Placement 中启用了 Nova 的 PCI 功能,并且您在单个计算节点中至少有 8 个具有相同 product_id 的 PCI 设备,并且您正在使用请求 4 个或更多此类设备的 flavor。

  • Placement 中启用了 Nova 的 GPU 支持,并且您在每个计算节点上至少有 8 个 GPU,同时请求每个虚拟机 4 个或更多 GPU。

何时不启用: 如果您有一个扁平的资源提供者树,即所有资源都在根提供者上报告。或者如果您的 flavor 不请求 4 个或更多相同类型的 PCI 或 GPU 资源。

相关选项

  • [placement]max_allocation_candidates:如果您需要启用此优化,那么您也处于希望将 max_allocation_candidates 设置为不超过 1000 的数字的情况。

  • [placement]allocation_candidates_generation_strategy:如果您使用 max_allocation_candidates,建议将 allocation_candidates_generation_strategy 配置为 breadth-first,这将返回在可用计算节点上平衡的候选者。