Go语言 在GCP Could Run服务之间调用GRPC方法时出现GRPC“i/o超时”错误

3z6pesqy  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(104)

我们在Go中实现了几个GRPC服务,部署为Cloud Run服务。还有一个ESPv2 Envoy服务代理Cloud Run服务,它位于GRPC服务的前面。
我们的移动的应用程序不直接连接到GRPC服务,而是能够通过ESPv2服务代理成功连接到任何GRPC服务方法。所以App -> ESPv2 -> GRPC Services路径工作得很好。
最近,我们需要从服务B调用服务A上的GRPC方法。
每次服务B中的Go代码尝试调用服务A的GRPC方法时,都会遇到以下错误。
transport: Error while dialing: dial tcp [XXXX:XXXX:XXXX:38::35]:50051: i/o timeout
服务B使用与ESPv2代理相同的服务帐户(并且ESPv2代理成功连接到所有GRPC服务,包括服务A)。
服务A和服务B在Cloud Run中都有以下网络配置。


的数据
服务A被配置为“允许从Internet直接访问您的服务”并允许未经身份验证的连接。
grpc.Dial函数中使用的地址是Cloud Run为服务A广告的URL(当然没有https://)。我们已经尝试直接使用IP地址,但没有效果。
我想联系任何经历过这个问题并能够解决它的人。
谢谢

laximzn5

laximzn51#

所以事实证明,我使用的端口是错误的。在Cloud Run yaml配置中定义的containerPort显然不是服务请求的端口。一旦我将端口从50051更改为443,gRPC客户端就能够成功连接。感谢John汉利的评论,这让我走上了正确的道路。

相关问题