블루/그린, 선형, 카나리아 배포용 Application Load Balancer 리소스
블루/그린, 선형, 카나리아 배포용 Application Load Balancer 리소스
Application Load Balancer를 Amazon ECS 블루/그린 배포와 함께 사용하려면 파란색(blue)과 초록색(green) 서비스 개정판 사이에서 트래픽을 라우팅할 수 있는 특정 리소스를 구성해야 해요.
출처: 문서
본문
Application Load Balancer를 Amazon ECS 블루/그린 배포와 함께 사용하려면 blue와 green 서비스 개정판 사이에서 트래픽을 라우팅할 수 있는 특정 리소스를 구성해야 합니다.
대상 그룹(Target groups)
Elastic Load Balancing을 사용하는 블루/그린 배포의 경우 두 개의 대상 그룹을 만들어야 합니다.
- blue 서비스 개정판(현재 프로덕션 트래픽)용 기본(primary) 대상 그룹
- green 서비스 개정판(새 버전)용 대체(alternate) 대상 그룹
두 대상 그룹 모두 다음 설정으로 구성해야 합니다.
- 대상 유형: IP(Fargate 또는
awsvpc네트워크 모드의 EC2용) - 프로토콜: HTTP(또는 애플리케이션이 사용하는 프로토콜)
- 포트: 애플리케이션이 수신 대기하는 포트(일반적으로 HTTP의 경우 80)
- VPC: Amazon ECS 작업과 같은 VPC
- 상태 확인 설정: 애플리케이션 상태를 올바르게 확인하도록 구성
블루/그린 배포 중에 Amazon ECS는 배포 단계에 따라 작업을 적절한 대상 그룹에 자동으로 등록합니다.
예: Application Load Balancer용 대상 그룹 만들기
다음 CLI 명령은 블루/그린 배포에서 Application Load Balancer와 함께 사용할 두 개의 대상 그룹을 만듭니다.
aws elbv2 create-target-group \
--name blue-target-group \
--protocol HTTP \
--port 80 \
--vpc-id vpc-abcd1234 \
--target-type ip \
--health-check-path / \
--health-check-protocol HTTP \
--health-check-interval-seconds 30 \
--health-check-timeout-seconds 5 \
--healthy-threshold-count 2 \
--unhealthy-threshold-count 2
aws elbv2 create-target-group \
--name green-target-group \
--protocol HTTP \
--port 80 \
--vpc-id vpc-abcd1234 \
--target-type ip \
--health-check-path / \
--health-check-protocol HTTP \
--health-check-interval-seconds 30 \
--health-check-timeout-seconds 5 \
--healthy-threshold-count 2 \
--unhealthy-threshold-count 2
Application Load Balancer
다음 구성으로 Application Load Balancer를 만들어야 합니다.
- 스킴: 요구 사항에 따라 인터넷 연결 또는 내부
- IP 주소 유형: IPv4
- VPC: Amazon ECS 작업과 같은 VPC
- 서브넷: 서로 다른 가용 영역에 있는 최소 두 개의 서브넷
- 보안 그룹: 리스너 포트의 트래픽을 허용하는 보안 그룹
Application Load Balancer에 연결된 보안 그룹에는 Amazon ECS 작업에 연결된 보안 그룹으로의 트래픽을 허용하는 아웃바운드 규칙이 있어야 합니다.
예: Application Load Balancer 만들기
다음 CLI 명령은 블루/그린 배포에 사용할 Application Load Balancer를 만듭니다.
aws elbv2 create-load-balancer \
--name my-application-load-balancer \
--type application \
--security-groups sg-abcd1234 \
--subnets subnet-12345678 subnet-87654321
리스너와 규칙(Listeners and rules)
블루/그린 배포의 경우 Application Load Balancer에서 리스너를 구성해야 합니다.
- 프로덕션 리스너: 프로덕션 트래픽을 처리합니다(일반적으로 포트 80 또는 443).
- 처음에는 트래픽을 기본 대상 그룹(blue 서비스 개정판)으로 전달합니다.
- 배포 후에는 트래픽을 대체 대상 그룹(green 서비스 개정판)으로 전달합니다.
- 테스트 리스너(선택 사항): 프로덕션 트래픽을 전환하기 전에 green 서비스 개정판을 검증하기 위한 테스트 트래픽을 처리합니다.
- 다른 포트(예: 8080 또는 8443)에 구성할 수 있습니다.
- 테스트 중 트래픽을 대체 대상 그룹(green 서비스 개정판)으로 전달합니다.
블루/그린 배포 중에 Amazon ECS는 배포 단계에 따라 트래픽을 적절한 대상 그룹으로 라우팅하도록 리스너 규칙을 자동으로 업데이트합니다.
예: 프로덕션 리스너 만들기
다음 CLI 명령은 포트 80에서 기본(blue) 대상 그룹으로 트래픽을 전달하는 프로덕션 리스너를 만듭니다.
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456 \
--protocol HTTP \
--port 80 \
--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/abcdef123456
예: 테스트 리스너 만들기
다음 CLI 명령은 포트 8080에서 대체(green) 대상 그룹으로 트래픽을 전달하는 테스트 리스너를 만듭니다.
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456 \
--protocol HTTP \
--port 8080 \
--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
예: 경로 기반 라우팅용 리스너 규칙 만들기
다음 CLI 명령은 테스트를 위해 특정 경로의 트래픽을 green 대상 그룹으로 전달하는 규칙을 만듭니다.
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012 \
--priority 10 \
--conditions Field=path-pattern,Values='/test/*' \
--actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
예: 헤더 기반 라우팅용 리스너 규칙 만들기
다음 CLI 명령은 테스트를 위해 특정 헤더가 있는 트래픽을 green 대상 그룹으로 전달하는 규칙을 만듭니다.
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012 \
--priority 20 \
--conditions Field=http-header,HttpHeaderConfig='{Name=X-Environment,Values=[test]}' \
--actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
서비스 구성(Service configuration)
Amazon ECS가 사용자를 대신해 클러스터의 로드 밸런서 리소스를 관리할 수 있는 권한이 있어야 합니다. 자세한 내용은 Amazon ECS infrastructure IAM role for load balancers를 참고하세요.
Elastic Load Balancing으로 블루/그린 배포를 위해 Amazon ECS 서비스를 만들거나 업데이트할 때 다음 구성을 지정해야 합니다. 사용자 입력을 여러분의 값으로 바꾸세요.
이 구성의 핵심 구성 요소는 다음과 같습니다.
targetGroupArn: 기본 대상 그룹(blue 서비스 개정판)의 ARN.alternateTargetGroupArn: 대체 대상 그룹(green 서비스 개정판)의 ARN.productionListenerRule: 프로덕션 트래픽용 리스너 규칙의 ARN.roleArn: Amazon ECS가 Elastic Load Balancing 리소스를 관리할 수 있게 하는 역할의 ARN.strategy: 블루/그린 배포를 활성화하려면BLUE_GREEN으로 설정.bakeTimeInMinutes: 프로덕션 트래픽이 전환된 후 blue와 green 서비스 개정판이 동시에 실행되는 기간.TestListenerRule: 테스트 트래픽용 리스너 규칙의 ARN. 선택적 매개변수입니다.
{
"loadBalancers": [
{
"targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/primary-target-group/abcdef123456",
"containerName": "container-name",
"containerPort": 80,
"advancedConfiguration": {
"alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/alternate-target-group/ghijkl789012",
"productionListenerRule": "arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/load-balancer-name/abcdef123456/listener/ghijkl789012/rule/mnopqr345678",
"roleArn": "arn:aws:iam::123456789012:role/ecs-elb-role"
}
}
],
"deploymentConfiguration": {
"strategy": "BLUE_GREEN",
"maximumPercent": 200,
"minimumHealthyPercent": 100,
"bakeTimeInMinutes": 5
}
}
배포 중 트래픽 흐름
Elastic Load Balancing을 사용하는 블루/그린 배포 중 트래픽은 시스템을 통해 다음과 같이 흐릅니다.
- 초기 상태: 모든 프로덕션 트래픽이 기본 대상 그룹(blue 서비스 개정판)으로 라우팅됩니다.
- Green 서비스 개정판 배포: Amazon ECS가 새 작업을 배포하고 대체 대상 그룹에 등록합니다.
- 테스트 트래픽: 테스트 리스너가 구성되면 테스트 트래픽이 대체 대상 그룹으로 라우팅되어 green 서비스 개정판을 검증합니다.
- 프로덕션 트래픽 전환: Amazon ECS가 프로덕션 리스너 규칙을 업데이트하여 트래픽을 대체 대상 그룹(green 서비스 개정판)으로 라우팅합니다.
- 베이크 타임(Bake time): 프로덕션 트래픽이 전환된 후 blue와 green 서비스 개정판이 동시에 실행되는 기간.
- 완료: 성공적인 배포 후 blue 서비스 개정판이 종료됩니다.
배포 중 문제가 감지되면 Amazon ECS는 트래픽을 기본 대상 그룹(blue 서비스 개정판)으로 다시 라우팅하여 자동으로 롤백할 수 있습니다.