ALB-Websocket连接不断终止

时间:2019-01-01 12:23:04

标签: amazon-web-services aws-application-load-balancer

我有一个前端应用程序,尝试在端口3000上连接到socket.io后端。两者均在AWS中实现为微服务。我为socket.io服务设置了ListenerRuleTargetGroup,如下所示

  TargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      VpcId: !Ref VPC
      Port: 3000
      Protocol: HTTP
      Matcher:
        HttpCode: 200-299
      HealthCheckIntervalSeconds: 10
      HealthCheckPath: /
      HealthCheckProtocol: HTTP
      HealthCheckTimeoutSeconds: 5
      HealthyThresholdCount: 2


  ListenerRule:
    Type: AWS::ElasticLoadBalancingV2::ListenerRule
    Properties:
      ListenerArn: !Ref Listener
      Priority: 4
      Conditions:
        - Field: path-pattern
          Values: [ "/" ]
      Actions:
        - TargetGroupArn: !Ref TargetGroup
          Type: forward

  ListenerRule1:
    Type: AWS::ElasticLoadBalancingV2::ListenerRule
    Properties:
      ListenerArn: !Ref Listener
      Priority: 5
      Conditions:
        - Field: path-pattern
          Values: [ "/socket.io/" ]
      Actions:
        - TargetGroupArn: !Ref TargetGroup
          Type: forward

  ListenerRule2:
    Type: AWS::ElasticLoadBalancingV2::ListenerRule
    Properties:
      ListenerArn: !Ref Listener
      Priority: 6
      Conditions:
        - Field: path-pattern
          Values: [ "/socket.io/*" ]
      Actions:
        - TargetGroupArn: !Ref TargetGroup
          Type: forward

但是连接保持断开状态,就像每秒一次。 enter image description here 我想尝试使用粘性选项,因为我使用的应用程序负载平衡器支持websocket。但是找不到有关如何使用yaml脚本更新执行此操作的适当文档。

1 个答案:

答案 0 :(得分:-1)

负载平衡器不适用于长时间的Web套接字连接,并且将在连接后终止连接 certain time

您最多可以将超时时间增加到4000 seconds

但是AWS Api-Gateway为websocket添加了一项新功能,您可以将其与AWS Lambda一起使用。 此处更多信息:Api-Gateway Websockets 您可以看看带有websocket的无服务器example

我希望有帮助。

多米尼克