[AWS] DR TrainingDay
Reliability & DR Immersion Day
WWPS AWS date : 2022.12.15.
개요
DevOps = 개발자, 운영 혼자서는 안된다. 같이 하자.
HA = 지속적인 운영(A-A) DR = 백업에 대한 복구(A-S)
DR은 기술 부패의 관점에서 접근하여야 할까?
Well-Architected 프레임워크
- Sustainability 추가!
- Performance effeiciency
- security
- reliability
- cost optimisation
- operational excellence
Module 1 : AWS의 재해복구
이론
- 장애는 언제나 발생할 수 있다
- 이제는 동네북 카카오. HA:데이터 센터 3중화 DR:멀티 클라우드 + 원격지 DR
- 그래서HA만하면 되지 왜 DR?
애플리케이션상의 수평적 확장 : LB이용
로드밸런서
RDS 관리형 데이터베이스
- Aurora의 A-s
- 기본적으로 마스터-리드 리플리카로 구성
- 마스터가 무너지면 리플리카가 마스터로 프로모션
- A-S지만 S가 쉬고 있는게 아니라 평소에 리드 리플리카로 구성 가능
- 기본적으로 3개의 리젼에 6카피 뜸
- 짧은 복제 지연시간 : 1초 이내 복제
- 빠른 복구 : 1분 이내 read-write승격 가능.
DynamoDB 글로벌테이블
- 기본적으로 모든 리전이 Read-Write
EKS - 컨테이너 기반 아키텍쳐
- 기본적으로 AZ 3개를 물고 들어감
WarmStandby - 데이터 싱크된 인스턴스를 복제함. Pilot - 스냅만 뜸.
- 웜스탠바이
- 수분내의 RTO/RPO
- 핵심 비즈니스 서비스
- 재해 복구 리전에서 축소된 용량으로 서비스
- 핫스탠바이(리전)
- RPO/RTO 0
실습 : backup and restore
구성 : 미동부에 프라이머리, 미서부에 세컨더리
- 서비스. ec2, s3, rds로 구성
백업 도구
- ec2, rds : aws backup 사용
- s3 : cross-region replication
순서
- 복제 후 살리기
Cross Region Copy(CR)을 이용해서 복제
Snapshot을 다른 리젼으로 카피
카피된 스냅을 올려 서비스 복구
S3 복제
- s3내의 소스 버킷에서 타겟 버킷 설정하여 복제 가능
ec2, rds
- 스냅을 뜨고 다른 리전에 올림
- source region에서 스냅 뜸
- 스냅을 target으로 복사
- region을 타겟으로 변경
- 타겟에서 스냅을 복원
-> 이 시점에서 메인과 둘다 서비스가 올라옴
failover
- 소스 쪽 프론트 서비스를 중단함 -> s3의 퍼블릭 접근을 막고, static site service 확인해보면 메인 쪽이 털렸으므로 primay를 통해 접근됨
Module 2 Amazon Aurora global Database: Use cases
이론
실습
- ami 떠서 dr로 던짐
- 메인 s3 죽임
- dr의 rds를 read/write로 프로모션
- Manual unplanned failover (“detach and promote”) => standby를 클러스터에서 때낸다는 것은 자기가 마스터가 된다는 것
- 복제한 ami에서 ec2 올리기
- rds의 엔드포인트가 변했으므로 ec2를 올릴 때 db endpoint를 수정할 수 있는 데이터 입력
- userdata : ec2러닝시 초기화 스크립트. DB ENDPOINT 땡겨서 was가 보는 db endpoint에 넣기
#!/bin/bashsudo su ec2-userexport AWS_DEFAULT_REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | python -c "import json,sys; print json.loads(sys.stdin.read())['region']")export DATABASE=$(aws rds describe-db-clusters --region $AWS_DEFAULT_REGION --db-cluster-identifier pilot-secondary --query 'DBClusters[*].[Endpoint]' --output text)sudo bash -c "cat >/home/ec2-user/unishopcfg.sh" <<EOF#!/bin/bashexport DB_ENDPOINT=$DATABASEEOFsudo systemctl restart unishop
Module 3 Warm Standby
이론
실습
primary http://warm-primary-uibucket-qqywk3ew7sje.s3-website-us-east-1.amazonaws.com secondary http://warm-secondary-uibucket-qdikjp4rf1xe.s3-website-us-west-1.amazonaws.com
Module 4 Hot Standby
이론
- 기본적으로 다 두개.
- S3도 두개. 이를 위해 클라우드 프론트에서 묶음
- RDS도 두개
- 다이나모는 글로벌 쓰기 가능
- EC2에서는 설정을 좀 바꿔주긴 해야 한다.
실습
- 프론트 : 클라우드프론트로 정적 페이지 두개를 그룹으로 묶어서 서비스
- RDS : DR 쪽을 메인으로 프로모션
- EC2 : 프로모션된 DB 접속 정보를 수정. master를 새롭게 프로모션된 DB로 사용