Guest RPC Ping Pong¶
蓝图
https://blueprints.launchpad.net/trove/+spec/guest-rpc-ping-pong
该提案旨在引入一个新的管理 API 路由,以实现一种轻量级的 ping/pong 机制,用于确定 RPC 通信是否按预期工作。
问题描述¶
目前,通过 API 确定控制平面和 Guest 之间直接或间接 RPC 连接是否正常工作的方式,只能使用管理 API 中的 ‘show’ 操作。
虽然 mgmt-show 间接回答了“Guest 是否可达?”这个问题,但它是一个相对重量级的调用。除了查询文件系统以获取基本信息外,mgmt-show 还会向 Nova 和 Cinder 发送 ‘show’ 请求。
用例¶
作为部署者,我希望能够确定控制平面和特定 Guest 之间的 RPC 连接是否中断。
提议的变更¶
引入:
GET HOST:8779/v1.0/<tenant_id>/mgmt/instances/<instance_id>/rpc_ping
行为
请求
GET HOST:8779/v1.0/<tenant_id>/mgmt/instances/<instance_id>/rpc_ping
如果成功,将产生以下结果
HTTP/1.1 204 No Content
Content-Length: 0
Content-Type: application/json
Date: Thu, 02 Oct 2014 23:32:26 GMT
另一方面,如果 trove-guest 关闭,或者 Guest 总体上没有响应,则将返回以下内容
HTTP/1.1 400 Bad Request
Content-Length: 237
Content-Type: application/json; charset=UTF-8
Date: Thu, 02 Oct 2014 23:32:59 GMT
{"badRequest": {"message": "An error occurred communicating
with the guest: Timeout while waiting on RPC response -
topic: \"guestagent.1e4099f1-7f8d-4564-bd83-0b9f66aa35b9\",
RPC method: \"rpc_ping\" info: \"<unknown>\".", "code": 400}}
配置¶
没有配置变更。
数据库¶
没有数据库变更。
公共 API¶
没有公共 API 变更。
公共 API 安全¶
没有公共 API 安全相关的变更。
内部 API¶
没有内部 API 更改。
Guest Agent¶
没有 Guest Agent 变更。
备选方案¶
当前的替代方案是 mgmt-show,但它是一个过于重量级的调用,并且如果底层的计算和/或卷不健康,则可能无法返回有意义的信息。
依赖项¶
没有依赖项。
测试¶
标准。
文档影响¶
如果管理 API 已记录(我不认为它已记录),则添加 ‘rpc_ping’ 路由是相关的。
参考资料¶
无。