背景
API 网关是用于实现完整 API 托管的服务,用于协助开发者轻松完成 API 的创建、维护、发布、监控等整个生命周期的管理。通过 API 网关,您可以封装后端各种服务,以 API 的形式,提供给各方使用。同时,API 网关协助您完成 API 文档管理、API 测试和 SDK 生成等。
我们在使用API网关的时候,有时候客户端调用API网关服务时候,日志中出现“504 Gateway Time-out”这种情况比较普遍,需要从API网关层和后端服务层进行综合排查,下面就将问题排查思路分享给大家。
问题排查思路
1、检查直接访问 API 网关后端服务是否正常
- 当用户后端服务是 VPC 内的负载均衡资源时,使用相同 VPC 内的另一台 CVM 访问负载均衡的内网 IP,检查是否超时。
- 当用户后端服务是 TSF 时,通过 TSF 下同一个命名空间的服务实例对超时实例进行访问,检查是否超时。
- 当后端服务是 HTTP 类型,且不在任何 VPC 内,直接通过外网访问查看是否超时。
在以上情况中,如果测试依然超时,考虑是后端服务存在问题,建议检查后端服务是否正常。
2、检查 API 网关以及后端服务设置的超时时间
用户在配置 API 网关的 API 时,要在后端配置添加超时时间,如果后端服务没有在超时时间内返回结果,网关会返回504错误。
3、检查安全组是否设置正确
当用户后端地址是 VPC 内的 CLB 时,查看关联的 CLB 绑定的 CVM 安全组是否放通了 API 网关的 IP。如果没有设置安全组,请查看后端地址是否还存在其他的端口网络限制。 放通安全组方法:CLB 绑定的后端 CVM 安全组,需要放通 API 网关的内网 IP 网段,不同地域内网 IP 网段列表请参考 API 网关各地域内网网段以及外网 VIP。端口需要放通部署在 CVM 上的服务的端口。安全组的设置方式请参考 安全组操作。
- 当用户的 API 是微服务 API,且服务部署在 CVM 上时,需要在 CVM 上的安全组上放通客户端 IP,端口放通服务端口。
- 当用户的 API 是微服务 API,且服务部署在容器中时,由于容器的 pod 不一定固定在某个 CVM 上,建议将集群中的机器都放通相同的安全组,放通客户端 IP,端口放通容器的端口。
- 当用户的后端地址是一般的外网可访问 HTTP 地址时,也需要检查是否有设置防火墙、安全组等,需要放通网关的外网 VIP 。