最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何从根本上解决连接问题

网站源码admin188浏览0评论

如何从根本上解决连接问题

如何从根本上解决连接问题

我有一个问题,想深入挖掘以了解根本原因:

service-A 在一个 k8s pod (node.js) 中运行,该 pod 使用 gPRC 客户端连接 service-B(C++、gRpc 服务器),并使用服务名称进行连接。这两个服务都是使用 k8s 规范中的 NodePort 类型定义的。

[问题]

一切正常,但有时当服务 B 重新启动(崩溃)时,连接不再工作,直到我手动重新启动服务 A,它才再次工作。是的,有时候,有时候,当service-B重新启动时,连接仍然可以工作。

显然,这个问题不会让我睡觉,因为我们无法保证 service-B 不会重新启动/崩溃。

我有一些想法,但无法判断哪个更有可能是问题所在。

  1. 是否是因为gRpc客户端没有重新解析DNS名称(服务名称)?
  2. 是因为与旧pod的连接还没有关闭吗?
  3. 我是否错过了任何处理此类情况的 gRPC 客户端选项?
  4. 我是否误用了服务类型 - 我应该使用无头服务而不是 NodePort?

由于有很多部分,我仍然没有很好的图片来正确调试这个问题,非常感谢您的意见。

参考:

  1. gRpc 客户端
    const serviceAddr = 'nebula:9190';
    const cred = nebula.grpc.credentials.createInsecure();
    const options = {
      nebula: 'node',
      'grpc.max_receive_message_length': MESSAGE_LENGTH,
      'grpc.max_send_message_length': MESSAGE_LENGTH,
      'grpc.min_reconnect_backoff_ms': MIN_RECONNECT_BACKOFF_MS,
      'grpc.max_reconnect_backoff_ms': MAX_RECONNECT_BACKOFF_MS,
    };
    const makeClient = () => new nebula.V1Client(serviceAddr, cred, options);
  1. K8s规格
apiVersion: v1
kind: Service
metadata:
  name: nebula
spec:
  type: NodePort
  selector:
    app: nebula-server
  ports:
    - port: 9190
      name: server
      targetPort: 9190
回答如下:

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论