Metadata service

注意

本节提供关于元数据服务的部署信息。有关元数据服务和实例元数据的用户信息的,请参考 用户指南

元数据服务提供了一种方式,让实例可以检索特定于实例的数据。实例通过 http://169.254.169.254 访问元数据服务。元数据服务支持两组 API - OpenStack 元数据 API 和 EC2 兼容 API - 并且还暴露 vendordata 和 user data。OpenStack 元数据和 EC2 兼容 API 均按日期进行版本控制。

元数据服务可以全局运行,也可以按单元运行。详细的比较请参考 cells V2 指南

版本 19.0.0 中更改:在 Stein 中添加了在单元基础上运行 nova 元数据 API 服务的支持。对于此版本之前的版本,您不应将独立的 nova-api-metadata 应用程序用于多个单元。

Guest 通过 169.254.169.254fe80::a9fe:a9fe 访问该服务。

版本 22.0.0 中更改:从 Victoria 版本开始,元数据服务可以通过 IPv6 在链路本地地址 fe80::a9fe:a9fe 上访问。

网络服务 neutron 负责拦截这些请求,并在将其转发到元数据 API 服务器之前添加唯一标识请求来源的 HTTP 标头。对于 neutron 提供的 Open vSwitch 和 Linux Bridge 后端,流程如下

  1. 实例向 169.254.169.254 发送 HTTP 元数据请求。

  2. 根据实例中的路由,此请求会命中路由器或 DHCP 命名空间

  3. 命名空间中的元数据代理服务将以下信息添加到请求中

    • 实例 IP(X-Forwarded-For 标头)

    • 路由器或网络 ID(X-Neutron-Network-IdX-Neutron-Router-Id 标头)

  4. 元数据代理服务通过 UNIX 域套接字将此请求发送到元数据代理(在命名空间之外)。

  5. neutron-metadata-agent 应用程序通过添加一些新的标头(实例 ID 和 Tenant ID)到请求中,将请求转发到 nova 元数据 API 服务。

如果使用不同的网络后端,此流程可能会有所不同。

Neutron 和 nova 必须配置为使用共享密钥进行通信。Neutron 使用此密钥对元数据请求的 Instance-ID 标头进行签名,以防止欺骗。此密钥通过 nova 中的 neutron.metadata_proxy_shared_secret 配置选项和 neutron 中的等效 metadata_proxy_shared_secret 配置选项进行配置。

配置

nova-api 应用程序接受以下与元数据服务相关的选项

注意

此列表不包括与 vendordata 功能相关的配置选项。有关配置 vendordata 的信息,请参考 vendordata 功能文档

例如,要配置 nova-api 应用程序以服务元数据 API,不使用 SSL,并使用 StaticJSON vendordata 提供程序,请将以下内容添加到 nova-api.conf 文件中

[neutron]
service_metadata_proxy = True

[api]
dhcp_domain =
metadata_cache_expiration = 15
local_metadata_per_cell = False
vendordata_providers = StaticJSON
vendordata_jsonfile_path = /etc/nova/vendor_data.json

注意

这不包括虽然需要但并非元数据特定的配置选项。

配置应用程序以使用 DynamicJSON vendordata 提供程序涉及更多内容,此处不赘述。

nova-api-metadata 应用程序接受几乎相同的选项

注意

此列表不包括与 vendordata 功能相关的配置选项。有关配置 vendordata 的信息,请参考 vendordata 功能文档

例如,要配置 nova-api-metadata 应用程序以服务元数据 API,不使用 SSL,请将以下内容添加到 nova-api.conf 文件中

[neutron]
service_metadata_proxy = True

[api]
dhcp_domain =
metadata_cache_expiration = 15
local_metadata_per_cell = False

注意

这不包括虽然需要但并非元数据特定的配置选项。

有关配置元数据服务的 neutron 端的信息,请参考 neutron 配置指南

Config drives

Config drives 是在实例启动时附加到实例的特殊驱动器。实例可以挂载此驱动器并从中读取文件,以获取通常通过元数据服务可用的信息。有关更多信息,请参考 Config drives用户指南

Vendordata

Vendordata 提供了一种将供应商或部署特定信息传递到实例的方式。有关更多信息,请参考 Vendordata用户指南

User data

User data 是用户在启动实例时可以指定的数据块。有关更多信息,请参考 用户指南