AWS ALB + ECS + gRPC + Ruby“尝试连接 http1.x 服务器”

问题描述 投票:0回答:1

我正在使用 Ruby 构建 gRPC服务器,并尝试通过 AWS ALB 从 Ruby 客户端请求它。 我们将其部署到 Fargate 上的 AWS ECS

问题

当我尝试通过 ALB 发送请求时,出现以下错误

GRPC::Unavailable (14:failed to connect to all addresses; last error: INTERNAL: 
ipv4:myip:50051: Trying to connect an http1.x server. 
debug_error_string:{UNKNOWN:failed to connect to all addresses; last error: INTERNAL: 
ipv4:myip:50051: Trying to connect an http1.x server {grpc_status:14, 
created_time:"2023-08-04T19:03:50.762448829+09:00"}}):
[6edb224a-1729-49ae-aa15-d396e4e04366] 
GRPC::Unavailable (14:failed to connect to all addresses; last error:
 INTERNAL: ipv4:myip:50051: 
Trying to connect an http1.x server. 
debug_error_string:{UNKNOWN:failed to connect to all addresses; 
last error: INTERNAL: ipv4:myip:50051: 
Trying to connect an http1.x server 
{grpc_status:14, created_time:"2023-08-04T19:03:50.762448829+09:00"}}):

我使用CDK构建Cloud,代码是这样的

    const alb = new ApplicationLoadBalancer(scope, 'alb', {
      internetFacing: true,
      http2Enabled: true,
      loadBalancerName: `alb`,
      securityGroup: this.sgGroups[0],
      vpcSubnets: {
        subnets: this.subnets,
      },
      vpc: this.vpc,
    })
    const tg = new ApplicationTargetGroup(scope, 'a', {
      protocol: ApplicationProtocol.HTTP,
      protocolVersion: ApplicationProtocolVersion.GRPC,
      port: 50051,
      targetType: TargetType.IP,
      vpc: this.vpc,
      healthCheck: {
        healthyGrpcCodes: '0-99',
        port: '8080',
        path: '/grpc.health.v1.Health/Check',
        protocol: Protocol.HTTP,
      },
    })
    new ApplicationListener(scope, 'b', {
      loadBalancer: alb,
      protocol: ApplicationProtocol.HTTPS,
      port: 50051,
      certificates: [
        {
          certificateArn: certificate.certificateArn,
        },
      ],
      defaultTargetGroups: [tg],
    })

我确认过的事情

  • gRPC 服务器工作正常,因为当我在没有 ALB 的情况下将域附加到 Fargate 任务公共 IP 并使用 ruby 客户端请求它时,我得到了重新设置。
  • ALB 健康检查状态为健康
  • 我检查了安全组,看起来没问题。他们允许来自任何地方的 50051 和 8080 请求。
  • 我在 StackOverflow url 上发现了类似的问题,但它对我不起作用。

如果有人知道一些事情并让我知道,我会非常高兴。

ruby grpc amazon-ecs aws-application-load-balancer
1个回答
0
投票

我也有同样的问题。通过 ALB 直接起作用 - 不

© www.soinside.com 2019 - 2024. All rights reserved.