1.6. 镜像预缓存
您可以使用 Red Hat OpenStack Platform (RHOSP) director 作为 glance-api
服务的一部分来预缓存镜像。
使用 Image 服务(glance)命令行客户端进行镜像管理。
1.6.1. 为定期镜像预缓存配置默认间隔
镜像服务(glance)预缓存定期作业在每个运行 glance-api
服务的控制器节点中每 300 秒(默认为 5 分钟)运行。要更改默认时间,您可以在 glance-api.conf 环境文件的 Default
部分下设置 cache_prefetcher_interval
参数。
流程
根据您的要求,在 undercloud 上的环境文件中添加带有
ExtraConfig
参数的新间隔:parameter_defaults: ControllerExtraConfig: glance::config::glance_api_config: DEFAULT/cache_prefetcher_interval: value: '<300>'
-
将 &
lt;300
> 替换为您要作为预缓存镜像间隔的秒数。
-
将 &
在调整
/home/stack/templates/
中环境文件中的间隔后,以stack
用户身份登录并部署配置:$ openstack overcloud deploy --templates \ -e /home/stack/templates/<env_file>.yaml
将 <env_file> 替换为包含您添加的
ExtraConfig
设置的环境文件名称。重要如果您在创建 overcloud 时传递任何额外的环境文件,请使用
-e
选项再次传递它们,以避免对 overcloud 进行不必要的更改。
其他资源
有关 openstack overcloud deploy
命令的更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的部署命令。
1.6.2. 准备使用定期作业来预缓存镜像
要使用定期作业预缓存镜像,您必须使用 glance-cache-manage
命令直接连接到运行 glance_api
服务的节点。不要使用代理,它会隐藏回答服务请求的节点。由于 undercloud 可能无法访问运行 glance_api
服务的网络,因此在第一个 overcloud 节点上运行命令,默认为 controller-0
。
完成以下前提条件步骤,以确保从正确的主机运行命令,具有必要的凭据,并且也从 glance-api
容器内运行 glance-cache-manage
命令。
流程
以 stack 用户身份登录 undercloud,再识别
controller-0
的调配 IP 地址:(undercloud) [stack@site-undercloud-0 ~]$ openstack server list -f value -c Name -c Networks | grep controller overcloud-controller-1 ctlplane=192.168.24.40 overcloud-controller-2 ctlplane=192.168.24.13 overcloud-controller-0 ctlplane=192.168.24.71 (undercloud) [stack@site-undercloud-0 ~]$
要向 overcloud 进行身份验证,请将存储在
/home/stack/overcloudrc
中的凭证复制到controller-0
:$ scp ~/overcloudrc tripleo-admin@192.168.24.71:/home/tripleo-admin/
连接到
controller-0
:$ ssh tripleo-admin@192.168.24.71
在
controller-0
上,以tripleo-admin
用户身份识别glance_api 服务的
IP 地址。在以下示例中,IP 地址为172.25.1.105
:(overcloud) [root@controller-0 ~]# grep -A 10 '^listen glance_api' /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg listen glance_api server central-controller0-0.internalapi.redhat.local 172.25.1.105:9292 check fall 5 inter 2000 rise 2
由于
glance-cache-manage
命令仅在glance_api
容器中可用,因此创建一个脚本,该脚本将执行到该容器中,以向 overcloud 进行身份验证的环境变量已经设置。在controller-0
上的/home/tripleo-admin
中创建一个名为glance_pod.sh
的脚本,其内容如下:sudo podman exec -ti \ -e NOVA_VERSION=$NOVA_VERSION \ -e COMPUTE_API_VERSION=$COMPUTE_API_VERSION \ -e OS_USERNAME=$OS_USERNAME \ -e OS_PROJECT_NAME=$OS_PROJECT_NAME \ -e OS_USER_DOMAIN_NAME=$OS_USER_DOMAIN_NAME \ -e OS_PROJECT_DOMAIN_NAME=$OS_PROJECT_DOMAIN_NAME \ -e OS_NO_CACHE=$OS_NO_CACHE \ -e OS_CLOUDNAME=$OS_CLOUDNAME \ -e no_proxy=$no_proxy \ -e OS_AUTH_TYPE=$OS_AUTH_TYPE \ -e OS_PASSWORD=$OS_PASSWORD \ -e OS_AUTH_URL=$OS_AUTH_URL \ -e OS_IDENTITY_API_VERSION=$OS_IDENTITY_API_VERSION \ -e OS_COMPUTE_API_VERSION=$OS_COMPUTE_API_VERSION \ -e OS_IMAGE_API_VERSION=$OS_IMAGE_API_VERSION \ -e OS_VOLUME_API_VERSION=$OS_VOLUME_API_VERSION \ -e OS_REGION_NAME=$OS_REGION_NAME \ glance_api /bin/bash
Source
overcloudrc
文件,运行glance_pod.sh
脚本,以使用必要的环境变量在glance_api
中执行以在 overcloud Controller 节点中进行身份验证。[tripleo-admin@controller-0 ~]$ source overcloudrc (overcloudrc) [tripleo-admin@central-controller-0 ~]$ bash glance_pod.sh ()[glance@controller-0 /]$
使用
glance image-list
等命令来验证容器是否可以对 overcloud 运行经过身份验证的用户。()[glance@controller-0 /]$ glance image-list +--------------------------------------+----------------------------------+ | ID | Name | +--------------------------------------+----------------------------------+ | ad2f8daf-56f3-4e10-b5dc-d28d3a81f659 | cirros-0.4.0-x86_64-disk.img | +--------------------------------------+----------------------------------+ ()[glance@controller-0 /]$
1.6.3. 使用定期作业预缓存镜像
当您完成 第 1.6.2 节 “准备使用定期作业来预缓存镜像” 中的先决条件步骤后,您可以使用定期作业来预缓存镜像。
流程
以 admin 用户身份,将镜像排队为缓存:
$ glance-cache-manage --host=<host_ip> queue-image <image_id>
-
将 <host_ip> 替换为运行
glance-api
容器的 Controller 节点的 IP 地址。 将 <image_id> 替换为您要队列的镜像 ID。
当您将要预缓存的镜像排队后,
cache_images
定期作业会同时获取所有排队的镜像。注意由于镜像缓存对每个节点是本地的,因此如果您的 Red Hat OpenStack Platform (RHOSP)部署是 HA,且有 3、5 或 7 Controller,那么在运行
glance-cache-manage
命令时,您必须使用--host
选项指定主机地址。
-
将 <host_ip> 替换为运行
运行以下命令,以查看镜像缓存中的镜像:
$ glance-cache-manage --host=<host_ip> list-cached
- 将 <host_ip> 替换为您环境中主机的 IP 地址。
1.6.4. 镜像缓存命令选项
您可以使用以下 glance-cache-manage
命令选项对镜像排队以进行缓存和管理缓存的镜像:
-
list-cached
,列出当前缓存的所有镜像。 -
list-queued
,列出当前排队以缓存的所有镜像。 -
queue-image
以排队镜像以进行缓存。 -
delete-cached-image
从缓存中清除镜像。 -
delete-all-cached-images
从缓存中删除所有镜像。 -
delete-queued-image
从缓存队列中删除镜像。 -
delete-all-queued-images
从缓存队列中删除所有镜像。