2주차 - Terraform 을 통한 VPC, ALB, ASG 배포 실습

이 내용은 CloudNet@ 에서 진행하는 테라폼 기초 입문 스터디에 대한 연재글입니다.

스터디에서 사용하는 교재는 Terraform Up & Running 2nd Edition 입니다.


Prerequisites

아래에서 2주차 스터디 내용을 공유합니다.

교재의 2장 중, 코드내용 중 VPC 환경을 만들고 ASG/ELB 구축을 테라폼으로 진행합니다. 이와 함께 상태관리에 대해 다룹니다.

VPC 환경 구축

아래 도식의 환경을 코드로 구성합니다:

예시코드는 아래 경로를 참고해 주세요.

코드에 대한 설명은 다음과 같습니다:

데이터 소스 블록이란?

예시코드에 있는 내용 중, data 로 시작하는 구문은, 데이터 소스 블록을 의미합니다. 이는 아래와 같습니다:

데이터 소스 블록을 사용하는 방법은 아래와 같습니다:

data "<PROVIDER>_<TYPE>" "<NAME>" {
  [CONFIG …]
}

이런 방식으로 호출할 수 있지요:

data "aws_ami" "s3ich4n-chapter02-ex01-amazonlinux2" {
  most_recent = true
  filter {
    name   = "owner-alias"
    values = ["amazon"]
  }

  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-*-x86_64-ebs"]
  }

  owners = ["amazon"]
}

resource "aws_instance" "s3ich4n-chapter02-ex01-ec2" {
  ami                         = data.aws_ami.s3ich4n-chapter02-ex01-amazonlinux2.id
  (중략)
}

VPC환경에서 ALB, ASG 구축

이제 VPC 환경에서 ALB, ASG를 추가한 환경을 구축해보겠습니다. 도식은 아래와 같습니다:

예시코드는 아래 경로를 참고해 주세요.

구축에 앞서 ALB와 ASG, 그리고 이 둘을 함께 사용하려면 어떻게 해야하는지에 대해 살펴보겠습니다.

ASG란?

AWS의 ASG(Auto Scaling Groups)를 의미합니다. EC2 인스턴스의 자동적인 스케일링, 관리를 위해 논리적인 그룹으로 묶는 기능을 수행합니다.

ASG는 시작 구성정보를 참고하여 인스턴스를 생성하는데, 재배포를 한다면 시작구성을 변경할 수 없습니다.

ALB란?

AWS ALB(Application Load Balancer)를 의미합니다. 둘 이상의 AZ(Availability Zone, 가용 영역)에서 EC2, 컨테이너, IP 주소 등에 대해 들어오는 트래픽을 자동으로 분산하는 역할을 수행합니다.

→ 트래픽을 분산시키고, 외부에 노출시키는 IP 주소를 단일화합니다.

ALB의 주요 구성에 대해 알아보겠습니다:

FYI, AWS에서는 로드 밸런싱을 위한 여러 서비스가 존재합니다.

ASG, ALB를 사용하려면?

ASG, ALB를 함께 사용하려면?

Lessons Learned

제 2장에서는 테라폼을 사용하여 기본적인 환경구축을 수행하는 방법에 대해 배웠습니다. 또한 데이터 소스 블록에 대한 내용을 학습했습니다. 아래 내용을 반드시 기억하셨으면 좋겠습니다.

  1. VPC 환경을 테라폼으로 표현하는 방법에 대해 배웠습니다.
  2. VPC 환경에 ALB, ASG를 함께 구축하여 트래픽양에 따른 scale-out을 코드화 하였습니다
    1. 아직 정확히 어떤 시점에, 어떻게 스케일아웃을 하고 다시 원복해야 하는지에 대한 내용은 나오지 않았습니다!
    2. 후에 다시 기술할 예정입니다.
  3. 데이터 소스 블록에 대해 배웠습니다.

이것으로 제 2장을 마칩니다. 긴 글 읽어주셔서 감사합니다.