通过 IP 性能改进筛选实例¶
https://blueprints.launchpad.net/nova/+spec/improve-filter-instances-by-ip-performance
此功能的目标是改进通过 IP 地址筛选实例时的性能。
问题描述¶
Nova 允许在列出实例时按 IP 地址进行筛选。但这种筛选的性能较差,这是因为 IP 地址是实例 network_info JSON 的一部分,我们需要逐一迭代才能找到与请求匹配的实例。这使得这种筛选在大型部署中不可用。
用例¶
作为操作员,我希望能够高效地按 IP 筛选实例,以便能够定位在提供的 IP 地址上具有异常网络活动的实例。
提议的变更¶
正如在 Queens PTG 中讨论的 [1],一种可能的解决方案是从 Neutron 获取根据提供的 IP 地址筛选后的端口,然后从 port.device_id 获取实例 UUID,并将其合并到其他筛选器中。
Nova 当前支持使用正则表达式匹配的方式按 IP 地址筛选实例。但 Neutron 端口列表 API 不支持正则表达式匹配筛选。Neutron 中已提交一个 RFE [2] 以支持此功能。Nova 方面的更改将取决于 Neutron 方面的增强。
由于较新版本的 Nova 可能会与较旧版本的 Neutron 通信,我们还将添加逻辑来检查 Neutron 方面是否通过新的网络 API 扩展支持正则表达式匹配。如果该扩展不可用,我们将回退到现有行为,并避免错误地筛选掉所有实例。
Nova 当前还支持按 IP 地址列出和筛选已删除的实例,在此更改之后,用户将无法使用 IP 地址筛选已删除的实例,因为 Neutron 无法提供此类数据。这被认为是可接受的,因为操作员可以随时归档/清除已删除的实例,因此无法保证用户今天可以列出已删除的实例。
备选方案¶
在 Queens PTG 上提出的另一种方案是在 Nova 数据库中存储一个映射表来进行查询。这个问题是,我们已经在 instance_info_caces.network_info 列中存储了 IP 地址,并且需要努力保持其准确性。将数据存储在另一个地方可能会导致更多错误,因为我们需要在 3 个不同的位置管理状态:Neutron(事实来源)、实例信息缓存和新的映射表。
数据模型影响¶
无
REST API 影响¶
此更改后,用户将无法使用 IP 筛选器列出已删除的实例。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
此更改将改进按 IP 地址筛选实例时的性能。
将使用 POC 执行规模(至少 1000 个实例)的基准测试和比较测试,并将提供测试结果。
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Kevin Zheng <zhengzhenyu@huawei.com>
工作项¶
添加逻辑以从 Neutron 查询筛选后的端口
将结果与其他筛选器合并
添加相关文档和 reno
依赖项¶
由于 Nova 提供正则表达式匹配方式的 IP 筛选,因此这取决于 Neutron 的更改,该更改为 GET /ports API 添加了正则表达式匹配方式 [2]。
测试¶
添加以下测试。
单元测试
文档影响¶
无
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Queens |
提议 |