首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CloudFormation中向网络负载均衡器添加目标

如何在CloudFormation中向网络负载均衡器添加目标
EN

Stack Overflow用户
提问于 2019-03-06 19:17:51
回答 1查看 2.8K关注 0票数 1

我有一些网络负载均衡器的CloudFormation。

代码语言:javascript
复制
  PrivateNetworkLoadBalancerSG:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Access to the internal network load balancer
      VpcId: !Ref 'VPC'
  PrivateNetworkLoadBalancerIngressFromECS:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      Description: Only accept traffic from a container in the container host security group
      GroupId: !Ref 'PrivateNetworkLoadBalancerSG'
      IpProtocol: -1
      SourceSecurityGroupId: !Ref 'EcsHostSecurityGroup'
  PrivateNetworkLoadBalancer:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Type: network
      Scheme: internal
      Subnets:
        - !Ref PrivateSubnetOne
        - !Ref PrivateSubnetTwo
  DummyTargetGroupPrivateNetwork:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      Name: !Join ['-', [!Ref 'AWS::StackName', 'drop-3']]
      Port: 6379
      Protocol: TCP
      # UnhealthyThresholdCount: 2
      VpcId: !Ref 'VPC'

还有一些用于在ECS中设置Redis码头容器。

代码语言:javascript
复制
  RedisService:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !ImportValue "privatevpc:ClusterName"
      DesiredCount: 1
      TaskDefinition: !Ref RedisTaskDefinition

  RedisTaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: redis
      ContainerDefinitions:
        - Name: redis
          Essential: true
          Image: "redis:latest"
          Memory: 512
          PortMappings:
            - ContainerPort: 6379
              HostPort: 6379
          LogConfiguration:
            LogDriver: awslogs
            Options:
              awslogs-group: !Ref CloudWatchLogsGroup
              awslogs-region: !Ref AWS::Region

  RedisTargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      VpcId: !ImportValue "privatevpc:VPCId"
      Port: 6379
      Protocol: TCP
      HealthCheckProtocol: TCP

  RedisLoadBalancerListener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    Properties:
      DefaultActions:
      - Type: forward
        TargetGroupArn: !Ref RedisTargetGroup
      LoadBalancerArn: !ImportValue "privatevpc:PrivateNetworkLoadBalancer"
      Port: 6379
      Protocol: TCP

但是,我必须手动添加EC2实例,RedisService通过AWS控制台作为RedisTargetGroup的目标进行部署。知道我怎么能让CloudFormation帮我这么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-07 02:02:12

我认为您需要将LoadBalancers属性添加到RedisService中。ECS应该自动向指定的目标组添加正确的EC2实例。

例如:

代码语言:javascript
复制
  RedisService:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !ImportValue "privatevpc:ClusterName"
      DesiredCount: 1
      TaskDefinition: !Ref RedisTaskDefinition
      LoadBalancers:
        - ContainerName: redis
          ContainerPort: 6379
          TargetGroupArn: !Ref RedisTargetGroup

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55030635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档