本主题介绍了关于 OpenStack 缓存的常见问题解答。

  1. 缓存过程中会发生什么?

    为 Neutron 客户端创建一个包装程序,以缓存来自 Neutron 服务器的响应。如果启用了缓存,则会缓存网络、子网和浮动 IP 网络。

    1. 缓存网络和子网列表。

    2. 缓存给定子网的浮动 IP 网络。

    3. 针对网络发出 GET 请求时,缓存网络/子网列表。

    4. 如果列表中已具有网络/子网,则会通过 GET 从缓存本身获取网络/子网。

    5. 在提供程序模式下部署时,只有一个 Neutron 客户端,不需要跟踪租户。不会缓存 RBAC 策略,因为这些策略会更改,并且网络可能无法供租户使用。

    6. 在租户模式下部署时,每个租户都有一个 Neutron 客户端,且每个客户端都有自己的缓存。

    7. 针对云发出 get-internals API 请求时,会将缓存输出到 /var/log/upstart/cloud-connector.log 中以供查看。

    8. 可通过 API /api/cloud//internals</code> 查看缓存条目,也可通过 show cloud <cloud_name> 从 CLI 进行查看。内部信息将输出到 /var/log/upstart/cloud-connector.log 中。

    9. 使用的 API 为 /api/cloud//internals</code>,CLI 命令为 show cloud <cloud_name> internals;在触发 API 或 CLI 命令后,可以在 /var/log/upstart/cloud-connector.log 中查看缓存条目。

  2. 如何启用缓存?

    设置云级别选项 enable_os_object_caching。步骤如下:

    configure cloud <cloud-name> 
      openstack_configuration 
      enable_os_object_caching 
      save  
    save
  3. 缓存的频率是多少?缓存多久后过期?

    1. 启用缓存后,它将一直保持启用状态,直到手动更改回禁用状态为止。

    2. 缓存没有过期时间,但可以通过调用 API 或通过 CLI 清理缓存。

      1. 使用 force 选项发出 GC 命令,以仅运行 GC。如果启用了缓存,运行此命令将清除缓存。也可以使用 API 或 CLI 完成此操作,如下所述:

        要通过 API 清除缓存,使用 API PUT /api/cloud/cloud-uuid/gc?force=True

        要通过 CLI 清除缓存,使用 exec cloud cloud-name gc force

        上述 API 和 CLI 都用于清除缓存。

  4. 如果缓存中没有信息,是否会向 OpenStack 发起 API 调用?

    是;当缓存中没有信息时,将触发指向 OpenStack 的 API。

  5. 何时会刷新缓存?

    • 载入新租户时。

    • 在 OpenStack 中添加新路由器或浮动 IP 网络时。