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

引入

GET HOST:8779/v1.0/<tenant_id>/mgmt/instances/<instance_id>/rpc_ping

内部 API

没有内部 API 更改。

Guest Agent

没有 Guest Agent 变更。

备选方案

当前的替代方案是 mgmt-show,但它是一个过于重量级的调用,并且如果底层的计算和/或卷不健康,则可能无法返回有意义的信息。

实现

负责人

主要负责人

Auston McReynolds (amcrn)

里程碑

Kilo-1

依赖项

没有依赖项。

测试

标准。

文档影响

如果管理 API 已记录(我不认为它已记录),则添加 ‘rpc_ping’ 路由是相关的。

参考资料

无。