Kubernetes 上的 GraphQL 服务器到服务器连接超时
GraphQL server to server connection timeout on Kubernetes
我目前在 gcloud kubernetes 平台上 运行 有 3 项服务。
前端通过 graphql 查询连接到后端并请求一些数据。该查询被转发到另一个服务,该服务负责特定类型的数据,即 "bread"。
所以你有前端 (react/next.js) -> 后端 #1 (graphql) -> 后端 #2 (graphql)
所有这些都可以在集群内通信,我可以通过"kubectl logs podname"查看日志。
日志基本上说:
- 后端 #1:收到查询
- 后端 #2:收到查询(这是它查询数据库的地方)。
后端#1:
,"level":50,"msg":"无法从面包服务获取面包。FetchError: 请求 http://bread-service/graphql 失败,原因:连接 ETIMEDOUT some.ip.address:15\n
我不确定为什么会出现此超时错误。所有服务都可以成功通信。
我建议使用 apollo-gateway,你可以找到详细信息 here,这将在两者之间添加一个网关层,你可以在其中定义应该与之通信的所有服务的 URL彼此。
并且只通过入口公开网关。
在上面的例子中,我猜你漏掉了服务的端口号
http://bread-service:port/graphql
试试这个,我想这应该有用。
但一定要看看 link,对于看起来适合实施的微服务,我也在探索相同的东西
我目前在 gcloud kubernetes 平台上 运行 有 3 项服务。
前端通过 graphql 查询连接到后端并请求一些数据。该查询被转发到另一个服务,该服务负责特定类型的数据,即 "bread"。
所以你有前端 (react/next.js) -> 后端 #1 (graphql) -> 后端 #2 (graphql)
所有这些都可以在集群内通信,我可以通过"kubectl logs podname"查看日志。
日志基本上说:
- 后端 #1:收到查询
- 后端 #2:收到查询(这是它查询数据库的地方)。
后端#1:
,"level":50,"msg":"无法从面包服务获取面包。FetchError: 请求 http://bread-service/graphql 失败,原因:连接 ETIMEDOUT some.ip.address:15\n
我不确定为什么会出现此超时错误。所有服务都可以成功通信。
我建议使用 apollo-gateway,你可以找到详细信息 here,这将在两者之间添加一个网关层,你可以在其中定义应该与之通信的所有服务的 URL彼此。
并且只通过入口公开网关。
在上面的例子中,我猜你漏掉了服务的端口号
http://bread-service:port/graphql
试试这个,我想这应该有用。
但一定要看看 link,对于看起来适合实施的微服务,我也在探索相同的东西