资源元数据缓存

这在 YVR 会议上讨论过,作为对运营商反馈环节中提出的问题的后续跟进。

问题描述

Ceilometer 通过 compute-agent 定期轮询以获取所有实例的资源元数据。这种轮询会给 Nova、Neutron 和 Keystone API 增加负载,在规模较大时会导致显著的性能影响。这些元数据变化并不频繁,因此这种负载通常是不必要的。

提议的变更

让我们利用 nova api 调用中的 changes-since 参数。我们将首先创建一个内存缓存来存储初始轮询的资源元数据以及轮询的时间。然后,compute agent 将在所有后续轮询中使用 changes-since 参数。这将减少 Nova API 查询和返回的数据量。此调用的结果将更新缓存,并且缓存将用于返回数据。此外,我们还应该在缓存中填充实例 flavor 和 image 数据。

替代方案

无需操作

数据模型影响

REST API 影响

安全影响

Pipeline 影响

其他最终用户影响

性能/可扩展性影响

由于减少了 API 负载和减少了流量,应该提供更大的整体可扩展性。

其他部署影响

开发者影响

实现

负责人

主要负责人

jasonamyers

其他贡献者

持续维护者

jasonamyers

工作项

  • 在 compute agent 中实现一个内存缓存。

  • 修改 compute-agent 以填充内存缓存。

  • 修改 compute-agent 以在 Nova API 调用中使用 changes-since 参数。

  • 修改 compute-agent 以在缓存中记录轮询时间戳。

  • 修改 compute-agent 以缓存 flavor 和 image 元数据。

未来生命周期

依赖项

测试

我们需要为元数据缓存标志、API changed-since 查询、compute-agent 缓存控制以及 image/flavor 缓存添加测试。

文档影响

我们需要记录轮询过程的更改、新的元数据缓存配置选项,并创建新的文档来描述缓存工作流程。

参考资料

https://etherpad.openstack.org/p/YVR-ops-ceilometer