gpt4 book ai didi

amazon-web-services - AWS ALB 与 GRPC

转载 作者:行者123 更新时间:2023-12-05 04:27:11 25 4
gpt4 key购买 nike

我正在尝试在应用程序负载均衡器后面的 AWS ECS(在 Fargate 上)上运行带有 GRPC API 的网络服务器,以便连接到 Android GRPC 客户端。调用被转接,但服务器日志显示类似

的错误
io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception: HTTP/2 client preface string missing or corrupt. Hex dump for received bytes: 1603010102010000fe03036a5663244616ee784100b9d61c

我读过 here这种错误与客户端和服务器有关,而不是都使用 SSL,这在我的情况下可以说是正确的。

服务器本身没有配置为使用 SSL(我不知道用哪个证书来部署它)。ALB 向客户端提供 ACM 公共(public)证书,并且应该执行我期望的 SSL 卸载。但是,当协议(protocol)版本为 GRPC 时,我无法使用 HTTPS 以外的其他协议(protocol)配置负载平衡目标组这一事实表明情况并非如此。

任何人都可以向我澄清这一点或有一个有效的例子吗?

这是我的 cfn 模板的相关 ALB 配置:

  ApplicationLoadBalancer:
Type: "AWS::ElasticLoadBalancingV2::LoadBalancer"
Properties:
Name: my-alb
Scheme: "internet-facing"
Type: "application"
Subnets:
- !Ref public-sn-1
- !Ref public-sn-2
SecurityGroups:
- !Ref ALBSecurityGroup
IpAddressType: "ipv4"

HubListener:
Type: "AWS::ElasticLoadBalancingV2::Listener"
Properties:
LoadBalancerArn: !Ref ApplicationLoadBalancer
Port: 50051
Protocol: HTTPS
SslPolicy: "ELBSecurityPolicy-2016-08"
Certificates:
- CertificateArn: !Ref AlbCertificateArn
DefaultActions:
- Order: 1
TargetGroupArn: !Ref HubTargetGroup
Type: "forward"

HubTargetGroup:
Type: "AWS::ElasticLoadBalancingV2::TargetGroup"
Properties:
Port: 50051
Protocol: HTTPS
ProtocolVersion: GRPC
HealthCheckEnabled: true
HealthCheckPath: "/grpc.health.v1.Health/Check"
HealthCheckPort: "traffic-port"
HealthCheckProtocol: HTTP
TargetType: ip
Matcher:
GrpcCode: 0
VpcId: !Ref VpcId

最佳答案

事实证明,只需将目标组切换到协议(protocol) HTTP 即可使 SSL 卸载正常工作。

我最初假设这是不允许的,因为转发到 GRPC 目标组的监听器必须使用 HTTPS 作为协议(protocol),但该限制不适用于目标组本身。

关于amazon-web-services - AWS ALB 与 GRPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72884212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com