AWS에서 ECS와 ALB를 구성하고 terraform으로 재구성하기

Post on Aug 09, 2019 by atom

AWS에서 ECS와 ALB를 구성하고 terraform으로 재구성하기


ECS -> ALB

목적 : ECS를 이용하여 docker container의 이미지를 가져와 instance를 구성하고 Application Load Balancer로 트래픽을 분산한다

ECS diagram!

1. VPC 구성 - Region(ap-northeast-2) 에 한개의 VPC를 구성

  • Create VPC
  • IPv4 CIDR block -> 10.0.0.0/16 으로 설정함
  • name : myVPC

2. Internet gateway 작성(VPC->Internet Gateways)

  • Create internet gateway
  • Attach to VPC (작성된 internet gateway -> actions -> attach to vpc)
  • myVPC에 연결

3. Route Table 작성

  • Create public route
    1. Create route table
    2. Name tag : public
    3. VPC : myVPC
    4. Routes (작성된 route table을 누르고 Routes 탭)
    5. Edit routes -> Add route destination (0.0.0.0/0) Target internet Gateway 선택 후 위의 igw 선택
    6. Save routes
  • Create private route
    1. Create route table
    2. Name tag : public
    3. VPC : myVPC
    4. Routes (작성된 route table을 누르고 Routes 탭)
    5. Save routes

4. subnet 구성 - 각각 AZ에 public subnet과 private subnet을 작성(VPC->Subnets)

  • Create subnet AZ별 public private 총 6개
  • VPC - myVPC 선택
  • Name Tag -> [AZ1_pb, AZ2_pb, AZ3_pb, AZ1_pr, AZ2_pr, AZ3_pr]
  • Available Zone -> ap-northeast-2a 선택
  • IPv4 CIDR block : [10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24, 10.0.5.0/24, 10.0.6.0/24] 10.0.1.0/24 는 ( 10.0.1.0~10.0.1.255 )앞의 24bit 고정된 ip address할당

5. NAT Gateway 작성

  • Create NAT Gateway( VPC Dashboard -> NAT Gateways)
  • Subnet : AZ1_pb
  • Elastic IP Allocation ID : Create New EIP

6. Private Route table에 NAT Gateway routing 추가

7. Elastic Container Service 구성

  • Create new Task Definition(Amazon ECS-> Task Definitions)
    1. EC2 선택
    2. Configure task and container definitions
      • Task Definition Name : example
      • Task Role : ecsTaskExecutionRole
      • Network Mode : default default로 안하면 cluster에서 instance 선택이 안됨
      • Task execution role : ecsTaskExecutionRole
      • Task memory : 4 gb
      • Task CPU(unit) : 1024
      • Add container : ecr에 등록된 container id 작성
      • container에서 사용할 port와 host에서 사용할 port를 작성