ECS를 이용한 Blue/Green 무중단 배포 구성하기 (4) - 애플리케이션 로드 밸런서(ALB) 생성
작성 일자 : 2024년 6월 30일
시리즈 순서
- 프로젝트 생성과 ECR 리포지토리
- VPC 생성 및 NAT Instance를 이용한 인터넷 연결
- Route 53 Hosted Zone 생성 및 ACM SSL 인증서 발급
- 애플리케이션 로드 밸런서(ALB) 생성(👈 지금 보고 있는 포스트)
- ECS를 이용한 컨테이너 배포
- CodeDepoly를 이용한 Blue/Green 무중단 배포 테스트
- Github Actions를 이용한 배포 자동화 구축
1. ALB의 Security Group 생성
1-1. 애플리케이션 로드 밸런서(ALB)란?
애플리케이션 로드 밸런서(Application Load Balancer)는 AWS에서 제공하는 고가용성 로드 밸런싱 서비스로, HTTP 및 HTTPS 트래픽을 처리하도록 설계되었습니다. ALB는 다양한 대상 그룹(Target Groups)에 트래픽을 분산시켜, 각 대상 그룹에 연결된 EC2 인스턴스, ECS 컨테이너 또는 Lambda 함수로 트래픽을 전달합니다. Blue-Green 배포 전략을 사용하는 경우, ALB는 새로운 버전의 애플리케이션을 포함한 대상 그룹(예: Green)과 현재 프로덕션 애플리케이션을 포함한 대상 그룹(예: Blue) 간에 트래픽을 원활하게 전환하는 데 중요한 역할을 합니다. 이를 통해 무중단 배포가 가능하며, 롤백이 필요할 때도 빠르게 이전 버전으로 전환할 수 있습니다.
1-2. ALB의 Security Group 생성
먼저, ALB를 생성하기 전에 ALB의 Security Group을 생성하겠습니다.
- AWS Management Console에 로그인한 후, EC2 > Security Groups로 이동합니다.
- Security Groups 페이지에서 Create security group을 클릭합니다.
- 아래와 같이 설정을 진행한 후, Create security group을 클릭합니다.
- Security group name:
gerrymandering-ecsdeploy-ALB-SG
- Description:
security group for gerrymandering-ecsdeploy-ALB
- VPC (중요!!):
시리즈 2편에서 생성한 VPC 선택
- Inbound rules
- 모든 IPv4 주소로부터 HTTP(포트 80), HTTPS(포트 443) 트래픽을 허용합니다.
- Outbound rules
- 모든 대상(0.0.0.0/0)으로의 트래픽을 허용합니다.
2. Target Group 생성
2-1. Target Group이란?
Target Group은 ALB에서 요청을 라우팅하는 대상의 논리적 집합입니다. 각 Target Group은 하나 이상의 대상(Target)을 포함하며, 이러한 대상은 EC2 인스턴스, ECS 컨테이너, 또는 Lambda 함수일 수 있습니다. Target Group은 요청을 수신할 대상의 집합을 정의하고, 각 대상의 상태를 모니터링하여 트래픽이 건강한(Healty) 대상에게만 전달되도록 합니다. Blue-Green 배포 전략에서는 Blue와 Green 두 개의 Target Group이 존재하며, 각각 다른 버전의 애플리케이션을 호스팅합니다.
2-2. Target Group 생성
- AWS Management Console에서 EC2 > Load Balancing > Target Groups로 이동합니다.
- Target Groups 페이지에서 Create target group을 클릭합니다.
- 아래와 같이 설정을 진행한 후, Next를 클릭합니다.
- Basic configuration
- Choose a target type:
IP addresses
- Target group name:
ecsdeploy-blue-TG
- Protocol: Port:
HTTP
/8080
- Choose a target type:
- Basic configuration
- IP address type:
IPV4
- VPC:
시리즈 2편에서 생성한 VPC 선택
- Protocol version:
HTTP1
- IP address type:
- Health checks
- Health check protocol:
HTTP
- Health check path:
/actuator/health
(Spring Boot Actuator 기본 경로로 설정)
- Health check protocol:
- 아래와 같은 설정을 확인한 후, Create target group을 클릭합니다.
- IP addresses
- Network:
시리즈 2편에서 생성한 VPC 선택
- Enter an IPv4 address from a VPC subnet:
10.0.0.
(그대로 유지) - Ports:
8080
- Network:
- (중요!!) 위의 2번 ~ 4번까지의 과정을 반복하여,
ecsdeploy-green-TG
Target Group을 추가로 생성합니다. (이름을 제외한 모든 설정은 동일)
3. ALB 생성
다음으로, 애플리케이션 로드 밸런서(ALB)를 생성하겠습니다.
- AWS Management Console에서 EC2 > Load Balancing > Load Balancers로 이동합니다.
- Load Balancers 페이지에서 Create Load Balancer를 클릭합니다.
- Load balancer types에서 Application Load Balancer의 Create를 클릭합니다.
- 아래와 같이 설정을 진행한 후, Create load balancer를 클릭합니다.
- Basic configuration
- Load balancer name:
gerrymandering-ecsdeploy-ALB
- Scheme:
internet-facing
- IP address type:
IPv4
- Load balancer name:
- Network mapping
- VPC:
시리즈 2편에서 생성한 VPC 선택
- Mappings
- Availability Zone:
ap-northeast-2a
/ap-northeast-2c
(두 개의 서브넷 선택) - (중요!!) Subnet: 각 Availability Zone의 Public Subnet 선택 (로드 밸런서가 인터넷에 노출되어야 하므로 Public Subnet 선택)
- Availability Zone:
- VPC:
- Security groups
- Security groups:
gerrymandering-ecsdeploy-ALB-SG
(위에서 생성한 ALB의 Security Group 선택)
- Security groups:
- Listeners and routing
- Protocol:
HTTPS
- Port:
443
- Default action:
ecsdeploy-blue-TG
(위에서 생성한 Target Group Blue 선택)
- Protocol:
- Secure listener settings
- Security policy:
기본 선택인 recommended 유지
- Certificate source:
From ACM
- Certificate (from ACM):
시리즈 3편에서 생성한 ACM 인증서 선택
- Security policy:
- 생성을 완료한 이후, 상태가
Active
로 변경될 때까지 기다립니다.
4. Route 53 레코드 생성
마지막으로, ALB와 도메인을 연결하기 위해 Route 53 레코드를 생성하겠습니다. 이를 통해 사용자는 도메인을 통해 애플리케이션에 접근할 수 있습니다.
- AWS Management Console에서 Route 53 > Hosted zones로 이동합니다.
- Hosted zones 페이지에서 시리즈 1편에서 생성한 Hosted Zone을 클릭합니다.
- Records 섹션에서 Create record를 클릭합니다.
- 아래와 같이 설정을 진행한 후, Create records를 클릭합니다.
- Quick create record
- record type:
A
- Alias:
체크
- Route traffic to
Alias to Application and Classic Load Balancer
Asia Pacific (Seoul)
생성한 ALB 선택
- record type:
다음 글: ECS를 이용한 컨테이너 배포
ECS를 이용한 Blue:Green 무중단 배포 구성하기 (5) - ECS를 이용한 컨테이너 배포
ECS를 이용한 Blue:Green 무중단 배포 구성하기 (5) - ECS를 이용한 컨테이너 배포 작성 일자 : 2024년 7월 14일 시리즈 순서프로젝트 생성과 ECR 리포지토리VPC 생성 및 NAT Instance를 이용한 인터넷 연결R
gerrymandering.tistory.com