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.254 或 fe80::a9fe:a9fe 访问该服务。
版本 22.0.0 中更改:从 Victoria 版本开始,元数据服务可以通过 IPv6 在链路本地地址 fe80::a9fe:a9fe 上访问。
网络服务 neutron 负责拦截这些请求,并在将其转发到元数据 API 服务器之前添加唯一标识请求来源的 HTTP 标头。对于 neutron 提供的 Open vSwitch 和 Linux Bridge 后端,流程如下
实例向
169.254.169.254发送 HTTP 元数据请求。根据实例中的路由,此请求会命中路由器或 DHCP 命名空间
命名空间中的元数据代理服务将以下信息添加到请求中
实例 IP(
X-Forwarded-For标头)路由器或网络 ID(
X-Neutron-Network-Id或X-Neutron-Router-Id标头)
元数据代理服务通过 UNIX 域套接字将此请求发送到元数据代理(在命名空间之外)。
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 是用户在启动实例时可以指定的数据块。有关更多信息,请参考 用户指南。