Как проверить работу внутреннего балансировщика нагрузки сети - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть требование использовать внутренний NLB для связи с другими ресурсами внутри VP C. Я могу создать NLB и AWS лямбда-функцию внутри VP C, но по некоторым причинам мои запросы от Lambda зависают и время ожидания. Я попытался поместить функции NLB и Lambda в отдельные подсети, в те же подсети, в отдельные SG, в те же SG, но ничего не работает. Я не уверен, как вы должны ударить внутренние NLB, чтобы проверить их. Вот что я запустил с CloudFormation:

  NLB:                               # The Network Load Balancer
    Type: "AWS::ElasticLoadBalancingV2::LoadBalancer"
    Properties:
      Scheme: "internal"
      Subnets: !Ref NlbSubnetIds     # I'm providing 3 subnets out of the 6 available
      Type: "network"
      LoadBalancerAttributes:
        - Key: access_logs.s3.enabled
          Value: true
        - Key: access_logs.s3.bucket 
          Value: !Ref AccessLogBucketNlb
        - Key: load_balancing.cross_zone.enabled
          Value: true
  NlbTargetGroup:
    Type: "AWS::ElasticLoadBalancingV2::TargetGroup"
    Properties:
        HealthCheckIntervalSeconds: 30
        HealthCheckProtocol: "TCP"
        HealthyThresholdCount: 3
        Matcher: !Ref "AWS::NoValue"
        Port: 80
        Protocol: "TCP"
        TargetType: "ip"
        UnhealthyThresholdCount: 3
        VpcId: !Ref VpcId

  NlbListener:
    Type: "AWS::ElasticLoadBalancingV2::Listener"
    Properties:
      DefaultActions:
      - Type: forward
        TargetGroupArn: !Ref NlbTargetGroup
      LoadBalancerArn: !Ref NLB
      Port: '80'
      Protocol: TCP

Из моей функции Lambda в том же VP C:

import json
import urllib3

def lambda_handler(event, context):
    http = urllib3.PoolManager()
    r = http.request('GET', 'http://<NLB DNS Name>.elb.us-east-1.amazonaws.com',
                     headers={'Content-Type': 'application/json'})
    print(r.read())
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

Все входящие / исходящие правила в ACL разрешить общение, а также группы безопасности, так что я уверен, что это не так. Любая помощь будет оценена.

...