Amazon web services 502坏网关:容器端口5000上的节点应用程序

Amazon web services 502坏网关:容器端口5000上的节点应用程序,amazon-web-services,amazon-ecs,aws-application-load-balancer,Amazon Web Services,Amazon Ecs,Aws Application Load Balancer,我在aws中作为微服务托管了angular应用程序:。我收到一个502严重网关错误。下面给出了服务的yaml模板和任务定义。当我运行docker run-p 5000:5000时,我使用的映像在本地环境中工作 下面给出的是负载平衡器的yaml模板 Resources: LoadBalancer: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: Name: !Ref EnvironmentNam

我在aws中作为微服务托管了angular应用程序:。我收到一个502严重网关错误。下面给出了服务的yaml模板和任务定义。当我运行
docker run-p 5000:5000时,我使用的映像在本地环境中工作

下面给出的是负载平衡器的yaml模板

Resources:
  LoadBalancer:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Name: !Ref EnvironmentName
      Subnets: !Ref Subnets
      SecurityGroups:
        - !Ref SecurityGroup
      Tags:
        - Key: Name
          Value: !Ref EnvironmentName

  LoadBalancerListener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    Properties:
      LoadBalancerArn: !Ref LoadBalancer
      Port: 5000
      Protocol: HTTP
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref DefaultTargetGroup

  # We define a default target group here, as this is a mandatory Parameters
  # when creating an Application Load Balancer Listener. This is not used, instead
  # a target group is created per-service in each service template (../services/*)
  DefaultTargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      Name: !Sub ${EnvironmentName}-default
      VpcId: !Ref VPC
      Port: 80
      Protocol: HTTP
下面给出的是云形成堆栈。

错误是我没有服务从Microservice端监听端口5000。我的错。所以,如果有人遇到同样的问题。确保你有正确的形象。还要确保已正确设置了
ListenerRule
TargetGroup

例如:-


错误是我没有一个服务从Microservice端监听端口5000。我的错。所以,如果有人遇到同样的问题。确保你有正确的形象。还要确保已正确设置了
ListenerRule
TargetGroup

例如:-


我不知道如何在容器中启动应用程序,但我建议您使用forever()来确保它不会处于非活动状态。我已经有502个错误,因为在其他系统中,有几分钟没有活动。希望这有点帮助502错误通常是由NGINX无法将请求传递到“上游”引起的,在这种情况下是您的Node.js服务器(这也是错误消息所建议的:“连接被拒绝”)。它可能正在崩溃并重新启动,因此请检查其日志文件以查看导致崩溃的原因。该服务是否通过了ECS运行状况检查(检查事件选项卡)?您是否确定负载平衡器可以连接到ECS群集/服务(安全组设置和/或网络ACL,如果已设置)?我不知道您如何在容器中启动应用程序,但我建议您使用forever()以确保它不会处于非活动状态。在其他系统中,当几分钟内没有活动时,我已经出现了502个错误。希望这有点帮助。502个错误通常是由于NGINX无法将请求传递给“在本例中是Node.js服务器(这也是错误消息所建议的:“连接被拒绝”)。它可能正在崩溃并重新启动,因此请检查其日志文件以查看导致崩溃的原因。该服务是否通过ECS运行状况检查(检查事件选项卡)?您确定负载平衡器可以连接到ECS群集/服务(安全组设置和/或网络ACL,如果已设置)?
Resources:
  LoadBalancer:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Name: !Ref EnvironmentName
      Subnets: !Ref Subnets
      SecurityGroups:
        - !Ref SecurityGroup
      Tags:
        - Key: Name
          Value: !Ref EnvironmentName

  LoadBalancerListener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    Properties:
      LoadBalancerArn: !Ref LoadBalancer
      Port: 5000
      Protocol: HTTP
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref DefaultTargetGroup

  # We define a default target group here, as this is a mandatory Parameters
  # when creating an Application Load Balancer Listener. This is not used, instead
  # a target group is created per-service in each service template (../services/*)
  DefaultTargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      Name: !Sub ${EnvironmentName}-default
      VpcId: !Ref VPC
      Port: 80
      Protocol: HTTP
TargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      VpcId: !Ref VPC
      Port: 80
      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: 100
      Conditions:
        - Field: path-pattern
          Values: [ "/*" ]
      Actions:
        - TargetGroupAr