本主题介绍了关于 OpenStack 缓存的常见问题解答。
缓存过程中会发生什么?
为 Neutron 客户端创建一个包装程序,以缓存来自 Neutron 服务器的响应。如果启用了缓存,则会缓存网络、子网和浮动 IP 网络。
缓存网络和子网列表。
缓存给定子网的浮动 IP 网络。
针对网络发出 GET 请求时,缓存网络/子网列表。
如果列表中已具有网络/子网,则会通过 GET 从缓存本身获取网络/子网。
在提供程序模式下部署时,只有一个 Neutron 客户端,不需要跟踪租户。不会缓存 RBAC 策略,因为这些策略会更改,并且网络可能无法供租户使用。
在租户模式下部署时,每个租户都有一个 Neutron 客户端,且每个客户端都有自己的缓存。
针对云发出 get-internals API 请求时,会将缓存输出到 /var/log/upstart/cloud-connector.log 中以供查看。
可通过 API /api/cloud//internals</code> 查看缓存条目,也可通过
show cloud <cloud_name>
从 CLI 进行查看。内部信息将输出到 /var/log/upstart/cloud-connector.log 中。使用的 API 为 /api/cloud//internals</code>,CLI 命令为
show cloud <cloud_name> internals
;在触发 API 或 CLI 命令后,可以在 /var/log/upstart/cloud-connector.log 中查看缓存条目。
如何启用缓存?
设置云级别选项
enable_os_object_caching
。步骤如下:configure cloud <cloud-name> openstack_configuration enable_os_object_caching save save
缓存的频率是多少?缓存多久后过期?
启用缓存后,它将一直保持启用状态,直到手动更改回禁用状态为止。
缓存没有过期时间,但可以通过调用 API 或通过 CLI 清理缓存。
使用 force 选项发出 GC 命令,以仅运行 GC。如果启用了缓存,运行此命令将清除缓存。也可以使用 API 或 CLI 完成此操作,如下所述:
要通过 API 清除缓存,使用 API
PUT /api/cloud/cloud-uuid/gc?force=True
。要通过 CLI 清除缓存,使用
exec cloud cloud-name gc force
。上述 API 和 CLI 都用于清除缓存。
如果缓存中没有信息,是否会向 OpenStack 发起 API 调用?
是;当缓存中没有信息时,将触发指向 OpenStack 的 API。
何时会刷新缓存?
载入新租户时。
在 OpenStack 中添加新路由器或浮动 IP 网络时。