폐역 네트워크를 이용한 애플리케이션 간 통신 실현

9867 단어 TerraformAWS
비기능 요구로서 인터넷을 경유하지 않고 통신하고 싶은 경우에 요구의 Gateway로서 내부 Load Balancer를 사용하는 경우가 있습니다만, 그 내부 Load Balancer에 대해서 Elastic Beanstalk로 제어하고 있는 EC2 Instance를 계속적 에 타겟팅을 계속해야합니다.

VPC 간을 통신하기 위해 VPC Endpoint, VPC EndpointServices 등이 있지만 이번에는 동일한 VPC 내의 동일한 서브넷 내에서 통신하기 때문에 이러한 구성 요소는 필요하지 않습니다. 개발 환경 등에서는 비용 절감을 위해 EC2 Instance를 기동·정지를 제어하고 있습니다. 인터넷용 Load Balancer는 Autoscaling Group과 연계하여 EC2 Instance를 타겟팅하는 것이 가능하지만 Elastic Beanstalk에서 관리하지 않는 내부 Load Balancer(Elastic Beanstalk는 동시에 여러 개의 Load Balancer를 만들 수 없다)는 처음 대상에 지정한 EC2 Instance가 종료되면 다음에 시작할 EC2 Instance를 계속 타겟팅할 수 없습니다. 따라서 개별적으로 Autoscaling Attachment를 작성하고 Elastic Beanstalk에서 제어하는 ​​Autoscaling Group과 개별적으로 작성한 Target Group을 연동시킵니다. 이렇게 하면 시간과 리소스에 따라 증가 또는 감소하는 EC2 Instance를 계속 타겟팅할 수 있습니다.
  • 비기능 요청 요약
  • 응용 프로그램 간 통신에서 폐역 네트워크를 사용하지만 Requester와 Accepter는 동일한 VPC 및 동일한 Subnet이므로 VPC Endpoint는 필요하지 않습니다
  • Elastic Beanstalk와 별도로 작성된 Load Balancer의 Target Group을 Elastic Beanstalk와 연계하고 싶습니다.
  • Elastic Beanstalk에서 관리하는 Autoscaling Group에 개별적으로 생성 된 Load Balancer의 Target Group을 연결합니다.
  • 개별적으로 생성 된 Load Balancer에서 시간과 리소스에 따라 증가 또는 감소하는 EC2 Instance를 계속 타겟팅 할 수 있습니다.



  • 설정 파일
  • lb_target_group
    resource "aws_lb_target_group" "int_nlb_target_group" {
      name        = "int_nlb_target_group"
      target_type = "instance"
      port        = 80
      protocol    = "TCP"
      vpc_id      = data.aws_vpc.xxxx.id
    }
    
    lb_target_group_attachment
    resource "aws_lb_target_group_attachment" "int_nlb_target_group_attachment_1" {
      target_group_arn = aws_lb_target_group.int_nlb_target_group.arn
      target_id        = "i-xxxxxxxxxxxxx"
      port             = 80
    }
    
    resource "aws_lb_target_group_attachment" "int_nlb_target_group_attachment_2" {
      target_group_arn = aws_lb_target_group.int_nlb_target_group.arn
      target_id        = "i-xxxxxxxxxxxxx"
      port             = 80
    }
    
    lb_listener
    resource "aws_lb_listener" "int_nlb_listener" {
      load_balancer_arn = aws_lb.int_nlb.arn
      port              = "80"
      protocol          = "TCP"
    
      default_action {
        type             = "forward"
        target_group_arn = aws_lb_target_group.int_nlb_target_group.arn
      }
    }
    
    lb
    // Changing this value for load balancers of type network will force a recreation of the resource.
    resource "aws_lb" "int_nlb" {
      name               = "int-nlb"
      internal           = true
      load_balancer_type = "network"
      subnets            = ["subnet-xxxxxxxxxxxxx", "subnet-xxxxxxxxxxxxx"]
    
      access_logs {
        bucket  = "xxxxxxxxxxxxx"
        prefix  = "xxxxxxxxxxxxx/xxxxxxxxxxxxx/xxxxxxxxxxxxx"
        enabled = true
      }
    
      tags = {
        Name        = "int-nlb"
        Environment = "xxxxxx"
      }
    }
    
    autoscaling_attachment
    resource "aws_autoscaling_attachment" "nt_nlb_asg_attachment" {
      autoscaling_group_name = aws_elastic_beanstalk_environment.xxxxxxxxxxxxx.autoscaling_groups[0]
      alb_target_group_arn   = aws_lb_target_group.int_nlb_target_group.arn
    }
    

    처음에 하드 코드 한 InstanceID가 차등으로 출력되어 계속되어 버리는 해결되지 않은 과제가 있습니다 ...
    issue라고 하는지 기능 요구하고 싶은 부분입니다.
    ------------------------------------------------------------------------
    
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # aws_lb_target_group_attachment.int_nlb_target_group_attachment will be created
      + resource "aws_lb_target_group_attachment" "int_nlb_target_group_attachment" {
          + id               = (known after apply)
          + port             = 80
          + target_group_arn = "arn:aws:elasticloadbalancing:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
          + target_id        = "i-xxxxxxxxxxxxxx"
        }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    ------------------------------------------------------------------------
    

    좋은 웹페이지 즐겨찾기