| GaonIT Cloud — 호스팅 & 클라우드
가온IT

크로스리전 DR(자동 페일오버)

개발자가 사랑하는 호스팅 & 클라우드. 지금 바로 시작하세요.

솔루션DR / 고가용성요금: 별도문의

크로스리전 DR (자동 페일오버)

두 개 이상의 리전에 중복 인프라를 구성하고, 장애 시 자동 라우팅 전환으로 RTO/RPO 목표를 충족합니다. 데이터 복제, 라우팅, 무결성, 복구/페일보백까지 표준 운영 방법론을 제공합니다.

🎯 목표치(RTO/RPO)
권장 기준 — RTO 5~15분, RPO 0~5분(워크로드 의존)
* 저지연 Active-Active는 RTO≈0, RPO≈0 가능(비용 증가).
🧭 배치 모델
  • Active-Active: 두 리전 동시 처리, 충돌 해결/세션 공유 필요
  • Active-Passive: 주 리전 활성, DR 리전 대기(저비용)
🔄 자동 전환
헬스체크 실패 시 DNS/글로벌 LB/Anycast 중 하나로 자동 페일오버, 서킷브레이커/쿨다운 반영.
🛡️ 데이터 보호
동기/반동기/비동기 복제를 조합하고, 스냅샷/Write-Ahead Log 전송으로 무결성 확보.
표준 참조 아키텍처(예)
계층 DR 구성 설명
Global Entry DNS 기반 GSLB 또는 글로벌 LB 헬스체크/가중치/지리 라우팅, TTL 단축
Edge DDoS 보호(프록시) 레이어7/4 보호, 오리진 다중화
App/API 2리전 배포 컨테이너/서버리스, 이미지 동일성 보장
State(세션) 외부 스토어 Redis/Memcached, 세션 스티키 또는 토큰화
DB 주-대 복제 반동기/비동기, 지연/스플릿브레인 통제
Storage 크로스리전 복제 오브젝트/스냅샷/증분 백업
데이터 복제 옵션
유형 모드 RPO/RTO 특성 비고
Relational(DB) 반동기/비동기 RPO 분 단위, RTO 분 단위 세미싱크로 손실 최소화, 지연 증가
Redis 비동기 복제 RPO 수 초~분 쓰기 손실 허용 범위 설계
오브젝트 크로스리전 백그라운드 복제 RPO 수 분 버전닝/삭제마커로 보호
블록/스냅샷 증분 전송 RPO 스케줄 의존 빈로그/아카이브 로그 병행
RTO/RPO 계산기(간이)
* 결과는 개략치입니다. 네트워크/프로토콜 오버헤드, 지연, 압축/암호화에 따라 달라질 수 있습니다.
예상 RPO
-
예상 RTO
-
권장 설정 요약
  • DB: 세미싱크 + 커밋확인 대기시간 상한, 수동 승격 방지 락
  • 스토리지: 버전닝 + 크로스리전 복제 + 삭제보존
  • DNS: 헬스체크 2중화, TTL ≤ 30초(사용자 기반 고려)
  • LB: 지연/오류율 기반 가중치 자동 조정
라우팅/페일오버 방식 비교
방식 장점 주의 적합 시나리오
DNS 기반 GSLB 광범위, 단순, 비용 효율 TTL/캐시 영향, 일부 클라 갱신 지연 웹/모바일 다수, Active-Passive
글로벌 LB(HTTP/Anycast) 빠른 전환, 지연 기반 플랫폼 의존, 비용 증가 Active-Active API/웹
Anycast+BGP 네트워크 레벨 즉시성 운영 난이도 높음 게임/저지연, L4 서비스
무결성/격리(스플릿브레인 방지)
격리(Fencing) — 장애 리전 쓰기 차단(STONITH/쿼럼 락).
재가동 보호 — 페일오버 후 이전 리전 자동 동기화 완료 전 쓰기 금지.
트랜잭션 로그 — WAL/binlog 재생 시점 기준 복귀.
키/세션 — 토큰화로 스테이트 최소화, TTL 조정.
시간 동기 — NTP/PTP 다중원, 드리프트 모니터링.
변경관리 — IaC + PR 리뷰, 배포 드리프트 감지.
복구/페일보백 런북(요약)
  1. 장애 감지(오류율/헬스체크 연속 실패 N회) → 자동 페일오버 발동
  2. 주 리전 쓰기 차단(Fencing) 및 알림
  3. DR 리전 승격(읽기→읽기/쓰기)
  4. 트래픽 전환 상태 모니터링(RPS/지연/오류율)
  5. 원인 분석/조치 후 재동기화 완료 확인
  6. 시간 창 확보 후 점진적 페일보백 진행(가중치 10%→50%→100%)
# Runbook (pseudo)
if health.failures >= 3 and error_rate > threshold:
  fence(primary)
  promote(secondary)
  gslb.point_to(secondary)
  notify("Failover completed")
# Failback when primary healthy and catch-up done
if primary.sync_state == "in_sync" and window.ok:
  gslb.weighted_shift(primary, steps=[10,50,100])
  demote(secondary)
  notify("Failback completed")
관측/알림 포인트
항목 범위 알림 기준(예)
헬스체크 실패 LB/GSLB 연속 3회, 30초 내
오류율/지연 리전/서비스 5xx > 2%, p95 > 2배
복제 지연 DB/Redis > 60초 지속 5분
스토리지 복제 큐 오브젝트/스냅샷 적체 > 임계
구성 드리프트 IaC 검출 즉시
DR 테스트/드릴 플래너
(여기에 드릴 체크리스트가 생성됩니다)
자동 페일오버 스니펫(예: DNS API)
#!/usr/bin/env bash
set -euo pipefail
HEALTH=$(curl -sS https://primary.example.com/health || echo fail)
if [[ "$HEALTH" != "ok" ]]; then
  echo "Primary down. Switching..."
  curl -X POST https://dns.api/records -d '{
    "name":"api.example.com", "answers":["203.0.113.20"], "ttl":20
  }'
fi
IaC(요약 Terraform 예)
# 두 리전 동일 스택 배포(요약)
module "app_primary" { source = "./modules/app" region = "kr-seoul" }
module "app_dr"      { source = "./modules/app" region = "jp-tokyo" }
# GSLB 레코드
resource "gslb_record" "api" {
  name = "api.example.com"
  pool = [{target=module.app_primary.lb, weight=90},{target=module.app_dr.lb, weight=10}]
  health_check = { path="/health", interval=10, failures=3 }
}
요금 안내
요금: 별도문의

컴퓨트(2리전), 스토리지 복제/보관, 글로벌 라우팅/DNS, 트래픽(Egress), 모니터링/알림, 테스트 지원 범위에 따라 산정됩니다.

자주 묻는 질문
RTO/RPO를 낮추려면 무엇이 핵심인가요?
저지연 링크/대역폭, 세미싱크 DB, 외부 세션 저장, 빠른 라우팅 전환(GSLB/LB), 자동화 런북이 핵심입니다.
데이터 유실 방지 대책은?
세미싱크/커밋확인, 주 리전 Fencing, WAL/binlog 재생, 오브젝트 버전닝/삭제보존으로 보호합니다.
시험 전환을 자주 해도 되나요?
권장합니다. 월간 소규모, 분기 대규모 게임데이로 운영 숙련도를 유지합니다.
장애에도 멈추지 않는 서비스, 지금 준비하세요
현재 아키텍처와 목표치(RTO/RPO)를 알려주시면 맞춤 설계를 제안드립니다.