인프라 구성 고급

지원 버전: EKS 1.29+, Terraform 1.5+, AWS Provider 5.x 마지막 업데이트: 2026년 2월 23일

< 이전: Terraform 3-Layer 인프라 | 목차 | 다음: CI 파이프라인 >


이 문서에서는 두 개의 싱글존 EKS 클러스터(Blue/Green)를 공유 NLB(Network Load Balancer)로 연결하여 트래픽을 분배하고, 장애 발생 시 자동으로 트래픽을 전환하는 방법을 설명합니다.

목차


블루/그린 아키텍처 개요

설계 원칙

전통적인 멀티 AZ 클러스터 대신 두 개의 싱글존 클러스터를 운영하는 이유:

관점
멀티 AZ 클러스터
블루/그린 싱글존

데이터 로컬리티

Cross-AZ 트래픽 발생

동일 AZ 내 통신

비용

Cross-AZ 데이터 전송 비용

AZ 내 무료

장애 격리

AZ 장애 시 부분 영향

클러스터 단위 완전 격리

업그레이드

롤링 업데이트 복잡

클러스터 단위 전환

복잡도

단일 클러스터 관리

2개 클러스터 동기화 필요

아키텍처 다이어그램

NLB 블루/그린 아키텍처

싱글존 설계의 이점

  1. 데이터 로컬리티 최적화

    • StatefulSet의 Pod와 PersistentVolume이 동일 AZ에 위치

    • EBS 볼륨 접근 지연 시간 최소화

    • Cross-AZ 데이터 전송 비용 제거

  2. 비용 최적화

    • AZ 간 데이터 전송 비용: $0.01/GB (양방향)

    • 월 10TB 트래픽 기준: 약 $200 절감

  3. 장애 격리

    • AZ 장애 시 해당 클러스터만 영향

    • 다른 클러스터로 100% 트래픽 전환 가능

    • 복구 시간 최소화 (DNS TTL 또는 NLB 가중치 조정)

  4. 간편한 클러스터 업그레이드

    • Green 클러스터 먼저 업그레이드

    • 검증 후 Blue 클러스터 업그레이드

    • 문제 발생 시 이전 버전 클러스터로 즉시 전환


NLB 가중치 타겟 그룹

Terraform 구성 - NLB 및 타겟 그룹

변수 정의

동적 가중치 조정

트래픽 가중치를 변경하려면 tfvars 파일을 수정하고 적용합니다.

타겟 등록 자동화

Ingress Controller(예: AWS Load Balancer Controller)를 사용하면 타겟 등록이 자동화됩니다. 수동으로 타겟을 등록하려면:

출력


DNS 기반 트래픽 전환

NLB 가중치와 함께 DNS 레벨에서도 트래픽을 제어할 수 있습니다.

Route53 가중치 라우팅

헬스 체크 기반 Failover

TTL 전략

DNS 기반 트래픽 전환의 속도는 TTL에 의해 결정됩니다.

TTL 값
전환 시간
적용 시나리오

60초

~1분

빠른 장애 조치 필요

300초

~5분

일반 운영

3600초

~1시간

안정적 운영, DNS 쿼리 비용 절감


데이터 노드 배치

Zone Affinity 설계 개념

데이터 집약적 워크로드(데이터베이스, 캐시, 메시지 큐)는 스토리지와 동일한 AZ에 배치해야 합니다.

참고: 실제 Kubernetes 리소스(NodePool, Pod)의 배포는 ArgoCD를 통한 GitOps로 관리합니다. 이 섹션에서는 설계 개념과 YAML 예시를 제공합니다.

TopologySpreadConstraints

Pod를 특정 Zone에 분산하거나 고정합니다.

Zone별 StorageClass

Pod Affinity/Anti-Affinity

StatefulSet with VolumeClaimTemplates

NodePool Zone Affinity (EKS Auto Mode)

EKS Auto Mode에서는 NodePool이 자동으로 노드를 프로비저닝합니다. Zone을 제한하려면 NodePool 설정이 필요합니다.


장애 조치 자동화

CloudWatch 알람 설정

Lambda 자동 장애 조치

Lambda 리소스 정의

EventBridge 자동화 규칙

수동 전환 Runbook

자동 장애 조치가 실패하거나 계획된 유지보수 시 수동으로 전환합니다.

장애 조치 절차 (Runbook)

자동 장애 조치 흐름

수동 장애 조치 체크리스트


다음 단계

이 문서를 완료한 후 다음을 참조하세요:


참고 자료

마지막 업데이트