第 11 章 将缓存 glance 镜像预缓存到 nova
当您将 OpenStack Compute 配置为使用本地临时存储时,将缓存 glance 镜像来快速部署实例。如果实例所需的镜像尚未缓存,则在创建实例时,它将下载到 Compute 节点的本地磁盘。
下载 glance 镜像的过程需要一些时间,具体取决于镜像大小和网络特征,如带宽和延迟。
如果您试图启动实例,且镜像在本地的 Ceph 集群上不可用,则启动实例将失败,并显示以下信息:
Build of instance 3c04e982-c1d1-4364-b6bd-f876e399325b aborted: Image 20c5ff9d-5f54-4b74-830f-88e78b9999ed is unacceptable: No image locations are accessible
Build of instance 3c04e982-c1d1-4364-b6bd-f876e399325b aborted: Image 20c5ff9d-5f54-4b74-830f-88e78b9999ed is unacceptable: No image locations are accessible
您在 Compute 服务日志中看到以下内容:
'Image %s is not on my ceph and [workarounds]/ never_download_image_if_on_rbd=True; refusing to fetch and upload.',
'Image %s is not on my ceph and [workarounds]/ never_download_image_if_on_rbd=True; refusing to fetch and upload.',
由于 nova.conf
配置文件中的一个参数(名为 never_download_image_if_on_rbd
)对于 DCN 部署被默认设为 true
,则实例会启动失败。您可以使用 heat 参数 NovaDisableImageDownloadToRbd
来控制这个值,您可以在 dcn-storage.yaml
文件中找到。
如果在部署 overcloud 之前将 NovaDisableImageDownloadToRbd
的值设置为 false
,则会出现以下内容:
-
如果计算服务(nova)在本地不可用,则会自动流传输
中央位置
可用的镜像。 - 您不会在 glance 镜像中使用 COW 副本。
- Compute (nova)存储可能会包含同一镜像的多个副本,具体取决于使用它的实例数量。
-
您可以同时向
中央位置
和 nova 存储池饱和。
红帽建议将这个值设置为 true,并确保在启动实例前在本地提供所需的镜像。有关为边缘提供镜像的更多信息,请参阅将镜像复制到新站点。
对于本地镜像,您可以使用 tripleo_nova_image_cache.yml
ansible playbook 来预缓存通常用于部署的镜像或镜像,从而加快创建虚拟机。
11.1. 运行 tripleo_nova_image_cache.yml ansible playbook 复制链接链接已复制到粘贴板!
先决条件
- shell 环境中正确的 API 的身份验证凭据。
在每个步骤中提供的命令之前,您必须确保提供正确的身份验证文件。
流程
为您的 overcloud 堆栈创建一个 ansible 清单目录:
mkdir inventories find ~/overcloud-deploy/*/config-download \ -name tripleo-ansible-inventory.yaml |\ while read f; do cp $f inventories/$(basename $(dirname $f)).yaml; done
$ mkdir inventories $ find ~/overcloud-deploy/*/config-download \ -name tripleo-ansible-inventory.yaml |\ while read f; do cp $f inventories/$(basename $(dirname $f)).yaml; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建您要预缓存的镜像 ID 列表:
检索可用镜像的完整列表:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
nova_cache_args.yml
的 ansible playbook 参数文件,并添加您要预缓存的镜像 ID:--- tripleo_nova_image_cache_images: - id: 07bc2424-753b-4f65-9da5-5a99d8383fe6 - id: d5187afa-c821-4f22-aa4b-4e76382bef86
--- tripleo_nova_image_cache_images: - id: 07bc2424-753b-4f65-9da5-5a99d8383fe6 - id: d5187afa-c821-4f22-aa4b-4e76382bef86
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行
tripleo_nova_image_cache.yml
ansible playbook:source centralrc ansible-playbook -i inventories \ --extra-vars "@nova_cache_args.yml" \ /usr/share/ansible/tripleo-playbooks/tripleo_nova_image_cache.yml
$ source centralrc $ ansible-playbook -i inventories \ --extra-vars "@nova_cache_args.yml" \ /usr/share/ansible/tripleo-playbooks/tripleo_nova_image_cache.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow