【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 9: AWS 기초 : RDS + Aurora + ElastiCache

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 10: Route 53

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 11: 클래식 솔루션 아키텍처 토론

 


124. S3 보안 및 버킷 정책

S3 Security 

사용자 기반 보안 

IAM 정책- IAM 사용자는 IAM 정책을 가지고 있는데 이들은 정책은 어떤 API 호출이 허용될지를 결정한다.

만약 유저가 IAM 정책을 통해 Amazon S3 버킷으로의 액세스 방법을 승인받게 되면 실행이 가능해진다 .

 

리소스 기반 보안 

S3 콘솔에서 설정 가능한 버킷 전반의 규칙이며 S3버킷에서 보안 주체가 무엇을 할 수 있는지 혹은 할 수 없는지를 결정하는 정책이다 .

이를 통해 교차 계정 액세스가 활성화 된다.  cross account 

 

객체 레벨에서의 액세스 규칙을 설정 

Object Access Control List (ACL ) - finer gain 

 

버킷 ACL 방식 

Bucket Access control List (ACL) - less common 

 

IAM 유저가 S3 객체에 접근하는 경우 

  •  IAM 퍼미션이 있거나 리소스 정책이 허락하거나
  • 그리고 명시적 거부가 없는 경우 (there's no explicit deny) 

S3 버킷 정책

Json 형식이다. 

resources: 버킷 또는 객체 

action: api가 허가 및 거부를 하도록 설정한다 .

effect: 허용/ 거부

principal : 해당 S3 버킷의 정책을 적용할 계정 혹은 유저이다. 

 

Use S3 bucket for policy to: 

버킷에 퍼블릭 액세스 권한을 승인하거나 

업로드 시점에 객체를 암호화시키거나 ( force objects to be encrypted at upload)

다른 계정에 액세스 권한을 주는 경우 

 

Bucket setting for block public access

객체가 퍼블릭 액세스 되는 것을 차단하는 방법

  • new access control lists (ACLs)
  • any access control lists(ACLs)
  • new public bucket or access point policies 

퍼블릭 버킷이나 액세스 포인트 정책을 통해 버킷과 객체를 향한 퍼블릭 및 교차 계정 액세스를 막을 수 있다. 

 

S3 security - other

Networking

네트워킹에서는 VPC 엔드 포인트로 S3에 비공개 액세스가 가능하다.

( vpc에 ec2 인스턴스가 있고 인터넷 액세스가 없는 경우 VPC 엔드 포인트를 통해 비공개로 s3에 액세스 할 수 있다.) 

 

Logging and Audit

S3 액세스 로그를 사용하면 다른 S3 버킷에 해당 로그가 저장된다. 

Api 호출은 CloudTrail 에 로깅 

 

사용자 보안

MFA 삭제

특정 버전 객체를 버킷에서 삭제하고 싶은 경우에 MFA 삭제를 활성화하면 된다. mfa를 하고 난 후 삭제할 수 있다.

사전 서명된 URL

한정된 시간 동안만 유효하다. ( 프리미엄 영상을 구매하고 다운로드 하는 경우 ) 

 

특정 사용자가 특정 파일에 액세스 하는 경우에 관련된 문제가 나오면 사전 서명된 URL을 생각하면 된다. 

 


125. S3 보안 및 버킷 정책 실습

Amazon S3 콘솔을 사용하여 버킷 정책 추가 - Amazon Simple Storage Service

 

Amazon S3 콘솔을 사용하여 버킷 정책 추가 - Amazon Simple Storage Service

편의상 버킷 정책 편집(Edit bucket policy) 페이지는 정책(Policy) 텍스트 필드 위에 현재 버킷의 버킷 ARN(Bucket ARN)(Amazon 리소스 이름)을 표시합니다. AWS 정책 생성기 페이지의 명령문에 사용하기 위해

docs.aws.amazon.com

 

버킷 정책 생성기를 이용할 수 있다. 

 


126. S3 웹사이트

S3 Websites

s3에서 정적 웹사이트를 호스팅 할 수 있고 www에서 접근이 가능하도록 허용하며 웹사이트 URL 도 아주 간단하다.

 

웹사이트 URL 형태는 

  •  <bucket-name>.s3-website-<AWS-region>.amazonaws.com
  • <bucket-name>.s3-website.<AWS-region>.amazonaws.com

이다. 

 

웹사이트를 활성화했으나 설정된 버킷 정책이 없을 때는 해당 버킷에 대한 공개 액세스가 가능하며 이때는 403 Forbidden 오류가 발생한다.

 

Access 에 

bucket and objects not public 이기 때문 

public으로 바꾸려면? 

1. Block all public access 상자 체크를 해제 

2. bucket policy 로 가서 공개 액세스를 허용하는 버킷 정책을 작성한다 .

 

 


127. S3 버전 관리

Amazon S3 - Versioning 

s3 파일을 버저닝 하려면 먼저 버킷 레벨에서 활성화가 되어야한다. 

같은 키로 파일 버전을 다시 업로드 하는 경우에 기존 파일을 덮어쓰게 되는데 사실은 덮어쓰는게 아니라 해당 파일의 새로운 버전을 생성하는 것이다 .

same key overwrite will increment the "version" : 1,2,3 

 

버킷을 버저닝하는 것이 최고

모든 파일 버전을 어느 정도 유지한다. 

  •  원치 않은 삭제로부터 보호
  • 이전 버전을 복원할 수 있음 ( Easy roll back to previous version) 

Notes

버저닝을 활성화하기 전에 버전 관리 되지 않은 파일은 null 버전이 된다. 

버킷에서 버저닝을 중단하면 이전 버전을 삭제하는 것이 아니라 이후의 파일이 버전을 할당받지 못하도록 한다 .

Suspending versioning does not delete the previous versions


128. S3 버전 관리 실습

properties 탭에가서 버킷 버전닝을 활성화 한다. 

 

versionID 탭이 생긴다. 

활성화 전에 있던 파일의 version ID는 null 이다. 

 

삭제시 delete marker 가 생성된다 .


129. S3 복제 노트 

Amazon S3 - Replication (Notes) 

복제를 활성화한 후에는 새로운 객체만 복제 대상이 된다. 

기존의 객체를 복제하려면 S3 배치 복제 기능을 사용해야한다. ( S3 Batch Replication)

기존 객체 부터 복제에 실패한 객체까지 복제할 수 있는 기능이다. 

 

삭제 마커도 복제할 수 있다. 

버전 ID 로 삭제하는 경우 버전 ID는 복제되지 않는다.

 

체이닝 복제는 불가능함

1번 버킷이 2번 버킷에 복제 되어 있고, 

2번 버킷이 3번 버킷에 복제돼 있다고 해서 1번 버킷을 객체가 3번 버킷으로 복제 되지 않는다 .


130. S3 복제 실습

1. 버킷 생성 - 버저닝 활성화 해야한다. 

2. 다시 버킷 생성 - 버저닝  활서오하 

 

오리진 버킷에서

파일업로드 하기 

복제 규치 추가 하기

대상 버킷 추가하기 

 

(대상 버킷의 소스 버킷에서 복제 활성화 이전의 객체를 복제하려면 S3 배치 작업 처리를 실행해야한다 )

 

새로운 파일 업로드 부터 복제 버킷에 업로드 된다 .

 

중요한 설정 

Management 에서 복제 규칙을 선택하고 규칙 편집으로 들어가 후 

삭제 마커 복제 옵션이 존재한다.

기본적으로 삭제마커는 복제 되지 않지만 이를 설정하는 기능이 있다.

삭제 마커도 복제 된다. 

 

오리진 버킷에서 파일을 삭제해도 복제 버켓에서 파일이 삭제되지 않는다. 

삭제 마커를 복제하는거지 삭제하는 행위를 복제하지 않는다 .

 


131. S3 스토리지 클래스 

S3 스토리지 클래스 

 

Glacier 에는 

Glacier Instant Retrieval

Glacier Flexible Retruevak

Glacier Deep Archive 

 

s3에서 객체를 생성할때 클래스를 선택할 수도 있고 수동으로 스토리지 클래스를 수정할 수도 있다.

 

S3 수명 주기 구성을 사용해 스토리지 클래스 간에 객체를 자동으로 이동할 수 있다. 

 

S3 Durability and Availability

Durability: 

내구성으로 만년에 한 번 객체 손실이 예상된다 .

모든 스토리지 클래스의 내구성은 같다 .

 

Availability:

 가용성은 서비스가 얼마나 용이하게 제공되는지를 의미하며 스토리지 클래스에 따라 다르다 .

1년에 53분 동안은 서비스를 사용할 수 없다는 뜻 

99.99%

 

S3 standard - General Purpose

99.99 가용성 

빈번한 액세스 

낮은 레이턴시 , 높은 처리량

두개의 기능 장애를 동시에 버틸 수 있음. ( sustain 2 concurrent facility failures) 

 

빅데이터 분석, 모바일, 게임 어플리케이션, 콘텐츠 배포 

 

S3 Infrequent Access

자주 액새스 하지는 않지만 필요한 경우 빠르게 액세스해야 하는 데이터 

스탠다드 보다는 비용이 적다

 

검색 비용이 쌔다 . 

 

One zone-IA 는  단일 az에서는 높은 내구성을 갖지만 Az 가 파괴된 경우 데이터를 잃게 된다 .

가용성은 99.5% 

 

온프레미스 데이터를 2차 백업하거나 재생성 가능한 데이터를 저장하는데 사용된다 .

 

Glacier Storage Classes

콜드 스토리지 

아카이빙과 백업을 위한 저비용 객체 스토리지 

 

Glacier Instant Retrieval

밀리초 단위로 검색이 가능 

분기에 한번 액세스 하는데이터 

최소 보관 기간이 90일

 

Glacier Flexible Retrieval 

Expedited 1~5min

Standard 3~5 hour

bulk 5~12 hour ,free

최소 보관 기간 90일 

 

Glacier Deep Archive

standard 12 hour

bulk 48 hour

가장 저렴 

180 일 

 

S3 Intelligent- Tiering 

사용 패턴에 따라 액세스된 티어 간에 객체를 이동할 수 있게 해준다 .

소액의 월별 모니터링 비용과 티어링 비용 

 

frequent acces tier : default

infrequent access tier : 30days

archive instant access tier: 90 days

archive access tier : 90~700 + days 이상 액세스 하지 않은 객체에 구성 

 

알아서 객체를 스토리지 티어간에 옮긴다. 


132. S3 스토리지 클래스 실습 

버킷 생성

객체 업로드 시 스토리지 클래스 추가 옵션이 나온다. 

 

glacier 에 업로드 하기 시작하면 해당 파일은 회수하지 않는 한 볼 수 없게끔 즉시 변경된다. 

파일 열람 접근을 위해서는 먼저 복원을 해야한다. 

 

객체 스토리지 클래스를 수정할 수 있다.


Quiz 9: Amazon S3 퀴즈 

1. 25GB 크기의 파일을 S3에 업로드하려 시도 중이지만, 오류가 발생하고 있습니다. 이 경우, 가능성이 있는 원인은 무엇일까요?

S3 객체 파일의 크기제한은 5TB 이다. 

100mb 보다 파일이 큰 경우 멀티파트 업로드가 권장된다. 

파일 크기가 100MB가 넘는 경우에는 멀티파트 업로드가 권장됩니다.

 

2. dev라는 이름의 새로운 S3 버킷을 생성하려 하던 중 오류가 발생했습니다. S3 버킷이 생성된 적이 없는 새로운 AWS 계정을 사용 중입니다. 이 경우, 가능성이 있는 원인은 무엇일까요?

S3 버킷 이름은 전역에서 고유해야함.

 

3. 이미 많은 파일을 포함하고 있는 S3 버킷에 버전 관리를 활성화한 상태입니다. 기존의 파일은 다음 중 어떤 버전을 가지고 있을까요?

4. 여러분의 고객은 S3에 있는 파일을 암호화하되, 암호화 키를 AWS에 저장하지 않고 직접 관리하기를 원하고 있습니다. 이에 여러분은 고객에게 ............................. 를 추천했습니다.

SSE-C을 사용하면, AWS에서 암호화가 일어나지만 당사자가 암호화 키를 전적으로 관리하게 됩니다.

Server-Side Encryption 

 

암호화 주체, 암호화 키 저장 장소, 암호화키 관리 주체 

5.여러분이 근무 중인 기업이 S3에 저장된 자신들의 데이터를 암호화하고자 합니다. 암호화 키가 AWS에 저장되고 관리되더라도 문제가 없으나, 암호화 키에 대한 교체 정책은 기업이 직접 관리하기를 원하고 있습니다. 이에 여러분은 고객에게 ............................. 를 추천했습니다.

SSE-KMS를 사용하면, AWS에서 암호화가 일어나고 AWS가 암호화 키를 관리하게 되지만, 암호화 키의 교체 정책은 당사자가 전적으로 관리하게 됩니다. AWS에 저장된 암호화 키

 

6. 기업은 AWS의 암호화 프로세스를 신뢰하지 않으며, 애플리케이션 내에서 프로세스가 이뤄지기를 원하고 있습니다. 이에 여러분은 고객에게 ............................. 를 추천했습니다.

 

클라이언트 측 암호화를 사용하면, 암호화를 직접 수행해야 하며 당사자가 암호화 키를 전적으로 관리하게 됩니다. 암호화를 여러분이 직접 수행하고 암호화된 데이터를 AWS로 보냅니다. AWS는 여러분의 암호화 키에 대해 알지 못하며, 데이터를 복호화할 수 없습니다.

 

7. S3 버킷 정책을 업데이트해 IAM 사용자들이 S3 버킷 내의 파일을 읽기/쓰기할 수 있도록 허가했으나, 한 명의 사용자가 PutObject  API 호출을 수행할 수 없다며 불만을 토로하고 있습니다. 이 경우, 가능성이 있는 원인은 무엇일까요?

IAM 정책 내의 명시적인 부인(DENY)은 S3 버킷 정책보다 우선적으로 고려됩니다.

 

8. S3 버킷으로부터 파일을 로딩해 오는 웹사이트가 있습니다. 파일의 URL을 Chrome 브라우저에 직접 입력했을 때에는 정상적으로 작동했으나, 이 웹사이트에서 파일을 로딩하려 할 때는 작동이 되지 않습니다. 무엇이 문제일까요?

 

교차 오리진 리소스 공유(CORS)는 한 도메인에서 로딩되는 클라이언트 웹 애플리케이션이 다른 도메인에 있는 리소스와 상호작용하는 방식을 정의합니다. CORS에 대한 더 많은 정보는 다음 URL을 참조하세요: https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

 

CORS

Cross Origin Resource Sharing

 

【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 9: AWS 기초 : RDS + Aurora + ElastiCache

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 10: Route 53


117. 솔루션 아키텍처 토론 개요

이 파트에서 여러 예시를 배우고 솔루션 아키텍처로서 배워야하는 자질을 알아볼 것이다. 

 

WhatIsTheTime.com

MyClothes.com

MyWordPress.com

Instatiating applications quickly

Beanstalk

 


118. WhatIsTheTime.com

사람들에게 시간 알려주는 사이트 

db 필요 없음. 

다운타임을 축소하고 싶음. 

다운타임 축소를 위해 수평, 수직 확장할 필요 있음. 

 

1. 사용자가 늘어나서 인스턴스를 t2.micro에서 m5.large 로 교체한다.

교체하는 기간에 다운 타임 발생

EIP 존재

2. 수평 확장으로 인스턴스를 늘림.

하지만 EIP 갯수도 늘어난다. 관리 어려움. 

 

다른 방식으로 해보자!

 eip를 제거하고 route 53을 활용한다. 

a record, ttl 1 hour 로 고정 

인스턴스 제거하는 과정에서 ttl 1시간 캐시되므로 

특정 유저는 접속 안됨 

 

로드 밸런서를 이용하자 !

ELB 는 상태 체크 가능하다. (보안 그룹 이용) 

ELB의 ip 주소가 지속적으로 바뀌기 때문에 별칭 레코드를 사용한다. 

 

수동으로 인스턴스 관리 하는 것보다 

ASG를 이용하자 

 

리전에 지진이 발생한다면 ? 

 

다중 AZ 를 사용

 

비용 절감을 위해 예약 인스턴스를 사용한다

ASG 의 최소 용량은 항상 돌아가야하니까 ( 최소한의 예약인스턴스 사용)

 

 

Route 53의 ttl 정책 때문에 항상 a레코드 타입을 쓸 수는 없다.  alias 존재 이유


119. MyClothes.com

Stateful Web App: MyClothes.com

 이번엔 Stateful 웹 앱인 myClothes.com 을 예로 들어보자. 

옷을 살 수 있고,  장바구니가 있고 

동시에 수백 명의 사용자가 있다. 

수평 확장을 하고 싶으며 앱을 stateless로 유지하게 해야한다. 

사용자는 장바구니를 잃어버리면 안된다. 

또한 주소 등의 사용자 정보를 효과적으로 보관하고 어디에서나 접근할 수 있는 데이터베이스에 저장할 거다.

 

ASG 사용 

ELB로 트래픽을 각 ASG 로 보낸다고 가정하자

A 인스턴스에서 장바구니를 만들고 

다음 연결에서 B인스턴스에 연결되면 장바구니가 사라진다.

 

사용자가 같은 ASG 의 인스턴스에 연결되게 할려면 세션을 켜야한다. 

 

ELB session 사용

고착도 , 세션 밀접성을 도입해야한다. 

Stickiness 을 설정하면 ELB에서 특정한 인스턴스로만 접근한다. 

세션을 사용해도 인스턴스가 종료되면 장바구니를 잃어버리게 된다. ㄴ

 

Introduce User Cookie 

사용자 쿠키를 사용해보자

만약 장바구니에 대한 정보를 사용자가 지니고 있다면? 

인스턴스들은 장바구니에 대한 정보를 알 필요가 없다. -> stateless 하게 된다. 

사용자 , 클라이언트에서 계속 인증하니까 

하지만 데이터를 전송할 때마다 사용자에 대한 정보를 보내므로 HTTP 요청이 무거워진다. 

또한 전송과정에서 사용자의 쿠키가 변경되면 보안 위험도 존재한다 .

따라서 EC2 인스턴스가 사용자 쿠키 내용을 점검해야한다. 

Cookie must be validated 

전체 쿠키의 크기는 4kb 이하까지만 가능해 쿠키 내에는 매우 작은 정보만 저장 가능 

대량의 셋은 불가하다. 

 

Introduce Server Session 

전체 장바구를 웹 쿠키로 보내는 대신에 단순 세션 ID 만 보내는 것이다.

백그라운드에는 ElastiCache 클러스터가 존재한다. 

세션 ID를 보낼 때 EC2 인스턴스에게 '이 물건을 장바구니에 추가할 거야'라고 말한다. 

EC2 인스턴스는 장바구니 내용을 ElastiCache 에 추가하고 이 장바구니 내용을 불러올 수 있는 ID가 바로 세션 ID 가 된다.  ( 사용자 세션 ID를 EC2 를 걸쳐 ElastiCache 에 저장하고, EC2 에 작업이 생길 때마다 ElastiCache 에서 세션 ID를 찾는다.) 

ElastiCache 는 1천분의 1초 이하의 성능을 가졌다. 따라서 이 모든 것이 매우 빠르게 진해오딤 .

세션 데이터는 DynamoDB에 저장한다. 

ElastiCache 내부를 수정할 수 없기 때문에 훨씬 안전하다. 

 

Storing User Data in a database

사용자 데이터를 RDS에 저장한다. 

RDS 는 인스턴스와 통신할 수 있으며 일종의 다중 AZ stateless 솔루션을 효과적으로 얻을 수 있다. 

 

Scaling Reads

사용자가 매우 많아졌다고 가정하자.

RDS 읽기 전용 복제본을 사용한다. (최대 5개의 replicas 가능) 

 

Scaling Reads (Alternative) - Write Through

EC2 인스턴스에서 데이터를 찾을때 먼저 elastiCache 를 확인한다. cache miss

데이터가 없으면 RDS 에 찾아보고 해당 데이터를 elastiCache에 캐싱한다 . cache hit 를 위해 

캐싱 했기 때문에 rds 상의 트래픽을 줄이고 동시에 성능을 높일 수 있다. 

 

Multi AZ - Survive disasters

다중 AZ ELB가 있다.

route 53 도 가용성이 높다. 

로드밸런서를 다중 AZ로 만든다 .

오토 스케일링 그룹도 다중 AZ 

RDS 역시 다중 AZ 

 

대기 복제본을 만드는 것도 방법이다. 

레디스를 사용한다며 ElastiCache도 다중 AZ 기능을 가짐.

 

철저한 보안그룹 

 

3 tier 아키텍처를 위한 팁

클라이언트, 웹, 데이터베이스 

 

ELB 고정 세션

웹 쿠키를 이용한 stateless 애플리케이션 

ElastiCache 

- 세션 저장 ( 또는 dynamodb 사용)

- RDS 캐싱 

- 다중 AZ

RDS

- 사용자 데이터 저장 

- 읽기 복제본 생성 

- 다중 az for DR

철저한 보안그룹 설정  


120. MyWordPress.com

완전히 확장 가능한 WordPress 웹 사이트 만들기 

사진을 업로드하고 보여주는 기능 

사용자 데이터, 콘텐츠는 mySql 에 저장된다. 

 

확장하고 싶다면 ? 

RDS를 Aurora 로 교체

다중 az, read replicas, 글로벌 데이터베이스 사용 가능 

 

Storing  images with EBS

EBS에 사진을 저장하는 경우 

ELB에서 다른 두개의 인스턴스와 각각 EBS가 연결되어있다면 

한쪽 EBS 만 사진을 갖는다 .

EBS 볼륨의 단점은 하나의 인스턴스만 있을 때는 잘 작동하지만 다중 AZ 또는 다중 인스턴스로 확장을 시작하면 문제가 생기기 시작한다 .

 

Storing images with EFS

EFS 는 네트워크 파일시스템 nfs 이다. 

EFS 드라이브에 접근하기 위해 각 AZ 에 ENI 를 생성한다. 

 

정리

Aurora Db를 이용하여 쉽게 다중 az 와 읽기 복제본을 생성한다. 

EBS 에 데이터를 저장 ( 단일 애플리케이션에 유리) 

Vs Storing data in EFS ( 분산 애플리케이션에 유리

 

EFS가 EBS 보다 비싸다.


121. 애플리케이션을 빠르게 인스턴스화 하기

Instantiating Application quickly

풀 스택을 실행하면 애플리케이션을 설치하고 데이터 삽입 및 복구하고 모든 내용을 구성한 다음 

애플리케이션을 실행하는데 매우 긴 시간이 걸린다.  어떻게 하면 더 빨리 할 수 있을까?

 

full stack ( EC2, EBS, RDS) 

클라우드의 이점을 활용하면 된다 .

 

EC2 Instances: 

1. Golden AMI 사용

애플리케이션과 OS 종속성(dependencies) 등 모든 것을 사전에 설치하고 그것으로부터 AMI를 생성한다. 

애플리케이션 ,OS 종속성 등을 재설치할 필요가 없다. 모든 것이 이미 설치된 상태에서 바로 실행된다. 

 

2. 사용자 데이터 부트스트래핑

인스턴스가 처음 시작될 때 구성하는 것

애플리케이션, OS 종속성 등을 설치하기 위해 부트스트래핑을 할 수 있다.

매우 느리다.

 

3. 하이브리드

Elastic BeanStalk  은 ami를 구성하고 사용자 데이터를 추가하는 방식

 

RDS Databases:

스냅샷으로부터 복구 

EBS Volumes:

스냅샷으로부터 복구


122. Beanstalk 개요

Developer problems on AWS 

인프라 관리, 코드 배포, db lb 에 대한 환경 구성, 스케일링 문제등

고려해야할 문제가 많다.

 

개발자는 코드만 신경 쓰게 하자.

 

Elastic Beanstalk - Overview

여러 aws 서비스로 구성된다. 

관리형 서비스 

  • 자동으로 용량 프로비저닝, 로드 밸런싱, 스케일링, 애플리케이션 상태 체크, 인스턴스 구성
  • 코드만 신경 쓰면된다.

여전히 각각의 구성 요소를 완전히 제어할 수 있다.

beanstalk은 하나의 인터페이스에 통합되어 있음. 

 

beanstalk 은 무료이지만 구성요소인 aws 서비스는 지불해야함. 

 

Elastic Beanstalk - Components 

Beanstalk의 구성요소는 애플리케이션으로 이루어져 있다. 

(환경, 버전, 구성 등) 

 

애플리케이션 버전 

애플리케이션 코드의 반복이다. 버전1, 버전2,.... 등이 있을 수 있다

 

애플리케이션 환경

특정 애플리케이션 버전을 실행하는 리소스의 모음이다.

환경 내에서는 한 번에 하나의 애플리케이션 버전만 존재할 수 있다.(onlt on application version at a time) 

환경 내에서 애플리케이션 버전을 버전 1에서 버전 2로 업데이트 할 수 있다. 

 

Beanstalk에서는 서로 다른 두개의 티어를 가질 수 있다. 

웹 서버 환경 티어작업자 환경 티어 

다양한 환경을 만들 수 있다. ( dev, test, prod 등)

 

 

애플리케이션을 생성하고 버전을 업로드하고 환경을 실행하고 그 후에는 환경 수명 주기를 관리한다. 

이를 반복한다. 

 

Beanstalk이 지원하는 언어 

Go, Java SE, Java with Tomcat .NET Core on Linux

.NET Core on Windows Server Node.js, PHP

Python, Ruby, Packer Builder Single Container Docker

Multi-container Docker Preconfigured Docker 등입니다

지원하는 언어가 없다면 사용자 지정 플랫폼을 만들 수 있는 고급 기능이 있다. 

 

beanstalk 에서는 거의 모든 것을 배포할 수 있다. 

 

Webserver Tier vs Worker Tier 

웹서버 티어와 작업wk티어는 무슨 뜻일까? 

웹티어는 1번 , 전통적인 방식의 아키텍처로 로드 밸런서가 있고 웹서버가 될 다수의 EC2 인스턴스가 있는 오토 스케일링 그룹으로 트래픽을 보낸다 .

 

작업자 티어는 2번 

여기서 클라이언트가 ec2 인스턴스에 직접 접근하지 않는다.

메시지 대기열인 sqs 대기열을 사용한다. 

메시지가 sqs 대기열로 전송된다. 

ec2 인스턴스들이 작업자가 된다.  sqs 대기열로부터 메시지를 가져와서 처리한다. 

sqs 메시지 숫자에 따라 ec2 인스턴스가 확장된다. 

 

웹 환경이 작업자 환경의 sqs 대기열로 메시지를 푸시함으로써 웹 환경과 작업자 환경이 함께 할 수 있다. ?


123. Beanstalk 실습

PaaS | 응용 프로그램 관리 | Amazon Web Services

 

PaaS | 응용 프로그램 관리 | Amazon Web Services

데이터베이스, 스토리지, 보안 및 기타 범주에 대한 정보를 확인하세요.

aws.amazon.com

클라우드 포메이션에서 stack 을 가져와서 실행했다. 

 


Quiz 8: 클래식 솔루션 아키텍처 퀴즈

1. 웹사이트 TriangleSunglasses.com는 Application Load Balancer가 관리하는 오토 스케일링 그룹에서 관리 중인 EC2 인스턴스 플릿에 호스팅되어 있습니다. ASG는 웹사이트로 들어가는 트래픽을 온디맨드 기반으로 스케일링하도록 구성되었습니다. 비용 절감을 위해, ASG가 ALB로 통하는 트래픽을 기반으로 스케일링을 하도록 구성해 둔 상태입니다. 솔루션의 고가용성을 보장하기 위해, ASG를 업데이트하고 최소 용량을 2로 설정했습니다. 요구 사항을 충족시키되, 비용을 더욱 절감하려면 어떤 작업을 해야 할까요?

어떤 상황이건 2개의 EC2 인스턴스를 실행하면 추가적인 비용을 절감할 수 있습니다.

 

2. 다음 중 "무상태" 애플리케이션 티어를 설계하는 데에 도움이 되지 않는 것을 고르세요.

EBS 볼륨은 특정 AZ에 저장되며, 한 번에 하나의 EC2 인스턴스에만 연결될 수 있습니다.

 

EBS 볼륨은 az에 생성! | 하나의 EC2 인스턴스에만 연결된다.

 

3. 관리 중인 Linux EC2 인스턴스 100s에 소프트웨어 업데이트를 설치하려 합니다. 이 업데이트를 EC2 인스턴스로 동적으로 로딩되어야 하며, 많은 양의 연산을 요구해서는 안 되는 공유 스토리지에 저장하고자 합니다. 어떤 방법을 사용해야 할까요?

EFS는 EC2 인스턴스의 100s에 동일한 파일 시스템을 마운트할 수 있게 해주는 네트워크 파일 시스템(NFS)입니다. EFS에 소프트웨어 업데이트를 저장하면 각 EC2 인스턴스가 이들을 평가할 수 있게 됩니다.

 

4. 솔루션 아키텍트로서, 여러분은 복잡한 ERP 소프트웨어 스위트를 AWS Cloud로 이전하려 합니다. 오토 스케일링 그룹이 관리하는 한 세트의 Linux EC2 인스턴스에 소프트웨어를 호스팅할 계획입니다. 소프트웨어가 Linux 기기를 준비하는 데에는 보통 한 시간 이상이 걸립니다. 스케일 아웃이 발생할 경우, 설치 과정을 빠르게 만들기 위해서는 어떤 방법을 추천할 수 있을까요?

Golden AMI는 설치되고 구성된 전체 소프트웨어를 포함한 이미지이기 때문에, 향후 이 AMI로부터 EC2 인스턴스를 빠르게 부팅할 수 있습니다.

 

5. 애플리케이션을 개발 중에 있으며, 최소 비용을 사용해 이 애플리케이션을 Elastic Beanstalk으로 배포하려 합니다. 이를 위해서는, 애플리케이션을 .................. 에서 실행해야 합니다.

 

문제에서 애플리케이션이 아직 개발 단계에 있으며 비용을 절감하고자 한다고 언급하고 있습니다. 단일 인스턴스 모드는 하나의 EC2 인스턴스와 하나의 탄력적 IP를 생성합니다.

 

6.애플리케이션을 Elastic Beanstalk으로 배포하던 도중, 배포 프로세스가 극도로 느리다는 것을 알게 되었습니다. 로그를 검토한 결과, 종속성이 매 배포 당 각 EC2 인스턴스로 리졸브된다는 사실을 발견했습니다. 영향을 최소화하면서 배포 프로세스를 빠르게 하려면 어떻게 해야 할까요?

Golden AMI는 전체 소프트웨어, 종속성 및 구성을 포함하는 이미지이기 때문에, 향후 이 AMI로부터 EC2 인스턴스를 빠르게 부팅할 수 있습니다.

【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 9: AWS 기초 : RDS + Aurora + ElastiCache

 


99. DNS 란 무엇일까요? 

What is DNS? 

호스트 네임을 IP로 변환 한다. 

www.google.com  -> 172.217.18.36 

인터넷의 중추 

계층적 이름 구조이다. (DNS uses hieracrchical naming structure) 

.com

 

example.com

 

www.example.com  

DNS Terminologies 

Domain Registrar 

도메인을 등록하는 곳 

DNS 레코드

A, AAAA, CNAME, NS 등 있다. 

Zone File

모든 DNS Record를 포함한다 .

Name 서버

DNS 쿼리를 실제로 해결하는 서버

Top Level Domain (TLD) : com, us, in ,gov, org ....

Second Level Domain( SLD) : amazon.com, google.com

FQDN (Fully Qualified Domain Name) 

 

How DNS Works

webserver www.example.com에  에 접속한다고 가정하자.

1. 클라이언트에서 해당 주소를 DNS resolver에 물어본다. ( 보통 통신사에서 운영 ).

2. DNS resolver 가 dns root server에 물어본다.

3. 그리고 TLD 서버에 물어본다. 

4. Route53 같은 SLD 에 물어본다. 

5. ip 주소를 받으면 클라이언트에서 웹서버로 바로 접속한다 .

 


100. Amazon Route 53 개요

Amazon Route 53 

고가용성, 확장성을 갖춘 , 완전히 관리가되며 권한이 있는 DNS 이다 .

권한이 있다는건? -> DNS 레코드를 업데이트 할 수 있다. 

DNS에 대한 완전히 제어가 가능하다. 

Route53 역시 도메인 이름 레지스트로 도메인 이름을 myrealcode.com 으로 등록한다. 

 

Route53의 리소스 관련 상태를 확인할 수 있다. 

100%SLA 가용성을 제공하는 유일한 aws 서비스이다 .

53은 전통적인 DNS 포트이다 .

 

Route 53 - Records 

레코드를 통해 특정 도메인으로 라우팅하는 방법을 정의한다. 

각 레코드는 도메인이나 example.com 과 같은 서브도메인 이름과 같은 정보를 포함한다. 

 

예를 들어 A 나 AAAA가 있다 

레코드의 값은 123.456.789.123 인데 라우팅 정책은 Route53이 쿼리에 응답하는 방식이다.

TTL은 DNS 리졸버에서 레코드가 캐싱되는 시간이다. 

반드시 알아야하는것 

A /AAAA/ CNAME/ NS

 

고급

CAA/DS / MX/ NAPTR/ PTR/ SOA/ TXT/ SPF / SRV

 

Route 53 - Record Types 

A - map to IPv4 

AAAA - map to IPv6 

CNAME - maps a hostname to another hostname

A, AAAA 가 되어야한다.

Route 53 에서 DNS 이름 공간 또는 Zone Apex의 상위 노드에 대한 CNAMES 를 생성할 수 없다.

example.com 에 CNAME 을 만들 수 없지만 www.example.com  에 대한 CNAME은 만들 수 있따.

 

NS - Name Servers for the Hosted Zone

호스팅 존의 네임서버이다. 

서버의 DNS 이름 또느 IP 주소로 호스팅 존에 대한 DNS 쿼리에 응답 할 수 있다.

또한 트래픽이 도메인으로 라우팅 되는 방식을 제어한다. 

 

Route 53 - Hosted Zones 

호스팅 존은 레코드의 컨테이너이다.  

도메인과 서브도메인으로 가는 트래픽의 라우팅 방식을 정의한다. 

 

호스팅 존의 종류

퍼블릭 호스팅 존 - 인터넷에서 어떻게 라우트 되어야하는지에 대한 정보를 담고 있다. application1.mypublicdomain.com

프라이빗 호스팅 존- VPC 에서 사용가능 application1.company.internal

 

AWS 에서 만드는 어떤 호스팅 존이든 월에 50 센트를 지불해야한다. 

 

Route 53 - Public vs Private Hosted Zones

 

 

 

프라이빗 호스팅 존은 프라이빗 IP 를 알려준다.  VPC 에서만 작동한다 .

 

 


101. Route 53- 도메인 등록 실습

새 도메인 등록 - Amazon Route 53

 

새 도메인 등록 - Amazon Route 53

등록자 연락처는 이메일의 지시 사항에 따라 이메일을 받았다는 사실을 확인해야 합니다. 그렇지 않으면 ICANN에서 요구할 경우 도메인 이름이 일시 중지해야 합니다. 도메인이 일시 중지되면 인

docs.aws.amazon.com


102. Route 53 - 첫번째 기록 생성

도메인에 레코드를 추가해본다.

 

.xxx.test.com 

이런식으로 하고 ip 주소는 123.123.123.123 으로 연결한다. 레코드 타입은 A 

xxx.test.com 을 입력하면 페이지가 안나온다 

123.123.123.123. 은 없기 때문?   

 

하지만 cloudshell에서 nslookup으로 xxx.test.com 

을 검색하면 ip주소가 123.123.123.123 으로 연결되는 것을 확인할 수 있다.

또는 dig 명령어로 많은 정보를 확인할 수 있다. 


103. Route 53 -EC2 설정 

EC2 생성 

각 다른 리전에 인스턴스 3개를 만들고 애플리케이션 로드 밸런서를 하나 만든다 .

ssh, http 트패릭 허용 (로드밸런서는 다른 리전의 인스턴스도 연결해주는 구나)

 

#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
EC2_AVAIL_ZONE=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
echo "<h1>Hello World from $(hostname -f) in AZ $EC2_AVAIL_ZONE </h1>" > /var/www/html/index.html

사용자 데이터 스크립트 

$EC2_AVAIL_ZONE 

명령을 통해 가용영역 정보도 띄운다 .

 

로드 밸런서 생성

ALB 를 생성한다. 

 

대상 그룹을 생성한다. 

 

ALB 정보에서 DNS 이름을 복사해서 프로비저닝 됐는지 확인 

ALB에서 인스턴스 하나늘 가리키게 된다.


104. Route 53 - TTL

클라이언트가 DNS route 53과 웹 서버에 접속한다고 가능하자. 

myapp.example.com 에서 DNS 요청을 보내면 DNS 로부터 회신을 받는데

A 레코드 IP 주소 그리고 TTL 을 받는다. 

 

TTL이 300초라면 클라이언트가 요청 결과를 300초 동안 캐싱하게 한다. 

300초 안에 똑같은 검색을 하면 route 53에 쿼리할 필요없이 바로 웹서버에 접속한다. 

 

TTL 을 설정함으로써 DNS 서버의 부담을 줄일 수 있다. 

 

High TTL  - ex 24 hour

길게 잡으면 트래픽량을 줄일 수 있다.

너무 길면 오래된 데이터를 갖게된다. 

 

Low TTL - ex 60sec

트래픽이 증가한다. -> 고비용

레코드를 최신으로 유지할 수 있다.

레코드를 변경하기 쉽다. 

 

TTL을 콘솔에서 다루는 법

레코드를 생성한다. 

TTL을 설정  120 초

EC2 - 1 에 연결하고

등록한 도메인으로 접속한다. 

 

그리고 cloudshell에서 ns lookup 과 dig 명령어로 TTL 이 뜨는 것을 볼 수 있다.

클라이언트에서 접속했기 때문에 115초~ 이런식으로 TTL 이 뜬다 

 

그 사이에 레코드에서 다른 EC2 -2 에 연결한다.

120초 내라면 변경된 EC2 -2 에 연결되는 것이 아니라 캐싱 시간 때문에 EC2 -1 으로 연결된다 .

 


105. Route 53 CNAME vs Alias

CNAME vs Alias 

AWS Resources ( Load Balancer , CloudFront) 등 호스트 이름이 노출된다.

보유한 도메인에 호스트 이름을 매핑하려고 할 것이다. 

 

myapp.mydomain.com 에 로드 밸런서를 매핑하는 경우 두가지 옵션이 있다.

 

CNAME 

호스트 네임을 다른 호스트 네임으로 전환한다.

app.mydomain.com -> blabla.anything.com 

루트 도메인 이름이 아닌 경우에만 가능하다.

Only for Non Root Domain

그냥 mydomain.com을 anything.com 으로 연결 시키는 것은 불가능하다. 

 

Alias

호스트 네임을 특정 AWS 리소스로 향하도록 할  수 있다.

app.mydomain.com 이 blabla.amazonaws.com 을 향할 수 있게한다.

별칭 레코드는 루트 및 비루트 도메인에서 모두 작동한다. 

works for Root Domain and Non Root Domain 

비용은 무료이다. 

자체적으로 상태 확인이 가능하다. native health check

 

Route 53 - Alias Records 

호스트 네임을 aws 리소스만 향하게 한다. 

DNS의 확장 기능으로 시중의 모든 DNS 에서 사용가능하다. 

리소스 IP의 변화를 자동적으로 인식한다. 

ALB에서 IP 가 바뀌면 별칭 레코드는 이걸 바롤 인식한다. 

 CNAME 과 달리 별칭 레코드는 ZONE APEX 라는 DNS 네임스페이스의 상위노드로 사용될 수 있다. 

example.com 에도 별칭레코드를 사용할 수 있다.

 

AWS리소스를 위한 별칭 레코드의 타입은 항상 A 또는 AAAA이다. 

리소스는 IPv4 또느 IPv6이다.

별칭 레코드는 TTL 설정 불가 

 

Route 53 - Alias Records Targets

 

ELB, CloudFront, API Gateway, Elastic Beanstalk, S3 Websites, VPC Interface Endpoints

Global Accelerator , Route 53 Record 

등 별칭 레코드의 대상으로 지정할 수 있다. 

단 EC2의 DNS 이름에 대해서는 별칭 레코드를 설정할 수 없다. 

 


106. 라우팅 정책 - 단순 

Route 53 - Routing Policies 

라우팅 정책은 route 53이 dns 쿼리에 응답하는 것을 돕는다. 

라우팅

  • 여기서 라우팅은 로드밸런서가 트래픽을 백엔드 EC2 인스턴스로 라우팅하는 것과 다르다.
  • DNS does not route any traffic, it noly responds to the DNS queries
  • DNS는 트래픽을 라우팅하지 않는다. 트래픽은 dns를 통과하지 않는다. DNS는 쿼리에만 응답하게 된다. 

DNS는 호스트 이름들을 클라이언트가 실제 사용 가능한 엔드포인트로 변환하는 것을 돕느다. 

Route 53 라우팅 정책 

단순, 가중치 기반, 장애 조치 지연 시간 기반, 지리적, 다중 값 응답, 지리 근접

Routing Policies - Simple 

기존에 우리가 사용해 왔던 방식이다.

일반적으로 트래픽을 단일 리소스로 보내는 방식이다.

클라이언트가  foo.example.com 으로 가고자 한다면 Route 53 이 iP 주소를 알려준다. a 레코드 주소 

 

동일한 레코드에 여러 개의 값을 지정하는 것도 가능하다. 

이렇게 DNS 에 의해 다중 값을 받는 경우에는 클라이언트 쪽에서 그중 하나를 고른다 .

alias 기능이 켜져있으면 오직 하나의 aws 리소스에만 접근할 수 있다. 

헬스 체크 기능을 사용할 수 없다.


107. 라우팅 정책 - 가중치 

Routing Policies - Weighted

 

가중치 기반 라우팅 정책

정책을 사용하면, 가중치를 활용해 요청의 일부 비율을 특정 리소스로 보내는 식의 제어가 가능하다.

Control the % of the requests that go to each specific resource

Route 53 이 있고 EC2 인스턴스가 세 개 있는데 70, 20 , 10 의 각각 다른 가중치를 할당 받는다. 

 

Amazon Route 53 에서 오는 DNS 응답의 70% 가 첫 번째 EC2 로 리다이렉팅 된다는 것을 의미한다.

20 퍼센트는 두 번쨰로 , 10퍼센트는 세 번째 인스턴스로 간다. 

 

한 DNS 이름 하에 있는 다른 레코들과 비교했을 떄 해당 레코드로 트래픽을 얼마나 보낼지를 나타내는 값이다.

 

상태확인과 관련 될 수 있다. ( can be associated with health checks ) 

 

사용처

서로 다른 지역들에 걸쳐 로드 밸런싱을 할때 

적은 양의 트래픽을 보내 새 애플리케이션을 테스트하는 경우

가중치 0의 값을 보내게 되면 특정 리소스에 트래픽 보내기를 중단해 가중치를 바꿀 수 있다.

모든 가중치를 0으로 하면 모든 레코드에 동등하게 보내진다.


 

새로운 레코드를 만든다 .

가중치 정책

레코드 id로 식별하기


108. 라우팅 정책 - 대기 시간

Routing Policies - Latency- based 

지연 시간 기반 라우팅 정책 

지연 시간이 가장 짧은 ,즉 가장 가까운 리소스로 리다이렉팅을 하는 정책이다.

Redirect to the resource that has the least latency close to us

 

지연 시간에 민감한 웹사이트나 애플리케이션이 있는 경우에 아주 유용한 정책이다. 

 

지연 시간은 유저가 레코드로 가장 가까운 식별된 AWS 리전에 연결하기까지 걸리는 시간을 기반으로 측정된다. 

Latency is based on traffic between users and AWS Regions

유저가 독일에 있고 미국에 있는 리소스의 지연시간이 가장 짧다면, 해당 유저는 미국 리전으로 리다이렉팅 될 것이다. 

 

상태 확인과 연결이 가능하다.


 

정책을 레이턴시Latency로 지정한다.

인스턴스의 ip를 입력하고 리전 위치도 입력해야한다. 

가장 가까운 인스턴스로만 연결된다. 

 


109.  Route 53 - 상태 확인 

Route 53 - Health Checks

공용 리소스에 대한 상태를 확

인하는 방법이다.

지연 시간 기반 레코드로 연결되면 가장 가까운 리전의 ELB로만 연결될 것이다 .

 

만약 ELB가 마비된다면 다른 리전은 ELB로 연결해야 할 것이다. 

 

상태 체크를 통해 DNS 장애 조치를 자동화할 수 있다. 

1. 엔드포인트에 대한 상태체크 

( 애플리케이션, 서버, 다른 aws 리소스)

2. 다른 상태 확인을 모니터링하는 상태 확인도 있다. 

(계산된 상태 체크 ) Calculated Health Checks

3.CloudWatch 를 통해 상태 확인 

CloudWatch의 지표에서 확인 가능하다 .

 

Health Checks are intergrated with CW metrics

 

Health Checks - Monitor an Endpoint

15개의 글로벌 상태 확인이 엔드포인트의 상태를 확인하고 임계값을 정상 혹은 비정상으로 설정한다. 

  •  간격을 설정할 수 있다. 30~10초 (물론 10초 , 주기적으로 하면 비용이 더 든다.)
  • 프로토콜 지원 :HTTP, HTTPS, TCP 를 지원한다. 
  • 18 % 이상의 상태 확인이 엔드 포인트를 정상이라고 판단하면 Route53도 이를 정상이라고 간주한다. 
  • 상태 확인에서  사용될 위치도 선택할 수 있다.

2xx, 3xxx 코드를 받아야만 통과가 된다. 

 

텍스트 기반 응답일 경우 상태 확인은 응답의 처음 5120 바이트를 확인한다. 

 

상태 확인의 작동이 가능하려면 상태 확인이 여러분의 애플리케이션 밸런서나 엔드 포인트에 접근이 가능해야한다.

따라서 Route53 의 상태 확인 IP 주소 범위에서 들어오는 모든 요청을 허용해야한다. 

 

Calculated Health Checks

계산된 상태 확인으로 여러 개의 상태 확인 결과를 하나로 합쳐주는 기능이다. 

Route 53 을 보면 EC2 인스턴스가 세 개 있고 상태 확인을 세 개 생성할 수 있다.

하위 상태를 바탕으로 상위 상태 확인을 정의할 수 있다.

 

상태 확인을 합치기 위한 조건은 OR, AND or NOT 이다 

하위 상태 확인을 256개까지 모니터링할 수 있다. 

 

상위 상태 확인이 통과하기 위해 몇 개의 상태를 통과해야 하는 지도 지정할 수 있다.

 

Usage: 

상태 확인이 실패하는 일 없이 상위 상태 확인이 웹사이트를 관리 유지하도록 하는 경우 

perform maintenance to your website without causing all health checks to fail

 

Health Checks - Private Hosted Zones 

 

route 53의 상태 확인은 공용 웹에 있다. (VPC 외부에 있음) 

개인 엔드 포인트에 접근하는 것은 불가능하다.

 

CloudWatch 지표를 만들어 CloudWatch 알람을 할당하는 식으로 문제를 해결할 수 있다. 

개인 서브넷 안에 있는 EC2 인스턴스를 모니터링한다. 

메트릭이 침해되는 경우 CloudWatch 알람을 생성하게 된다. 

alarm 상태가 되면 상태 확인은 자동으로 비정상이 된다. 

경보 상태가 되면 Health checks 가 통과하지 못하도록 하게 한다. 


110. Route 53 - 상태 확인 실습 

상태 확인 인스턴스 생성 

엔드포인트 지정 - ec2 연결 

상태 확인 관련 옵션 지정

( 상태 확인 3개 만든다. ) 

 

ec2 로 가서 보안 규칙을 일부러 변경한다.

 

상태확인에서 unhealthy로 변경된다. 

 

Amazon Route 53 상태 확인 생성 및 DNS 장애 조치 구성 - Amazon Route 53

 


111. 라우팅 정책 - 장애 조치 

Routing Policies - Failover ( Active-Passive)

route 53에서 주 인스턴스에 상태체크를 보냈는데 실패를 응답 받으면 보조 인스턴스로 연결함으로써 장애 조치를 한다. 

보조 인스턴스에도 상태체크를 할 수 있지만 안할 수도 있다. 

클라이언트가 접속하면 route 53는 보조 인스턴스로 응답을 한다.


장애 조치 정책을 설정하면 프라이머리, 세컨더리 레코드를 지정해야한다. 

 

마찬가지로 보안그룹의 포트를 제거하여 접속 오류를 만든다. 

장애가 생겼기 때문에 장애 조치로 연결한 세컨더리 레코드로 연결된다. 


112. 라우팅 정책 - 지리적 위치

Routing Policies - Geolocation

지연 시간 기반 (latency-based) 정책과 다르다.

사용자의 실제 위치를 기반으로 한다. 

사용자가 특정 대륙이나 국가 혹은 더 정확하게 미국의 경우에는 어떤 주에 있는지 지정하는 것이며 가장 정확한 위치가 선택되어 그 IP로 라우팅 되는 것이다. 

 

일치하는 위치가 없는 경우에는 기본 레코드를 생성해야한다. 

Should create a "Default" record ( in case there's no match on locaton) 

 

Usage

콘텐츠 분산을 제한하고 로드 밸런싱 등을 실행하는 웹사이트 현지화가 있다.

 

독일 유저가 독일어 버전의 앱을 포함한 IP로 접속되로고 독일의 지리 레코드를 정의하고

프랑스의 경우 프랑스어 버전의 앱을 가진 IP로 가야한다.

그 외의 다른 곳은 앱에서 영어 버전이 포함된 기본 IP로 이동해야한다. 


라우팅 정책 geolocation 으로 설정 

 

타임아웃 오류가 뜬다면 보안그룹을 확인하자 .

vpn을 통해 검증하기 


113. 라우팅 정책 - 지리적 근접성

Geoproximity Routing Policy

지리적 위치랑 차이점 주의하자.

 

사용자와 리소스의 지리적 위치를 기반으로 트래픽을 리소스로 라우팅하도록 한다. 

편향값을 사용해 특정 위치를 기반으로 리소를 더 많은 트래픽을 이동하는 것이다. 

 

지리적 위치를 변경하려면 편향값을 지정해야한다.

특정 리소스에 더 많은 트래픽을 보내려면 편향값을 증가시켜서 확장하면 된다. 

To change the size of the geographic region, specify bias values:

  • to expand (1 to 99) - more traffic to the resouce
  • to shrink( -1 to -99) - less traffic to the resource

 

Resouces can be

  • AWS resources (특정 리전)
  • Non-AWS resources ( 특정 위도 , 경도를 지정하여 aws 가 위치를 파악하도록 해야한다)

편향 활용을 위해 고급 Route 53 트래픽 플로우를 사용한다. 

you must use route 53 traffic flow (advanced) to use this feature

편향성이 0이면 유저는 가까운 리전으로 연결된다. 

편향성을 지정하면 유저의 트래픽을 특정 리전으로 옮길 수 있다.

 

지리 근접 라우팅은 편향을 증가시켜 

한 리전에서 다른 리전으로 트래픽을 보낼 때 유용한다.


114. 라우팅 정책 - 다중 값

Routing Policies - Multi-Value

다양한 리소스로 라우팅할때 사용된다.

 

Route 53 다중 값과 리소스를 반환한다. 

 

상태 체크를 하는데 통과된 리소스만 반환한다. 

return only values for healthy resources

 

각가의 다중 값 쿼리에 최대 8개의 정상 레코드가 반환된다. 

up to 8 healyh recoreds are returned for each Multi-Value query

 

ELB와 유사해 보이지만 ELB를 대체할 수는 없다. 

Multi-Value is not a substitute for having an ELB

 

단순 라우팅 정책은 상태 체크를 하지 않기 때문에 응답 받은 리소스 중에 비정상이 포함될 가능성이 있다.

상태 체크를 한다는 점

3개의 응답을 얻는다. 


115. 타사 도메인 및 Route 53

Domain Registar vs. DNS Service

도메인 이름 레지스트라를 통해 원하는 도메인 이름을 구매할 수 있다. 

 

매년 비용을 지불해야한다.

Route 53에서 도메인을 구매할 때는 Amazon 레지스트라를 이용했다. 

GoDaddy에서 도메인을 구매하고 route53으로 관리 할 수도 있다. 

도메인 구매와 dns 서비스를 다른 곳에서 할 수 있다.

Route 53에서 원하는 도메인의 공용 호스팅 영역을 생성하고 호스팅 영역 상세의 오른쪽 부분에서 이름 서버를 찾는다.

해당 이름 서버는 godaddy 에서 수정해야한다.

 

godaddy에서 사용하는 네임서버에 관한 쿼리에 응답하면 네임서버가 route 53의 네임서버를 가리키게 된다.

그러면 route 53의 콘솔에서 직접 전체 dns 레코드를 관리할 수 있다.

 

3rd Party Registrar with Amazon Route 53 

 1. 3파티에서 도메인을 구매하고 네임서버를 등록한다. 

2. route 53에 호스팅 존을 생성한다. 

3. 3파티 웹사이트에서 네임서버 레코드를 수정한다. route 53의 네임 서버를 사용하기위해! 

 

도메인 레지스트라와 dns service는 다르다 .

 

그러나 대부분의 도메인 레지스트라는 dns 기능을 지원한다.


116. Route 53 - 섹션 정리 

 

실습에 사용한 인스턴스 제거 

도메인 제거


Route 53 퀴즈 

1. 여러분은 Amazon Route 53 Registrar를 위해 mycoolcompany.com를 구매했으며, 이 도메인이 Elastic Load Balancer인 my-elb-1234567890.us-west-2.elb.amazonaws.com를 가리키게끔 하려 합니다. 이런 경우, 다음 중 어떤 Route 53 레코드 유형을 사용해야 할까요?

 

2.새로운 Elastic Beanstalk 환경을 배포한 상태에서, 5%의 프로덕션 트래픽을 이 새로운 환경으로 다이렉트하려 합니다. 이를 통해 CloudWatch 지표를 모니터링하여, 새로운 환경에 있는 버그를 제거할 수 있게 됩니다. 이런 작업을 위해서는 다음 중 어떤 Route 53 레코드 유형을 사용해야 할까요?

가중치 기반 라우팅 정책을 사용하면 가중치(예: 백분율)를 기반으로 트래픽의 일부를 리다이렉트할 수 있습니다. 트래픽의 일부를 애플리케이션의 새로운 버전으로 보내는 방식은 흔히 사용되는 방식입니다.

 

트래픽을 분산 시키는 것을 목적이라면 가중치 기반, 지리적 근접성을 라우팅 정책으로 한다. 

 

3. Route 53 레코드의 myapp.mydomain.com 값이 새로운 Elastic Load Balancer를 가리키도록 업데이트를 했는데도 불구하고, 사용자들은 여전히 기존의 ELB로 리다이렉트 되고 있는 상태입니다. 이런 경우, 가능성이 있는 원인은 무엇일까요?

각 DNS 레코드는 클라이언트들이 이러한 값들을 캐시할 기간을 지정하고 DNS 요청으로 DNS 리졸버에 과부하를 일으키지 않도록 지시하는 TTL(타임 투 리브)을 갖습니다. TTL 값은 값을 캐시해야 하는 기간과 DNS 리졸버로 들어가야 하는 요청의 수 사이의 균형을 유지할 수 있도록 설정되어야 합니다.

 

4. 두 AWS 리전, us-west-1  eu-west-2에 호스팅 된 애플리케이션이 있습니다. 애플리케이션 서버의 사용자에 대한 응답 시간을 최소화하여, 사용자들에게 최상의 사용자 경험을 제공하려 합니다. 이 경우, 다음 중 어떤 Route 53 라우팅 정책을 사용해야 할까요?

지연 시간 라우팅 정책은 사용자와 AWS 리전 사이에서 발생하는 지연 시간을 평가하여 지연 시간(예: 응답 시간)을 최소화할 수 있는 DNS 응답을 수신할 수 있게 해줍니다.

 

5. 프랑스를 제외한 국가에 있는 사람들이 여러분의 웹사이트로 액세스해서는 안 된다는 법적 요구 사항이 있습니다. 이 경우, 다음 중 어떤 Route 53 라우팅 정책을 사용해야 할까요?

 

6. GoDaddy를 위해 도메인을 구매했으며, Route 53을 DNS 서비스 제공자로 사용하려 합니다. 이를 위해서는 어떤 작업을 수행해야 할까요?

공용 호스팅 영역은 인터넷을 통해 웹사이트로 요청을 보내는 사람들이 사용할 것을 전재하고 있습니다. 마지막으로, NS 레코드는 타사 Registrar에 업데이트되어야 합니다.

 

7. 다음 중 유효한 Route 53 상태 확인이 아닌 것을 고르세요.

 

【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

 


85. Amazon RDS 개요

Amazon RDS Overview 

RDS - Relational Database Service 관계형 데이터베이스 서비스이다. 

SQL 을 사용하는 DB를 위한 완전관리형 DB  서비스이다. 

여러 DB 엔진을 지원한다. 

Postgres, MySql, MariaDB, Oracle, Microsofts SQL Server, Aurora


Advantage over using RDS versus deploying DB on EC2  - EC2에 DB를 설치하여 사용하는 것과 비교하여...

RDS 는 완전 관리형 서비스

데이터베이스 프로비저닝과 기본 운영체제 패치가 완전 자동화되어 있다..

지속적인인 백업 생성 -> 타임스탬프를 이용하여 특정 시점으로 복원 가능

모니터링 - 데이터베이스의 성능을 모니터링할 수 있다.

읽기 전용 복제본 ( Read replicas)  생성- 읽기 성능을 높일 수 있다.

다중 AZ for DR (Disaster Recovery) 

유지 관리 기간에 업그레이드 가능

인스턴스 확장, 축소 가능 ( vertical or horizontal)

파일 스토리지는 EBS에 구성된다. ( gp2, io1 ) 

 

단점으로 RDS 인스턴스에 SSH 액세스 불가 

RDS - Storage Auto Scaling 

RDS DB 인스턴스를 자동으로 확장해준다. 

 

RDS가 db 스토리지 용량이 부족하다고 감지하면 용량을 확장한다.

수동조작을 피하게 해준다 ?

따라서 최대 스토리지 임계값을 정해줘야한다. 

스토리지 부족 상태가 5분 이상 지속되거나 지난 수정으로부터 6시간이 지났을 경우 오토스케일링이 활성화 되어 있다면 스토리지가 자동 확장 된다. 

 

워크로드를 예측할 수 없는 애플리케이션에서 굉장히 유용하고 모든 RDS 데이터베이스 엔진에서 지원되는 기능이다. 

 

MariaDB, MySQL , PostgreSQL, SQL Server, Oracle 다 지원된다. 

 


86. RDS 읽기 전용 복제본과 다중 AZ

RDS 읽기 전용 복제본과 다중 AZ의 차이를 이해하고 사용 사례를 제대로 아는 것이 중요하다. 

RDS Read Replicas for read scalability 

RDS DB 인스턴스는 읽기, 쓰기를 담당한다. 

하지만 주된 인스턴스가 요청이 너무 많은 경우 감당할 수 없기 때문에

읽기 전용 인스턴스를 스케일링 해야한다.

 

읽기 전용 복제본은 최대 5개 까지 생성가능

동일한 가용영역 또는 여러 가용영역,리전을 걸쳐 생성이 가능하다.

기억해야할 세 가지 옵션이 있다..?

 

복제본과 db 인스턴스간에 비동기식 복제(async replication)가 발생한다.

비동기식-> 읽기가 일관적으로 유지됨을 의미한다. 

가령 애플리케이션에서 데이터를 복제하기 전 읽기 전용 복제본을 읽어들이면 모든 데이터를 얻을 수 있다는 것이죠

 

읽기 전용본을 db 로 승격시킬 수 있다. ( Replicas can be promoted to their own DB)

그 이후에는 복제 매커니즘을 완전히 탈피한다. 

 

읽기 전용 복제본을 사용하려는 경우에는 화면 상단의 주요 애플리케이션에 있는 모든 연결을 업데이트해야 하며 이를 통해서 RDS 클러스터 상의 읽기 전용 복제본 전체 목록을 활용할 수 있다. 

Application must update the connection string to leverage read replicas 

-> 읽기 복제본을 사용하려면 애플리케이션에서 연결을 업데이트 해야한다.

 

RDS Read Replicas - Use Cases

프로덕션 앱에서 사용하는 DB 가 있다고 가정하자.

개발 팀에서 DB 를 활용해야한다.

서비스 중인 DB를 사용하면 수정 문제나 성능 문제가 발생한다. 

 

이때 인스턴스의 replica를 하나 생성한다. 

 

개발팀에선 안정적으로 db를 사용할 수 있다. 

 

읽기 복제본에서는 오직 SELECT 명령문만 사용할 수 있다. 

db를 변경하는 insert, update,delete 문은 사용할 수 없다. 

 

RDS Read Replicas - Network Cost

aws 서비스 특징으로 az에서 다른 az로 데이터가 전송될 때 비용이 든다. 

하지만 보통 관리형 서비스에서는 az 데이터 전송에 따른 비용이 없다. 

 

읽기 전용본이 같은 리전의 다른 az 일 경우 전송비가 없다.

하지만 읽기 전용본이 다른 리전일 경우 전송비가 존재한다.

 

RDS Muli AZ (Disaster Recovery) 

다중 az는 주로 재해 복구용으로 사용된다. 

마스터 db를  동기식으로 스탠바이 db로 복제한다. 

 

하나의 DNS 이름을 갖는다.  마스터에 문제가 생길 때 장애 조치가 수행된다. 

 

az, 네트워크 에 문제가 생겼을때 스탠바이가 마스터로 승격된다. 

 

이 과정이 자동으로 이루어진다. 

 

스케일링에 사용되지 않는다 .

 

장애에 대한 예비용일 뿐이다 . 그 누구도 읽기 /쓰기 할 수 없다. 

 

그렇다면 재해복구용으로 읽기 전용 복제본을 사용할 수 있지 않을까? 

-> 가능하다. 원하는 경우에 읽기 전용 복제본을 dr 용으로 쓸 수 있다. 

 

RDS- From Single-AZ to Multi-AZ 

시험에 자주 나오는 문제로 단일 az 를 다중 az 로 변환할 수 있는지 묻는 문제가 나온다. 

가능하다!

특징

1. Zero downtime

단일 az에서 다중 az로 전환하는 과정에 db를 중지할 필요가 없다. 

2. 단순 클릭으로 ( Just click on "modify" for the database)

쉽게 활성화 할 수 있다.

 

단일 az를 다중 az로 활성화 시키는 과정

1. 마스터로부터 스냅샷 생성

2. 스냅샷으로부터 스탠바이 생성

3. 두 인스턴스간의 동기화 작업 실행


87. Amazon RDS 실습

MySQL 데이터베이스를 생성하는 방법 – Amazon Web Services

 

MySQL 데이터베이스를 생성하는 방법 – Amazon Web Services

Network & Security Public accessibility: Yes를 선택합니다. 이렇게 하면 데이터베이스 인스턴스에 대한 IP 주소가 할당되므로 사용자 디바이스에서 데이터베이스에 직접 연결할 수 있습니다. Availability zon

aws.amazon.com

 

아마존 사이트에 친절하게 설명이 잘되어있다.

필요할때 참고하자.

 

실습내용에선 SQL Electron을 사용하였다. 

 

포트는 3306


88. RDS Custom for Oracle 과 Microsoft SQL Server 

RDS Custom 

RDS 에서는 기저 운영 체제나 사용자 지정 기능에 액세스 할 수 없다. 

그러나 RDS Custom 에서는 가능하다. 

 

Oracle, Microsoft SQL Server  에서 가능하다. 

RDS는 자동화, 운영 , 확장 할 수 있다. 

 

Custom 의 경우

기저 os 및 데이터베이스에 접근할 수 있다.

내부설정 구성, 패치 적용, 네이티브 기능 활성화가 가능하며

SSH 또는 SSM 세션 관리자를 사용해서 RDS 뒤에 있는 기저 EC2 인스턴스에 액세스 할 수 있다. 

 

custom을 사용하려면 RDS가 수시로 자동화 , 유지관리 또는 스케일링과 같은 작업을 수행하지 않도록 자동화를 꺼두는 것이 좋다. 

De-activate Automation Mode to perform your customization, better to take a DB snapshot before

RDS vs RDS Custom

RDS: db와 OS 모두 aws 가 관리한다.

RDS Custom: OS와 DB에 대한 완전 액세스가 가능하다. 

 

=> RDS도 결국 ec2 인스턴스에서 돌아가는 서비스이다. 

RDS를 돌리기 위한 ec2 인스턴스의 os, db 엔진 패치 등을 aws가 관리한다. 

RDS Custom을 이용하면 rds 가 돌아가는 ec2 인스턴스의 os, db 엔진 등 수동 조작이 가능하다.


89. Amazon Aurora 개요

Amazon Aurora

Aurora는 AWS 고유의 기술이다.

Postgres 그리고 MySQL  과 호환된다. 

클라우드 최적화 Cloud Optimized 

mysql 보다 5배 postgres 보다 3배 향상된 성능을 보인다. 

aurora 스토리지는 자동으로 확장한다.

10GB에서 시작하지만 데이터베이스에 더 많은 데이터를 넣을수록 자동으로 128TB 까지 커진다 .

mysql의 읽기 복제본이 5개 까지인 것에 비해 15개의 읽기복제본을 갖는다 .

장애 조치에 즉각이다 Failover in Aurora is instantaneous. It's HA native

비용은 RDS에 비해 20% 정도 높지만 스케일링 측면에서 훨씬 더 효율적이다. 

 

Aurora High Availbility and Read Scaling

3개의 가용영역에 걸쳐 6개의 복제본을 생성한다.

쓰기 작업 -> 4개만 필요 (한 az 가 다운 되어도 사용에 문제가 없음.)

읽기 작업 -> 6개의 복사본 중 3개만 필요

자동 복구 기능 - p2p 식

스트라이프 형식으로 작동함

 

az는 다중 az 와 유사하다. 

쓰기를 받는 인스턴스는 1개 뿐이다.

aurora 에도 마스터가 존재하고 여기서 쓰기를 받는다. 

마스터가 작동하지 않으면 30초 이내로 장애 조치가 시작된다.( failover 가 빠름) 

 

마스터 외에 읽기 복제본을 15개를 둘 수 있고

마스터에 문제가 생기면 읽기 복제본을 마스터로 승격할 수 있다. (rds에서 읽기 복제본이 아니라 다중 az를 마스터로 승격 시켰음.) 

이 복제본들은 리전 간 복제를 지원한다. 

마스터는 하나, 복제본은 여럿 

작은 블록 단위로 자가 복구 또는 확장 

 

Aurora DB Cluster

모든 인스턴스들은 스토리지 볼륨을 공유하고 있다. 

읽기 전용 복사본에 대한 오토 스케일링 설정이 가능하다. 

 

엔드포인트 

라이터 엔드포인트 : 쓰기 작업이 가능한 마스터 인스턴스로 연결

리더 엔드포인트 : 로드 밸런싱과 연결하여 읽기 전용 인스턴스로 연결해준다. 

 

Aurora의 기능 

자동 장애조치

백업 및 복구

격리 보안, 

산업 규정 준수

버튼식 스케일링

제로 다운타임 패치

고급 모니터링

통상 유지 관리 

백트랙 backtrack: 백업에 의존하지 않고 원하는 시점으로 복구하는 기능 


90. Amazon Aurora 실습

DB 클러스터 생성 및 Aurora MySQL DB 클러스터의 데이터베이스에 연결 - Amazon Aurora

 

DB 클러스터 생성 및 Aurora MySQL DB 클러스터의 데이터베이스에 연결 - Amazon Aurora

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

오토 스케일링과 관련하여 정책을 추가할 수 있다. 

 

 


91. Aurora Replicas - Auto Scaling 

Aurora Replicas - Auto Scaling 

오토 스케일링에서 읽기 레플리카가 확장된다.

이때 리더 엔드포인트도 마찬가지로 확장된다. 

 

Aurora - Custome Endpoints 사용자 지정 엔드포인트

읽기 전용 인스턴스를 확장할때 

용량이 더 큰 인스턴스가 있는 상황이다. 

용량이 더 크고 성능이 좋으므로 해당 인스턴스는 더 높은 수준의 워크로드를 처리할 수 있다. 

해당 워크로드만 처리하기 위해 사용자 엔드포인트로 진입하게 한다. 

 

읽기 인스턴스의 워크로드를 분리 시킴.

=> 인스턴스 타입이 다를 경우 특정 엔드포인트로 분리할 수 있다.

 

Aurora Serverless 

 

자동화된 데이터베이스 인스턴스와 실제 사용을 기반으로 자동 스케일을 가능하게 해준다. 

비정기적, 간헐적, 예측 불허한 워크로드에 유용

용량 계획을 세울 필요가 없다. 

 

클라이언트는 aurora 관리 하위 프록시 플릿과 소통하다. 

백엔드에서 워크로드에 기반해 서버리스 방식으로 여러 Aurora 인스턴스가 생성된다. 

각 aurora 인스턴스에 대해 매 초당 비용을 지불하게 된다. 

따라서 용량을 미리 확보할 필요가 없다. 

=> 서버리스로 완전 자동화 

 

Aurora Multi-Master

라이터 노드에 대한 즉각적이 장애 조치로 라이터 노드에 높은 가용성을 갖추고자 할 때 사용한다. 

이 경우 Aurora 클러스터의 모든 노드에서 읽기 및 쓰기가 가능하다.

 

기존에는 노드를 마스터 노드로 승격했다면 

multi master에서는 말그대로 모든 노드에서 쓰기가 가능하다. 

 

Global Aurora

aurora 리전 간 복제본은 재해 복구에 많은 도움이 되며 간단하게 생성이 가능하다. 

 

하지만 최근에는 Aurora Global Database 를 사용하는 것이 권장된다. 

모든 쓰기 및 읽기가 진행되는 하나의 기본 리전이 있다.

복제 지연이 1초 미만인 보조 읽기 전용 리전을 다섯 개까지 설정할 수 있다.

각 보조 지역마다 읽기 전용 복제본을 16개까지 생성 가능하다. 

이렇게 하면 세계 각지에 있는 읽기 전용 복제본의 지연 시간을 단축할 수 있다.

재해 복구 목적으로 다른 지역을 승격하는데 필요한 RTO (Recovery Time Objective) 는 1분 미만이다. 

 

다른 리전으로 복구하는데 1분도 걸리지 않는다는 뜻이다.

 

시험에서 리전에 걸쳐 데이터를 복제하는데 걸리는 시간이 평균 1초 미만이다~ 이런 문제가 나온다면 Global Aurora 이다.

 

Aurora Machine Learning

Aurora는 AWS 내의 머신 러닝 서비스와 통합을 지원한다 .

 

ML 기반 예측을 SQL 인터페이스로 애플리케이션에 적용하는 것

 

SageMaker : 백엔드에서 어떤 머신 러닝 모델이라도 사용할 수 있게 해주는 SageMaker

Amazon Comprehed : 감정 분석에 사용.

 

반드시 ml 경험을 알 필요없다. 

 

활용 예시로는 감지 맞춤 광고, 감정 분석 , 제품 추천등이 있으며 모두 Aurora 내에서 가능하다. 

 

아키텍처 개념

애플리케이션에서 SQL 쿼리를 aurora에게 넘김.

aurora에서 연결된 머신 러닝 서비스로 데이터를 전송 

응답을 받고 aurora는 애플리케이션에 결과를 반환한다.


92. RDS & Aurora - 백업과 모니터링 

RDS Backups

Automated backups: 

자동으로 매일 데이터베이스 유지 관리 시간에 데이터베이스 전체를 백업한다.

5분마다 트랜잭션 로그도 백업된다. -> 가장 최신 백업이 5분 전이다. 

자동 백업 보유 기간은 1일에서 35일까지로 설정할 수 있다.

비활성화 할려면 0일로 수정한다.

 

Manual DB Snapshots

수동으로 트리거해야한다. 

수동 백업은 원하는 만큼 오래 보유할 수 있다.

 

자동 백업은 기간이 지나면 사라지지만 수동으로 만든 DB 스냅샷은 원하는 기간동안 보유 가능하다.

 

비용 절감팁!

RDS 데이터베이스를 매달 2시간만 사용할 예정이다.

데이터베이스를 정지하게되어도 스토리지 비용을 계속 지불해야한다.

 

그 대신 2시간 사용 후에 스냅샷을 만들고 원본 데이터베이스를 삭제한다는 방법이 있다.

스냅샷 비용은 RDS 데이터베이스 스토리지 보다 저렴하다.

데이터베이스를 다시 사용할 때 스냅샷을 복원해서 사용하면 된다. 

 

Aurora Backups

Automated backups

백업본을 1~35일까지 분량까지 보유할 수 있다.

RDS 와 다르게 Aurora는 비활성화가 불가능하다. 

지정 시간 복구 기능이 있다.  (point-in-time)

 

Manual DB Snapshots

수동 DB 스냅샷을 만들 수 있다.

보유 기간은 원하는 만큼 지정할 수 있다. 

 

RDS & Aurora Restore options

복원 기능으로 RDS 및 Aurora 백업 또는 스냅샷이다.

스냅샷으로부터 복원하여 새로운 DB를 만들 수 있다. 

 

S3로부터 MySQL DB 복원하기

온프레미스 db의 백업을 만들어서 s3에 저장

s3로부터 RDS db 만들기 

 

 

S3로부터  Aurora Cluster 복원하기

온프레미스 db 백업본을 Percona XtraBackup 소프트웨어를 이용하여 만든다.

백업 데이터를 S3에 저장 

S3 로부터 aurora cluster 생성

 

Aurora Database Cloning

Aurora Cluster 를 기반으로 복제본을 생성한다.

스냅샷&복구보다 빠르다. 

 

프로덕션 db에 영향을 끼치지 않고 스테이징 db를 만드는데 좋다. 

 


93. RDS Security

RDS & Aurora Security 

RDS 및 Aurora 데이터베이스에 저장된 데이터를 암호화할 수 있다. 

이는 데이터가 볼륨에 암화화된다는 뜻이다. 

 

KMS를 사용해 마스터와 모든 복제본의 암호화가 이루어지며

이는 데이터베이스를 처음 실행할 때 정의된다. 

 

만약 마스터 db가 암호화되지 않는다면 읽기 전용 복제본도 암호화 될 수 없다.

 

암호화 되지 않은 데이터베이스를 암호화 하려면 

스냅샷을 뜬 다음에 암호화된 데이터 베이스로 생성해야한다. 

 

데이터 전송 중 암호화 

클라이언트와 db 간의 전송 중 데이터 암호화가 있다. 

RDS, Aurora는 기본적으로 전송 중 데이터 암호화 기능을 갖추고 있음.

AWS의 TLS 루트 인증서를 사용한다. 

사용자 이름, 패스워드등 전통적인 조합을 사용할 수 있음.

 

IAM 역할

IAM 역할을 사용해서 데이터 베이스에 접속할 수 있음.

보안 그룹

데이터베이스에 대한 네트워크 액세스를 통제할 수도 있다. 

No SSH

rds custom을 제외하고는 RDS, Aurora 는 SSH 액세스가 없다. 

Audit Log

CloudWatch 로 감사 로그를 보낼 수 있다. 


94. RDS Proxy

Amazon RDS Proxy

프록시가 하나의 풀에 연결을 모아 RDS 데이터베이스 인스턴스로 연결한다.

 

1. 완전 관리형 데이터베이스

2. 애플리케이션이 데이터베이스 내에서 데이터베이스 연결 풀을 형성하고 공유할 수 있다.

3. 데이터베이스 성능을 개선할 수 있다. 데이터베이스의 리소스 부하를 줄이고 개방된 연결을 최소화 한다. ( timeouts 을 최소화 한다. ) 

4.서버리스로 오토 스케일링 가능하며 다중 az를 지원한다. 고가용성

5. RDS Proxy 를 사용함으로써 RDS,Aurora의 장애 조치 시간을 66% 까지 줄일 수 있다. 

6. MySQL, PostgreSQL, MariaDB 용 RDS를 지원하며 MySQL, PostgreSQL 용 Aurora를 지원한다.

7. 애플리케이션 코드를 변경하지 않아도 된다. RDS, Aurora DB에 바로 연결하는 대신 RDS 프록시에 연결하기만 하면 된다.

8. 데이터베이스에 IAM 인증을 강제함으로써 IAM 인증을 통해서만 RDS에 접근하게 할 수 있다. 

9. RDS 프록시는 절대 퍼블릭 액세스가 불가능하다. vpc 내에서만 접근할 수 있다.

10. 람다함수와 호환이 좋다 .

 

결론: RDS Proxy 가 다 처리해준다. 

 


95. ElastiCache 개요 

Amazon ElastiCache Overview

1. RDS 와 동일한 방식으로 관계형 데이터베이스를 관리할 수 있다.

2. 일래스틱 캐시는 레디스 또는 맴키스트와 같은 캐시 기술을 관리할 수 있도록 한다.

3. 캐시는 높은 성능낮은 지연 시간을 가진 인 메모리 데이터베이스이다.

4. 읽기 집약적인(read intensive workloads) 워크로드의 부하를 줄이는데 도움이 된다 .

5. 애플리케이션을 stateless 하게 만드는데 도움이된다. 

6. AWS 가 운영 체제, 패치, 최적화와 설정, 구성,모니터링,장애 회복 그리고 백업등의 유지 보수를 진행한다. 

7. 일래스틱 캐시를 사용하기 위해 애플리케이션 코드를 변경해야한다 .

 

ElastiCache Solutin Architecture - DB Cache

애플리케이션, amazon ElastiCache, RDS 가 있다.

 

애플리케이션이 일래스틱 캐시를 쿼리한다. 

쿼리가 이미 생성되었는지 일래스틱 캐시에 저장됐는지 확인 하는 것이 캐시 히트 (cache hit) 고 

이는 일래스틱 캐시에서 바로 응답을 얻어서  쿼리하기 위해 데이터베이스로 이동하는 동선을 줄여준다 .

 

캐시 미스( cache miss) 의 경우에는 데이터베이스에서 데이터를 가져온다.

데이터를 캐시에 다시 기록하여 다음에 같은 쿼리가 오면 캐시 히트를 얻도록 한다.

 

이를 통해서 RDS 데이터베이스에서 부하를 줄이는데 도움을 준다. 

 

데이터를 캐시에 저장하기 때문에 캐시 무효화 전략( invalidation strategy)이 있어야 하며 가장 최근 데이터만 사용하는지 확인해야한다.

Cache must have an invalidation strategy to make sure only the most current data is used in there.

ElastiCache Solutin Architecture - User Session Store

다른 아키텍처는 사용자 세션을 저장해 애플리케이션을 stateless 로 만드는 것이다 .

 

사용자가 애플리케이션의 모든 계정에 로그인하면

애플리케이션이 일래스틱 캐시에 세션 데이터를 기록하는 것이다. 

 

사용자가 다른 애플리케이션의 다른 인스턴스로 리디렉션 되면 애플리케이션을 일래스틱 캐시에서 직접 세션 캐시를 검색할 수 있다.  -> 사용자는 계속 로그인한 상태로 한 번 더 로그인 할 필요가 없다. 

사용자의 세션 데이터를 일래스틱 캐시에 기록해서 애플리케이션을 무상태로 만드는 것이다 .

The instance retrieves the data and the user is already logged in.

 

ElastiCache - Redis vs Memcached 

레디스: 

다중 az, 장애 극복 및 읽기복제본 

고가용성 

백업과 기능 복원 기능

 

memcached:

데이터 분할에 다중 노드를 사용  sharding 

가용성이 높지 않고 복제도 발생하지 않음

지속적인 캐시가 아님

백업과 복원 기능도 없음. 

단순 분산 캐시


96. ElastiCache 실습

레디스 데이터베이스 만들기 

 

 

Amazon ElastiCache for Redis 시작하기 - Amazon ElastiCache for Redis


 

97. 솔루션 설계자를 위한 ElastiCache

ElastiCache - Cache Security 

1. 일래스틱 캐시의 모든 캐시는 IAM 인증을 지원하지 않는다. 

aws api 수준 보안에서만 사용된다. (캐시 생성, 캐시 삭제 같은 종류의 작업)

 

2. 레디스 인증

레디스 인증을 하려면 레디스 auth를 사용하여 레디스 클러스터를 생성할 때 비밀 번호나 토큰을 설정할 수 있다.

캐시에 들어갈 때 비밀 번호를 사용할 수 있다.

이는 캐시에 사용할 수 있는 보안 그룹에 대한 추가적인 수준의 보안이다. 

데이터 전송중 SSL 보안을 지원한다. 

 

3. 멤캐시트의 경우 

좀 더 높은 수준인 SASL 기반 인증을 지원한다. 

 

Patterns for ElastiCache 

일래스틱 캐시에는 데이터를 불러오는 세가지 패턴이 존재한다 .

 

1. 레이지 로딩 Lazy Loading

모든 읽기 데이터가 캐시되고 데이터가 캐시에서 부실해질 수 있다.

 

2. 라이트 스루 Write Through 

데이터베이스에 기록될 때마다 캐시에 데이터를 추가하거나 업데이트 하는 것이다 .

 

3. 세션 저장소 Session Store

캐시를 세션 저장소로 쓸 수 있다.  TTL (Time To Live) 속성으로 세션을 만료 시킬 수 있음.

 

 

ElastiCache - Redis Use case

시험!! 

게이밍 리더보드 

레디스에는 고유성과 요소 순서를 모두 보장하는 정렬된 집합(Sorted Set)이라는 기능이 있다.

요소가 추가될 때마다 실시간으로 순위가 매겨진 다음 올바른 순서로 추가된다 .


98. 친숙한 포트 목록

아래는 한 번 이상은 확인하는 게 좋은 표준 포트의 목록입니다. 외울 필요는 없습니다(시험에 나오지 않을 거예요). 하지만 중요한 포트(HTTPS - 443번 포트)와 데이터베이스 포트(PostgreSQL - 5432번 포트)를 구분할 수는 있어야 합니다.

중요한 포트:

  • FTP: 21
  • SSH: 22
  • SFTP: 22 (SSH와 같음)
  • HTTP: 80
  • HTTPS: 443

vs RDS 데이터베이스 포트:

  • PostgreSQL: 5432
  • MySQL: 3306
  • Oracle RDS: 1521
  • MSSQL Server: 1433
  • MariaDB: 3306 (MySQL과 같음)
  • Aurora: 5432 (PostgreSQL와 호환될 경우) 또는 3306 (MySQL과 호환될 경우)

 

스트레스받으면서 외우지 마세요. 표준 포트 목록은 오늘 한 번 확인하고 시험 전에 한 번 더 읽어보기만 해도 시험에서는 문제없을 거예요. :)

“중요한 포트”와 “RDS 데이터베이스 포트”를 구분할 줄만 알면 됩니다.


Quiz 6 : RDS, Aurora & ElasiCache 퀴즈 

1. 아마존 RDS가 지원하지 않는 데이터베이스를 고르세요.

RDS는 MySQL, PostgreSQL, MariaDB, Oracle, MS SQL Server, Amazon Aurora를 지원합니다.

 

2. 한 가용 영역에 재해 상황이 발생하더라도 반드시 MySQL 데이터베이스을 사용할 수 있도록 만들기 위한 새로운 솔루션을 계획하고 있습니다. 무엇을 사용해야 할까요?

다중 AZ는 전체 AZ가 차단되었을 경우의 재해 복구를 계획하는 데에 도움이 됩니다. 전체 AWS 리전이 차단될 경우에 대비해 계획을 세울 때에는, AWS 리전에 걸친 백업과 복제본을 사용해야 합니다.

 

3. RDS 데이터베이스가 웹사이트에서 들어오는 요청량을 처리하는 데에 어려움을 겪고 있습니다. 백만 명의 사용자들은 대부분 뉴스를 읽고 있으며, 뉴스가 자주 포스팅되는 편은 아닙니다. 이 문제를 해결하기 위해 사용해서는 안 되는 솔루션은 무엇인가요?

시험 문제를 읽을 때는 주의하시기 바랍니다. 이 문제에서는, 이런 문제점을 해결하기 위해 사용해서는 "안 되는" 솔루션이 무엇인지 묻고 있습니다. ElastiCache와 RDS 읽기 전용 복제본은 읽기 스케일링에 도움이 됩니다.

4. RDS 데이터베이스에 읽기 전용 복제본을 설정해 두었지만, 소셜 미디어 포스트를 업데이트할 시 업데이트가 바로 이루어지지 않는다는 점에 대해 사용자들이 불만을 토로하고 있습니다. 이 경우, 가능성이 있는 원인은 무엇일까요?

5.다음 RDS(Aurora 아님) 기능들 중, 사용 시 SQL 연결 문자열을 변경하지 않아도 되는 것은 무엇인가요?

다중 AZ는 활성화 상태의 데이터베이스 종류와 상관 없이 동일한 연결 문자열을 유지합니다.

 

6. 이 애플리케이션은 Application Load Balancer가 관리하는 오토 스케일링 그룹에서 관리 중인 EC2 인스턴스 플릿에서 실행되고 있습니다. 사용자들이 계속 재로그인을 해야 하는 상황이지만, 일부 EC2 인스턴스에 과부하를 일으킬 수도 있다는 생각에 고정 세션은 활성화하지 않으려 합니다. 어떻게 해야 할까요?

세션 데이터를 ElastiCache에 저장하는 방법은 서로 다른 EC2 인스턴스들이 필요 시 사용자의 상태를 회수할 수 있게끔 하기 위해 흔히 사용됩니다.

 

7. 현재 어떤 분석 애플리케이션이 주요 프로덕션 RDS 데이터베이스에 대한 쿼리를 수행하고 있습니다. 이러한 쿼리들은 언제든 실행되어, RDS 데이터베이스의 성능을 낮추고 사용자 경험에 영향을 미치게 됩니다. 사용자 경험을 증진시키기 위해서는 어떻게 해야 할까요?

읽기 전용 복제본을 설정하면 분석 애플리케이션이 쿼리를 수행할 수는 있으나, 이 쿼리들이 주요 프로덕션 RDS 데이터베이스에는 영향을 미치지 않게 되므로 도움이 됩니다.

8. 주 AWS 리전에 재해가 발생했을 때에 대비하여 다른 AWS 리전에 데이터베이스의 복제본을 만들어 두려 합니다. 이런 작업을 쉽게 구현하기 위해서는 어떤 데이터베이스의 사용을 추천할 수 있을까요?

 

 

 

다중 AZ는 AWS 리전 수준의 재해가 발생할 경우에는 도움이 되지 않습니다. 다중 AZ는 AZ 수준의 재해 발생 시에는 도움이 됩니다.

Aurora 글로벌 데이터베이스를 사용하면 최대 5개의 2차 리전까지 Aurora 복제본을 가질 수 있습니다.

9. 사용자들이 연결되었을 때, 비밀번호를 입력하도록 하여 ElastiCache Redis 클러스터의 보안을 높이기 위해서는 어떻게 해야 할까요?

10. 리전에 정전이 발생하더라도 데이터베이스가 다른 AWS 리전에서 빠르게 워크로드 읽기와 쓰기 작업을 수행할 수 있게끔 RDS PostgreSQL 데이터베이스의 재해 복구 전략을 생성하려 합니다. DR 데이터베이스의 고가용성은 보장되어야 합니다. 어떤 방법을 추천할 수 있을까요?

11. 여러분이 근무 중인 기업은 RDS MySQL 5.6을 데이터베이스로 사용하는 프로덕션 Node.js 애플리케이션을 가지고 있습니다. Java로 프로그래밍된 새로운 애플리케이션은 정기적인 대시보드 생성을 위해 많은 양의 분석 워크로드를 수행할 예정입니다. 이 경우, 주요 애플리케이션에 발생하는 지장을 최소화하기 위해 구현할 수 있는 방법 중 가장 비용 효율적인 솔루션은 무엇인가요?

 

12.MySQL 데이터베이스를 온프레미스에서 RDS로 이전해 둔 상태입니다. 여러 애플리케이션과 개발자들이 이 데이터베이스와 상호작용을 하고 있습니다. 각 개발자들은 기업의 AWS 계정 내에 IAM 사용자를 가지고 있습니다. 각 개발자들을 위해 DB 사용자를 생성하는 대신, 이들에게 MySQL RDS DB 인스턴스로의 액세스를 부여하기 위해서는 어떤 접근법을 취해야 할까요?

IAM 데이터베이스 인증

13.다음 중 RDS 읽기 전용 복제본과 다중 AZ로의 복제 작업을 적절하게 묘사한 설명은 무엇인가요?

14.암호화되지 않은 RDS DB 인스턴스를 암호화하는 방법은 무엇인가요?

15. RDS 데이터베이스를 위해 최대 ............개의 읽기 전용 복제본을 가질 수 있습니다.

 RDS 읽기 전용 복제본을 5개까지 가질 수 있다.

16.다음 중 IA웹 서버 M 데이터베이스 인증을 지원하지 않는 RDS 데이터베이스 기술은 무엇인가요?

 

 

17. 암호화되지 않은 RDS DB 인스턴스가 있는 상태에서 읽기 전용 복제본을 생성하려 합니다. RDS 읽기 전용 복제본이 암호화되도록 구성할 수 있을까요?

암호화되지 않은 RDS DB 인스턴스로는 암호화된 읽기 전용 복제본을 생성할 수 없습니다.

18. 프로덕션에서 실행 중인 한 애플리케이션이 Aurora 클러스터를 데이터베이스로 사용하고 있습니다. 여러분의 개발 팀은 필요할 경우 많은 양의 워크로드를 수행할 수 있는, 스케일이 축소된 애플리케이션에서 애플리케이션의 버전을 실행하려 합니다. 애플리케이션은 대부분의 시간 동안 사용되지 않습니다. CIO는 여러분에게 팀을 도와 비용을 최소화하는 동시에 이를 달성해 줄 것을 요청했습니다. 어떤 방법을 사용해야 할까요?

 

19. 하나의 Aurora DB 클러스터는 몇 개의 Aurora 읽기 전용 복제본을 가질 수 있을까요?

20. Amazon Aurora는 .......................... 데이터베이스를 모두 지원합니다.

 

21. 여러분은 게임 개발 업체에서 솔루션 아키텍트로 근무하고 있습니다. 하나의 게임에서, 실시간 점수를 기반으로 플레이어들의 랭킹을 매겨야 합니다. 여러분의 상사가 게임 리더보드 생성을 위해 효율적이고 고가용적인 솔루션을 설계해 구현해 줄 것을 요청했습니다. 무엇을 사용해야 할까요?

 

【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

 


69. 고가용성 및 스케일링성

Scalability & High Availability 

확장성은 애플리케이션 시스템이 조정을 통해 더 많은 양을 처리할 수 있음을 의미

 

확장성의 두가지 종류

1.  수직 확장성- 인스턴스의 크기를 확장

2.  수평 확장성- 탄력성이라고 불림

 

확장성과 고가용은 다른 개념이다

 

Vertical Scalability

ex 신입 전산원은 1분에 전화 5통 소화 가능하지만

경력직은 1분에 전화 10통을  소화한다. 

-> 더 빠르고 능숙함.

 

t2.micro -> t2.large 로 교체

 

언제?사용

데이터베이스와 같이 분산되지 않은 시스템에 유용하다. 

RDS, ElasticCache 등에서 사요ㅇ

하위 인스터스의 유형을 업그레이드해 수직적으로 확장할 수 있는 시스템이다. 

 

일반적으로 확장할 수 있는 정도에는 한계가 있다.

 

Horizontal Scalability

ex) 전산원을 늘리는 것 

 

수평 확장을 했다는 것은 분배 시스템이 있다는 것을 의미

 

현대 애플리케이션은 대부분 분배 시스템으로 이루어져 있다.

 

ec2에서 매우 쉽다. 

 

High  Availability

고가용성이란 애플리케이션 또는 시스템을 적어도 둘 이상의 aws의 az 나 데이터 센터에서 가동 중이라는 것을 의미한다.

고가용성의 목표는 데이터 센터에서의 손실에서 살아남는 것으로 센터 하나가 멈춰도 계속 작동이 가능하게 끔하는 것

 

예를 들어 뉴욕에도 콜센터가 있고 샌프란시스코에도 콜센터가 있다.

뉴욕 지사에 문제가 생길 경우 샌프란시스코에서 처리를 해줄 수 있다. 

 

RDS 다중 az를 갖추고 있다면 수동형 고가용성(수평형 확장)을 확보한 것이다. 

활성형 고가용성 ( 수직적 확장)

 

High Availability Scalability For EC2 

현재 가장 작은 인스턴스는 t2.nano 0.5 gb 램에 1v cpu 이고

가장 큰 인스턴스는 u-t12tb1.metal로 12.3 tb 램을 갖춘 450vCpus 가 있다. 

 

수평확장 은 스케일 아웃 스케일 인

스케일 아웃: 인스턴스 수를 늘림

스케일 인 : 인스턴스 수를 줄임

 

다른 스케일링 그룹이나 로드 밸런서에도 사용한다. 

 

고가용성은 같은 애플리케이션의 동일 인스턴스를 다수의 AZ 에 걸쳐 실행하는 경우를 의미한다. 

 

다중 AZ 가 활성화된 자동 스케일러 그룹이나 로드밸런서에도 사용된다. 

 


70. Elastic Load Balancing  (ELB) 개요

what is load balancing? 

로드 밸런서는 서버 혹은 서버셋으로 트래픽을 백엔드나 다운스트림 EC2 인스턴스 또는 서버들로 전달하는 역할을 한다. 

 

ELB는 첫번째 유저는 첫번째 인스턴스

두번째 유저는 두번째 인스터스로 ... 연결한다

유조들은 자신들이 백엔드 인스턴스 중 어떤 것에 연결되어 있는지 알 수 없다. 

 

자신들이 ELB 에 연결되면 한 엔드 포인트에 연결이 된다는 것만 안다.

 

Why use a load balancer?

1. 부하를 다수의 다운스트림 인스턴스로 분산하기 위해서이다. 

2. 단일 액세스 지저 (DNS) 를 노출한다.

3. 다운스트림 인스턴스의 장애를 원활히 처리할 수 있다.

4. LB가 상태확인 메커니즘으로 어떤 인스턴스로 트래픽을 보낼 수 없는지 확인해준다. 

5. SSL 종료도 할 수 있으므로 웹사이트에 암호화된 HTTPS 트래픽을 가질 수 있다.

6. 쿠키로 고정도를 강화할 수 있고 

7.여러 az에 걸쳐 고가용성 확보도 가능하며

8. 공용 트래픽과 사설 트래픽을 분리할 수 있다.

 

ELB는 완전 관리형 로드 밸런서이다 .

aws 가 관리하며 어떤 경우에도 작동할 것을 보장한다. 

업그레이드와 유지 관리 및 고가용성을 책임지며 로드 밸런서의 작동 방식을 수정할 수 있게끔 일부 구성 놉(knobs)도 제공한다. 

 

자체 로드 밸런서를 마련하는 것보다 저렴하고 확장성도 용이하다.

 

다수의 aws 서비스와 통합되어 있다. (뛰어난 확장성)

ECS, ACM, CloudWatch, Route 53 , WAF Global Accelerator 등

 

ELB 를 쓰는것이 무조건 이득이다. 

 

Health Checks 상태 확인

상태 확인은 ELB가 EC2 인스턴스의 작동이 올바르게 되고 있는지의 여부를 확인하기 위해 사용된다.

상태 체크를 통해 해당 인스턴스로 트래픽을 보낼지 말지 여부를 정한다. 

상태 확인은 포트라우트에서 이루어진다. 

 

예를 들어 HTTP 프로토콜, 포트는 4567 엔트포인트는 /health 가 있다.

HTTP 상태코드 200으로 응답하지 않는다면 인스턴스 상태가 좋지 않다고 기록된다.

그리고 ELB는 그쪽으로 트래픽을 보내지 않게 된다 .

 

Types of load balancer on AWS

4개의 관리형 로드 밸런서가 있다.

 

1세대

v1, 2009년

CLB 라고 불림 classic

http, https, tcp ,ssl , secure tcp 를 지원

권장하지 않음.

사용이 가능하긴하마.

 

애플리케이션 로드밸런서 V2

v2, 2016

HTTP, HTTPS, websocket

 

네트워크 로드 밸런서

v2 , 2017

TCP, TLS (secure TCP), UDP 

 

게이트웨이 로드밸런서

GWLB, 2020 

3계층과 ip 프로토콜에서 작동 

 

웬만해선 최신형 LB를 사용하자!

 

일부 로드 밸런서들은 내부에 설정 될 수 있어 네트워크에 개인적 접근이 가능하고

웹사이트와 공공(public) 애플리케이션 모두에 사용이 가능한 외부 (private)공공 로드 밸런서도 있다.

 

Load Balancer Security Groups

 

1. LB의 SG는 ...

[SGforLB]

http, tcp, 80, 0.0.0.0/0 

https, tcp, 443, 0.0.0.0/0 

이라면 해당 LB와 연결되는 인스턴스의 sg는

 

2. 인스턴스의 SG는

http, tcp, 80 , SGforLB

 

인스턴스의 소스는 SGforLB가 된다. -> elb에서만 접근할 수 있다. 

 

강화된 보안 매커니즘이다. SG가 연동된다!

 


71. Classic Load Balancer (CLB 공지) 

Note: About the Classic Load Balancer (CLB)

 

The Classic Load Balancer is deprecated at AWS and will soon not be available in the AWS Console.

The exam also has removed any references to it, so we will not cover it in depth in the course, nor the hands-on

 

 

Happy learning!

 

classic loadbalancer는 시험에 나오지 않는다.!

72,73 은 clb 관련된 내용이라서 건너 뛰겠습니다. 


74. Application Load Balancer (ALB) 개요

Application Load Balancer (v2)

애플리케이션 로드 밸런서는 7계층이다.

머신 간 다수의 HTTP 애플리케이션의 라우팅에 사용된다.

이러한 머신들은 대상 그룹이라는 그룹으로 묶이게 된다. 

 

동일 EC2 인스턴스 상의 여러 애플리케이션에 부하를 분산한다. 

(컨테이너와 ECS를 사용하게 된다.)

 

HTTP/2, WebSocket을 지원하며 리다이렉트도 지원하므로 

HTTP에서 HTTPS 로 트래픽을 자동 리다이렉트 하려는 경우

로드밸러서 레벨에서 가능하다.

 

경로 라우팅을 지원

Routing tables to different target groups: 대상 그룹에 따른 라우팅으로

1. URL 대상 경로에 기반한 라우팅이 가능하다.

example.com/users & example.com/posts

 

2.host name에 기반한 라우팅

one.example.com & other.example.com

 

3. Query String, Headers 에 기반한 라우팅

example.com/users?id=123&order=false 

 

애플리케이션 로드 밸런서의 약자로 ALB

 

마이크로 서비스, 컨테이너 기반 애플리케이션에 가장 좋은 로드밸런서

Docker ,ECS 와 가장 적합한 LB 

포트 매핑 port mapping 기능이 있어 ECS 인스턴스의 동적 포트로의 리다이렉션을 가능하게 해준다.

 

CLB 에서 구현하려면 다수의 LB가 필요하지만 ALB는 하나만으로 다수의 애플리케이션을 처리할 수 있다.

 

Application Load Balancer (v2) HTTP Based Traffic

외부 ALB 가 있고  뒤에 EC2 인스턴스로 구성된 대상그룹이 2개 있다. 

Route/user 는 1번째 인스턴스로 라우팅 되고

Route/search 는 2번째 인스턴스로 라우팅 된다. 

 

URL 에서 사용되는 라우팅을 기반으로해 각 대상 그룹을 지능적으로 라우팅한다. (ALB의 역할) 

 

대상 그룹이란? target group?

EC2 가 될 수도 있다. (ASG 도 대상 그룹이 될 수 있다.)

ECS 작업이 될 수도 있다.

람다함수도 가능하지만 잘안쓰임. HTTP 요청이 JSON  이벤트로 변환된다. 

 

IP 주소 앞에 ALB를 둘 수 있지만 무조건 사설 네트워크 여야한다

ALB는 여러개의 대상 그룹으로 라우팅 할 수 있으며 

상태 확인 (health check)는 대상 그룹 레벨에서 이루어진다. ?

 

Application Load Balancer( v2) Query String/ Parameters Routing

 

첫번째 대상 그룹은 EC2 

두번째 대상 그룹은 온프레미스라고 하자

대상 그룹이 존재하기 위해서는 , 등록을 위해서는 서버의 사설 IP 가 대상 그룹에게 지정되어야한다.

-> 대상그룹 2를 쓰고 싶으면 사설 IP를 등록해야한다.

쿼리 내용을 기반으로 다른 대상 그룹을 연결 시키는 예시이다. 

 

Application Load balancer (v2) Good to know 

로드 밸런서를 사용하는 경우에도 고정 호스트 이름이 부여된다.

애플리케이션 서버는 클라이언트의 IP를 직접 보지 못한다.

클라이언트의 실제 IP는 X-Forwarded-For 라고 불리는 헤더에 삽입된다.

X-Forwarded-Port 를 사용하는 포트와  X-Forwarded-Proto 에 의해 사용되는 프로토콜을 얻는다.

즉 클라이언트의 IP인 12.34.56.78 가 로드밸런서와 직접 통신해 연결 종료라는 기능을 수행한다.

 

로드밸런서가 EC2 인스턴스와 통신할 때에는 사설 IP인 로드밸런서 IP를 사용해 EC2 에 들어가게 된다. 

EC2 인스턴스가 클라이언트의 IP를 알기 위해서는 HTTP 요청에 있는 추가 헤더인 X-Forwarded-port, proto를 확인해야한다. (간접적으로 확인)

 


75. Application Load Balancer (ALB) 실습 Part 1

ALB 생성하기

HTTP, HTTPS를 고르자 

 

1단계 : Load Balancer 구성

DemoALB

인터넷 경계

IPv4

 

 

가용 영역 선택 

가용 영역당 1개의 서브넷만 지정할 수 있다.

리스너 구성

 

2단계는 보안 설정 구성인데

뒤에 가서 하자.

3단계 : 보안 그룹 구성

 

 

4단계: 라우팅 구성

새 대상 그룹을 만든다. my-first-target-group

상태 검사 옵션 값은 위와 같이 한다. 

 

5단계: 대상 등록

 

대상 그룹에 등록할 인스턴스가 없기 때문에 생성하러 가자 

 

인스턴스 등록 

#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html

3개 만들기 , 같은 서브넷으로 만든다. 

 

대상 그룹에 인스턴스 2개만 추가하자. 

 

ALB 체크하기

생성된 DNS 로 접속해보자

 

인스턴스 의 보안그룹은 22port 만 열려있다. 사용자 데이터 스크립트는 잘 실행되었다.

계속 타임 아웃이 뜨길래 보안그룹 문제라고 생각했다.

 

alb의 보안그룹은 80번 포트로 모든 소스에 열려있다.

 

인스턴스의 보안그룹은 22번 포트로 모든 소스에 열려있다.

alb에서 인스턴스로 들어갈려면 80번 포트를 열고 alb의 sg를 소스로 하는 인바운드 규칙을 추가한다. 

 

 

 

launch-wizard 의 보안 그룹

하나의 주소로 두개의 인스턴스에 접속 가능하다. 

 

또다른 대상 그룹 생성하기 

아무 인스턴스나 등록해서 second-target-group 을 생성했다. 

리스너 설정하기

demo alb로 이동한다. 규치 보기/편집으로 간다 ( 현재 DemoELB는 first-target-group 으로 연결된다.)

만약 /test 경로를 입력하면 second-target-group으로 연결되게 한다. 

/constant 에 연결하면 고정 에러 페이지가 나오게 한다. 

 

여러가지 다른 방식으로 응답하게 설정했다.

test 로 접속하면 두번째 대상 그룹 화면이 떠야하는데 오류가 뜬다.

EC2 인스턴스가 /test 유형의 쿼리에 응답하도록 구성되지 않았기 때문이다. 

 

 

 

 

정리

리스너 삭제

대상 그룹 두번째 삭제

첫번째 대상그룹에 나머지 인스턴스 추가 


76. Network Load Balancer (NLB) 개요 

Network Load Balancer (v2)

네트워크 로드 밸런서는 L4 로드 밸런서이미로 TCP, UDP 트래픽을 다룰 수 있다.

HTTP를 다루는 L7보다 하위 계층이다.

네트워크 로드 밸런서의 성능은 매우 높다.

초당 수백만 건의 요청을 처리할 수 있다.

애플리케이션 로드 밸런서에 비해 지연 시간도 짧다.

ALB는 400밀리초지만 NLB는 100 밀리 초이다. 

가용 영역별로 하나의 고정 IP를 갖는다. NLB has one static IP per AZ, and supports assigning Elastic IP

탄력적 IP 주소를 각 AZ에 할당할 수 있다. 

 

여러개의 고정 IP를 가진 애플리케이션을 노출할 때 유용하다. 

 

1~3개의 ip로만 액세스할 수 있는 애플리케이션을 만들라는 문제가 나오면 네트워크 로드 밸런서를 옵션으로 고려하자!

고성능, TCP, UDP는 다 네트워크 로드 밸런서의 키워드이다. 

 

NLB는 프리티어에 포함되지 않는다. 

 

Network Load Balancer (v2) TCP (Layer 4 ) Based Traffic

대상 그룹을 생성하면 NLB 가 대상그룹을 리다이렉트한다. 

 

백엔드, 프론트엔드 모두 TCP 트래픽을 사용하거나

백엔드에서는 HTTP를 , 프론트엔드에서는 TCP 를 사용할 수 있다. 

 

Network Load Balancer - Target Groups 대상 그룹 유형

EC2 인스턴스 - 네트워크 로드밸런서가 TCP 또는 UDP 트래픽을 EC2 인스턴스로 리다이렉트 할 수 있다.

IP 주소 - IP주소는 반드시 하드코딩 되어야하고 프라이빗 IP여야한다. 주로 온프레미스가 대상이된다. 

ALB - NLB는 고정된 IP를 가지고 ALB는 HTTP 유형의 트래픽을 처리할 수 있다.

 

상태 체크는 TCP, HTTP, HTTPS 프로토콜을 지원한다. (시험에 나온다.)

 


77. Gateway Load Balancer (GWLB) 개요

GWLB는 배포 및 확장과 aws의 타사 네트워크 가상 어플라이언스의 플릿 관리에 사용된다.

 

 

GWLB는 네트워크의 모든 트래픽이 방화벽을 통과하게 하거나 침입 탐지 및 방지 시스템에 사용한다. 

IDPS 나 심층 패킷 분석 시스템 또는 일부 페이로드를 수정할 수 있지만 네트워크 수준에서 가능하다. 

 

alb에서 애플리케이션으로 이동할 때 모든 트래픽을 검사하게 할려면 ? 

 

유저와 어플리케이션 사이에 GWLB를 둔다. + 타사 가상 어플라이언스 배포

GWLB를 생성하면 이면에서는 VPC 에서 RT (라우팅 테이블) 이 업데이트 된다.

RT 가 업데이트 되었으므로 사용자의 모든 트래픽은 GWLB를 통과하고 -> 타사 가상 어플라이언스 -> GWLB -> 애플리케이션 순으로 트래픽이 이동한다. 

 

방화벽이나 침입 탐지와 같은 것이다 .

 

원리는 

GWLB는 IP 패킷의 네트워크 계층인 L3 이다. 

 

기능 

1. 투명한 네트워크 게이트웨이 ( 하나의 출입문 역할) 

2. 로드 밸런서 

 

6081 번 포트의 GENEVE 프로토콜 

Gateway Load balancer - Target Groups

1. EC2 - 타사 어플라이언스 

2. IP 주소 - 이 경우 개인 (private)IP 여야한다. 자체 네트워크나 자체 데이터 센터에서 이런 가상 어플라이언스를 실행하면 IP로 수동 등록할 수 있다. 

 


78. Elastic Load Balancer - 스티키 세션(Sticky Sessions)

It is possible to implement stickiness so that the sam client is always redirected to the same instance behind a a load balancer

로드 밸런서에서 2가지 요청을 수행하는 클라이언트가 요청에 응답하기 위해 백엔드에 동일한 인스턴스를 갖는 것이다. 

 

클라이언트의 요청에 대한 응답을 동일한 인스턴스가 담당하도록 LB 에 조정하는 일

 

clb, alb 에서 가능하다. 

 client1 의 요청은  1번 ec2 에서 고정하고 

다른 client의 요청은 다른 ec2에서 기억하고 응답한다. 

 

쿠키: 클라이언트에서 로드 밸런서로 요청의 일부로 전송된다. 

고정성과 만료 기간도 있다.

쿠키가 만료되었을시 다른 EC2 인스턴스로 리디렉션 된다

 

고정성을 활성화하면 백엔드 EC2 인스턴스 부하에 불균형을 초래할 수 있다.( 응답한 놈만 응답하기 때문에) 

 

Sticky sessions - cookie Names

고정 세션에는 애플리케이션 기반 쿠키와 기간 기반의 쿠키가 있다. 

 

애플리케이션 기반 쿠키

 

사용자 정의- 사용자 정의 쿠키로 애플리케이션에서 생성된다. 

애플리케이션에 필요한 모든 사용자 정의 속성을 포함할 수 있다. 

쿠키 이름은 각 대상 그룹별로 개별적으로 지정해야하는데 

AWSALB, AWSALBAPP, or AWSABLTG 등의 이름을 사용할 수 없다.

 

애플리케이션 쿠키 

로드밸런서가 생성하며 쿠키이름은 AWSALBAPP 이다 .

 

기간 기반 쿠기 Duration-based Cookies

로드밸런서가 생성하는 쿠키이다. 

쿠키이름은 AWSALB for ALB, AWSELB for CLB 이다.

 

실습- 쿠키 이용하기 

위에서 생성한 ALB 의 주소로 접속하면

매번 다른 인스턴스로 접속한다.

 

고정 세션 활성화 하기

원래 옵션이 더 많은데

일단 진행

계속 똑같은 인스턴스만 응답

AWSALB 쿠키가 생겼으므로 세션기반 쿠키

 

고정성 삭제하고 마무리 

 


79. Elastic Load Balancer - 크로스존 로드밸런싱( Cross Zone Load Balancing)

교차 영역 로드 밸런싱에 관해 알아보자

 

교차 영역 로드 밸런싱을 하면 모든 인스턴스에 고르개 트래픽을 분산 시킨다. 

로드밸런서로는 50 ,50 씩 분배하지만 

모든 인스턴스를 묶어서 10개니까 10%씩 고르게 분산 시킨다 .

 

 

교차 영역 로드 밸런싱을 꺼버리면 로드밸런서 50, 50 씩 트래픽을 가져가고 

로드 밸런서 기준으로 분배한다.

특정 인스턴스에만 부하가 걸린다. 

 

ALB 에서는 교차 영역 로드 밸런싱이 늘 활성화 되어있고 비활성화할 수 없다.

 

보통 데이터가 한 가용 영역에서 다른 가용 영역으로 이동하면 비용을 지불해야한다.

하지만 활성화되어 비활성화할 수 없으니 ALB에서 AZ간 데이터 전송에 관한 비용이 업삳. 

 

NLB는 교차 영역 로드 밸런싱이 비활성화되어 있기 때문에 az 간 데이터 이동에 대한 비용을 지불해야한다. 

 

CLB 는 비활성화가 디폴트 이지만 활성화 후 az 간 데이터 전송은 무료이다. 

 


80. Elastic Load Balancer( ELB) - 연결 트레이닝

연결 드레이닝 - Connection Draining

CLB - 연결 드레이닝

ALB, NLB- 등록 취소 지연 이라고 불린다.

 

인스턴스가 등록 취소, 혹은 비정상 상태에 있을 때 인스턴스에 어느 정도의 시간을 주어 

인-플라이트 요청(in-flight request), 즉 활성 요청을 완료할 수 있도록 하는 기능이다. 

ELB는 등록 취소 중인 EC2 인스턴스로 새로운 요청을 보내지 않는다. 

1초에 3600초 까지 지연시간을 설정할 수 있다. 

지연 시간을 0으로 설정하면  이 기능을 비활성화 할 수 있다. 

짧은 요청의 경우에는 낮은 값으로 설정한다. 

1초보다 적은 아주 짧은 요청인 경우에는 연결 드레이닝 파라미터를 30초 정도로 설정한다.

 

요청 시간이 매우 긴 요청은 높은 값을 지정한다. 


81.  Auto Scailing Group (ASG) 개요

What's an Auto Scaling Group? 

웹사이트 방문자가 갈수록 많아지면서 워크로드가 바뀔 수 있다. 

AWS 에서 EC2 인스턴스 생성 API 호출을 통해서 서버를 빠르게 생성하고 종료할 수 있다.

ASG는 해당 작업을 자동화한다.

 

ASG의 목적

Scale out - EC2 인스턴스를 늘리는 것 

Scale in - EC2 인스턴스를 줄인다. 

최소, 최대 인스턴스 수를 보장한다. 

 

로드 밸런서와 페어링하는 경우 ASG에 속한 모든 EC2 인스턴스가 로드 밸런서에 연결된다. 

인스턴스에 문제가 생기면 종료하고 새로운 인스턴스를 실행한다. 

 

ASG 는 무료이다. 실행되는 ec2 인스턴스는 유료 

 

Auto Scaling Group in AWS 

minimum size : 최소

actual Size/ Desired capacity : 희망

Maximum size : 최대 

 

Auto Scaling Group in AWS With Load Balancer

ASG는 LB와 좋은 조합이다. 

사용자 -> ELB -> ASG -> EC2 

ELB에서 EC2 instance 상태 체크가 가능하다.

 

상태에 문제가 있으면 종료 시키고 새로운 인스턴스를 생성하거나,

ELB가 트래픽을 ASG의 인스턴스로 분배한다. 

 

Auto Scaling Group Attributes

ASG 에서 인스턴스를 추가할때 탬플릿을 기반으로 생성한다. 

탬플릿에는 AMI, 인스턴스 타입, 사용자 데이터 ,EBS 볼륨, 보안 그룹, SSH key pair, IAM Roles for your EC2 Instances

Network + Subnets Information

Load balancer Information 

등 다양한 정보를 가진다. 

 

asg에서 최소, 최대, 초기 용량을 정해야한다. 

스케일링 정책도 정해야한다 .

 

Auto Scaling - CloudWatch Alarms & Scaling 

클라우드 워치 알람을 이용하여 asg의 스케일링을 이용할 수 있다.

metric 지표에 의해 경보를 울린다. ( average CPU, or a custom metric) 

경보에 따라 인스턴스를 늘리거나 줄인다. 


82. Auto Scaling Group ( ASG 실습) 

오토 스케일링 그룹을 생성해보자! 

 

1. 기존의 인스턴스 삭제 

모두 종료 

 

2. ASG 생성하기 

DemoASG 로 

2-1 시작 템플릿 생성

 

#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html

 

2-2 인스턴스 시작 옵션 선택

가용 영역은 3개 선택

시작 탬플릿 재정의에 여러 옵션을 덮어쓰기 할 수 있으나 패스한다.

 

2-3 고급 옵션 구성

기존 로드밸런서에 연결한다.

이미 생성했던 DemoALB 에 연결한다 .

ELB 에서도 상태 확인을 한다. 

2-4 그룹 크기 및 크기 조정 정책 구성

 

asg의 크기를 정한다. 

 

2-5 생성완료

생성 완료 되었다. 

 

3. ASG 확인하기 

최소 를 1로 했기 때문에 인스턴스가 작동한다.

DemoASG 인스턴스가 생성되었다. 

asg 설정에서 ELB 를 선택했고 해당 ELB는 first-target-group 에 연결되어있고

해당 그룹은 DemoASG 인스턴스와 연결되어있다. 

alb에 접속할 수 있다. 

 

3-1 그룹 크기 변경해보자

2,2,4 로 변경했다..

인스턴스가 두개나 실행된다 .

 

인스턴스 2개에 접속한다. 

 

마지막으로 크기를 1,1,1 로 변경한다. 


83. Auto Scaling Groups - Dynamic Scaling Policies

동적 확장 정책의 종류

1. 대상 추적 스케일링

가장 쉽다.

기본 기준선을 세우고 상시 가용 가능하도록한다.

ex) asg 평균 cpu 사용률이 40% 가 유지되게 한다. 

 

2. 단순과 단계 스케일링

좀 복ㄱ잡하다 

CloudWatch 경보를 설정하고 다음과 가팅

전체 ASG 에 대한 CPU 사용률이 70%를 초고하는 경우 용량을 두 유닛 추가하도록 설정한다.

~~ 30% 이하로 떨어지면 유닛 하나를 제거한다. 

등의 설정을 할 수 있다.

 

단 CloudWatch 경보를 설정할 때에는 한 번에 추가할 유닛의 수와 한번에 제거할 유닛의 수를 단계별로 설정할 필요가 있다. 

 

3. 예약된 작업 reserved Scaling

나와 있는 사용 패턴을 바탕으로 스케일링을 예상하는 것.

예를 들어 금요일 오후 5시에 큰 이벤트가 예정되어 있으니 여러 사람들이 애플리케이션을 사용하는 데에 대비해 여러분의 ASG 최소 용량을 매주 금요일 오후 5시마다 자동으로 10까지 늘린다. 

 

4. 예측 스케일링 Predictive Scaling

예측 스케일링을 통해서 AWS 내 오토 스케일링 서비스를 활용하여 지속적으로 예측을 생성할 수 있다. 

로드를 보고서 다음 스케일링을 예측한다. 

시간에 걸쳐 과거 로드를 분석하고 예측이 생성된다.

해당 예측을 기반으로 사전에 스케일링 작업이 예약된다. 

 

Good Metrics to scale one

지표로 삶기 좋은 항목 

1. CPU 사용량

2. 요청 회수

3. 네트워크 입출력 ( 네트워크 과부하)

4. cloudWatch 에서 별도 지표를 직접 설정

 

Auto Scaling Groups - Scaling Cooldowns

스케일링 휴지 (Scaling cooldown)

- 스케일링 작업이 끝날 때마다 인스턴스의 추가 또는 삭제를 막론하고 기본적으로 5분 혹은 300초의 휴지 기간을 갖는다. 

 

휴지 기간에는 ASG가 추가 인스턴스를 추가 또는 종료할 수 없다.

 

이는 지표를 활용하여 새로운 인스턴스가 안정화될 수 있도록 하며 어떤 새로운 지표의 양상을 살펴보기 위함이다. 

 

따라서 스케일링 작업이 발생할 때에 기본으로 설정한 휴지가 있는지 확인해야한다. 

 

조언: 즉시 사용이 가능한 AMI 를 이용하여 EC2 인스턴스 구성 시간을 단축하고 이를 통해 요청을 좀 더 신속히 처리하는 것이 좋다. 


84.  Auto Scaling Group (ASG) - 스케일링 정책 실습 

동적 크기 조정 정책만 실행할 것이다.

 

(예측 크기 조정 정책은 머신 러닝으로 1주일 이상 돌려야한다. )

 

동적 크기 조정 정책 생성

대상 추적 크기 조정, 단계 크기 조정, 단순 크기 조정이 있다. 

단계를 여러 조건을 단계 단계 지정할 수 있고

단순 크기 조정은 1개

여기서는 대상 추적 크기 조정만 할거다.

생성되었다. 

 

asg 크기를 1,1,3으로 변경

현재 하나만 인스턴스 실행중 

EC2 스트레스 테스트 하기 

인스턴스에 접속해서 해당 명령을 해보자

sudo amazon-linux-extras install epel -y
sudo yum install stress -y

다 설치해주자

stress -c 4 명령어를 하면 CPU 의 모든 코어를 100% 쓸 때까지 과부하를 준다 .

자세히 보면 점으로 CPU 사용률이 증가한 것을 볼 수 있다.

작업 기록을 보면 대상 추적 알람이 실행되고 capa 를 늘렸다 .

 

인스턴스를 종료 하거나 재부팅 하면 명령어가 초기화 되니까 cpu 사용률이 낮아진다. 


Quiz 5: 고가용성 & 확장성 퀴즈

 

1. EC2 인스턴스를r4.large에서 r4.4xlarge로 확장하는 것은 .....................(이)라고 합니다.

 

2. EC2 인스턴스의 수를 스케일링하는 오토 스케일링 그룹을 실행하는 것은 .....................(이)라고 합니다.

 

3. Elastic Load Balancer는 .......................(을)를 제공합니다.

AWS에서 관리하는 기반 인프라가 변경되었다고 하더라도, AWS가 정적 엔드 포인트를 사용해 로드 밸런스로 액세스할 수 있기를 원하는 이유입니다.

 

4. Elastic Load Balancer가 관리하는 10개의 EC2 인스턴스 상에서 웹사이트를 실행 중입니다. 웹사이트의 사용자들은 웹사이트에서 다른 페이지로 이동할 대마다 새로 인증을 해야한다는 점에 대해 불만을 토로하고 있습니다. 하지만 여러분의 기기와 하나의 EC2 인스턴스를 지닌 개발 환경에서는 아무 문제 없이 작동을 하고 있기 때문에 곤혹스러운 상황입니다. 무엇이 원인일까요?

ELB 고정 세션 기능은 동일한 클라이언트에 대한 트래픽이 항상 동일한 대상으로 리다이렉트되도록 해줍니다(예: EC2 인스턴스) 이는 클라이언트들이 세션 데이터를 소실하지 않게 해줍니다.

 

5. Application Load Balancer를 사용해 EC2 인스턴스에서 호스팅된 웹사이트의 트래픽을 분배하고 있습니다. 그런데 여러분의 웹사이트가 Application Load Balancer의 IP 주소인 사설 IPv4 주소에서 들어오는 트래픽만을 확인하고 있는 것으로 나타났습니다. 이런 경우, 웹사이트로 연결된 클라이언트들의 IP 주소를 받으려면 어떻게 해야 할까요?

 

Application Load Balancer를 사용하여 EC2 인스턴스에 트래픽을 배분하는 경우, 요청을 받게 되는 IP 주소는 ALB의 사설 IP 주소가 됩니다. 클라이언트의 IP 주소를 받기 위해, ALB는 클라이언트의 IP 주소를 포함하고 있는 X-Forwarded-For라는 헤더를 추가합니다.

6. Elastic Load Balancer가 관리하는 한 세트의 EC2 인스턴스 상에 애플리케이션을 호스팅했습니다. 일주일 후, 사용자들은 가끔씩 애플리케이션이 작동하지 않는다며 호소하기 시작했습니다. 문제점을 조사한 결과, 일부 EC2 인스턴스가 이따금 충돌한다는 문제점이 발견되었습니다. 사용자들이 충돌하는 EC2 인스턴스에 연결되지 않도록 보호하기 위해서는 어떻게 해야 할까요?

 

 

ELB 상태 확인을 활성화하면, ELB가 비정상(충돌) EC2 인스턴스로는 트래픽을 보내지 않게 됩니다.

 

7. 어떤 기업에서 솔루션 아키텍트로 근무하고 있는 여러분은 1초에 수백만 개의 요청을 받게 될 고성능의, 그리고 지연 시간이 적은 애플리케이션을 위한 아키텍처를 설계해달라는 요청을 받았습니다. 다음 중 어떤 종류의 Elastic Load Balancer를 사용해야 할까요?

Network Load Balancer는 애플리케이션이 필요로 할 경우 가장 높은 성능과 가장 낮은 지연 시간을 제공합니다.

8. Application Load Balancer가 지원하지 않는 프로토콜을 고르세요.

 

9.Application Load Balancer는 트래픽을 다른 대상 그룹으로 라우팅할 수 있습니다. 이때 확인할 내용으로 사용할 수 없는 것을 고르세요

ALB는 URL 경로, 호스트 이름, HTTP 헤더 및 쿼리 문자열을 기반으로 트래픽을 다른 대상 그룹으로 라우팅할 수 있습니다.

10. Application Load Balancer의 대상 그룹에 등록된 대상이 될 수 없는 것을 고르세요.

 

11. 규정 준수를 위해, 고정된 정적 IP 주소를 최종 사용자에게 노출하여 사용자들이 안정적이고, 규제 기관의 승인을 받은 방화벽 규칙을 작성할 수 있도록 하려 합니다. 이런 경우, 다음 중 어떤 종류의 Elastic Load Balancer를 사용해야 할까요?

Network Load Balancer는 AZ 당 하나의 정적 IP 주소를 가지며, 여기에 탄력적 IP 주소를 연결할 수 있습니다. Application Load Balancer와 Classic Load Balancer를 정적 DNS 이름으로 사용할 수 있습니다.

 

12. Application Load Balancer 내에 사용자 지정 애플리케이션 기반 쿠키를 생성하려 합니다. 다음 중 쿠키의 이름으로 사용 가능한 것은 무엇인가요?

다음의 쿠키 이름은 ELB가 선점하고 있습니다(AWSALB, AWSALBAPP, AWSALBTG).

13. us-east-1에 있는 한 세트의 EC2 인스턴스에 트래픽을 배분하는 Network Load Balancer가 있습니다. us-east-1b AZ에 2개의 EC2 인스턴스, us-east-1e AZ에는 5개의 EC2 인스턴스가 있습니다. 여러분은 us-east-1b AZ에 있는 EC2 인스턴스의 CPU 사용률이 더 높다는 것을 발견했습니다. 조사를 거친 결과, 두 개의 AZ에 걸쳐 분배된 트래픽의 양은 동일한 것으로 나타났습니다. 이 경우, 어떻게 문제를 해결해야 할까요?

영역간 로드 밸런싱을 활성화하면, ELB가 모든 AZ에 있는 등록된 EC2 인스턴스 전체에 동등하게 분배됩니다.

 

14. 다음 중 하나의 리스너로 다수의 SSL 인증서를 가져올 수 있도록 해주는 Application Load Balancer와 Network Load Balancer의 기능은 무엇인가요?

 

15. 다음과 같은 호스트 이름을 기반으로, 트래픽을 3개의 대상 그룹으로 리다이렉팅하도록 구성된 Application Load Balancer가 있습니다: users.example.com, api.external.example.com, checkout.example.com. 이 각각의 호스트 이름에 HTTPS를 구성하려 합니다. 이런 작업을 위해서는 ALB를 어떻게 구성해야 할까요?

서버 이름 표식(SNI)을 사용하면 동일한 리스너 상에 있는, 자체 SSL 인증서를 가진 다수의 HTTPS 애플리케이션을 노출시킬 수 있습니다. 더 많은 정보는 여기를 참고하세요: https://aws.amazon.com/blogs/aws/new-application-load-balancer-sni/

 

Application Load Balancers Now Support Multiple TLS Certificates With Smart Selection Using SNI | Amazon Web Services

Today we’re launching support for multiple TLS/SSL certificates on Application Load Balancers (ALB) using Server Name Indication (SNI). You can now host multiple TLS secured applications, each with its own TLS certificate, behind a single load balancer.

aws.amazon.com

 

16. 원하는 용량과 최대 용량을 모두 3으로 구성한 오토 스케일링 그룹에 의해 관리되고 있는, 한 세트의 EC2 인스턴스에 호스팅된 애플리케이션이 있습니다. 또한, CPU 사용률이 60%에 이르면 ASG를 스케일 아웃하도록 구성된 CloudWatch 경보도 생성해 뒀습니다. 해당 애플리케이션은 현재 갑자기 많은 양의 트래픽을 전송 받아 80% CPU 사용률에서 실행되고 있는 상태입니다. 이런 경우, 무슨 일이 일어나게 될까요?

오토 스케일링 그룹은 스케일 아웃 시, (구성된) 최대 용량을 넘어설 수 없습니다.

17. Application Load Balancer가 관리하는 오토 스케일링 그룹이 있습니다. ASG가 ALB 상태 확인을 사용하도록 구성을 해둔 상태인데, EC2 인스턴스가 비정상인 것으로 보고되었습니다. EC2 인스턴스에는 무슨 일이 일어나게 될까요?

오토 스케일링 그룹이 EC2 상태 확인(기본 설정)이 아닌 Application Load Balancer의 상태 확인을 기반으로 EC2 인스턴스의 상태를 판단하도록 구성할 수 있습니다. EC2 인스턴스가 ALB의 상태 확인에 실패할 경우, 이는 비정상인 것으로 표시되어 종료되며 ASG는 새로운 EC2 인스턴스를 실행합니다.

 

18. 여러분의 상사가 애플리케이션이 데이터베이스로 보내는 분당 요청 수를 기반으로 오토 스케일링 그룹을 스케일링하라고 요청했습니다. 어떻게 해야 할까요?

 

백엔드-데이터베이스 연결에는 ‘분당 요청'에 해당하는 CloudWatch 지표가 존재하지 않습니다. CloudWatch 경보를 생성하려면 CloudWatch 사용자 지정 지표를 먼저 생성해야 합니다.

19. 오토 스케일링 그룹 (ASG)에서 관리하는 EC2 인스턴스 플릿이 호스팅하는 웹 애플리케이션이 있습니다. 여러분은 애플리케이션 로드 밸런서 (ALB)를 통해 이 애플리케이션을 노출하고 있습니다. EC2 인스턴스와 ALB는 모두 다음 CIDR 192.168.0.0/18을 사용하여 VPC에 배포됩니다. ALB만 포트 80에서 액세스할 수 있도록 EC2 인스턴스의 보안 그룹을 구성하려면 어떻게 해야 할까요?

ALB만이 EC2 인스턴스로 액세스할 수 있게 할 수 있는 가장 안전한 방법입니다. 규칙에서 보안 그룹을 참조하는 것은 매우 강력한 규칙으로, 이 내용을 바탕으로 많은 시험 문제가 출제됩니다. 그러니 이에 관련된 내용은 반드시 숙지하도록 하세요!

20. eu-west-2 리전에서 실행되는 오토 스케일링 구성이 있는데, 두 개의 가용 영역인 eu-west-2a  eu-west-2b 를 생성하도록 설정되어 있습니다. 현재 eu-west-2a에는 3개의 EC2 인스턴스가 실행 중이며, eu-west-2b에는 4개의 EC2 인스턴스가 실행 중입니다. ASG는 스케일 인을 하려 합니다. 이들 중 어떤 EC2 인스턴스가 종료되게 될까요?

 

오토 스케일링 그룹의 기본 종료 정책을 반드시 기억해두세요. 이 정책은 우선 AZ에 걸친 밸런싱을 시도하며, 실행 구성이 오래된 순으로 종료합니다.

 

실행 템플릿이 제일 오래된 순으로 종료한다! 

 

21. 애플리케이션은 Application Load Balancer와 오토 스케일링 그룹과 함께 배포됩니다. 현재 ASG를 수동으로 스케일링하고 있는 상태에서, EC2 인스턴스로의 평균 연결의 수를 1,000회 정도로 유지하기 위한 스케일링 정책을 정의하려 합니다. 이 중에서 어떤 스케일링 정책을 사용해야 할까요?

 

 

22. 오토 스케일링 그룹이 관리하는 EC2 인스턴스에 호스팅된 애플리케이션으로 들어오는 트래픽이 급격하게 증가하여, ASG가 스케일 아웃되고 새로운 EC2 인스턴스가 실행되게 되었습니다. 트래픽은 계속해서 증가하지만, ASG는 5분이 지나기 전까지는 새로운 EC2 인스턴스를 곧바로 실행하지 않습니다. 이런 경우, 가능성이 있는 원인은 무엇일까요?

 

오토 스케일링 그룹에는 각 스케일링 조치 이후 냉각 기간을 갖습니다. ASG는 냉각 기간 동안 EC2 인스턴스를 실행하거나 종료하지 않습니다. 이를 통해 지표들을 안정화시킬 수 있는 기간을 갖습니다. 냉각 기간의 기본 값은 300초(5분)입니다.

 

 

23. 지난 달, 어느 기업이 보유한 오토 스케일링 그룹 내의 무작위 EC2 인스턴스가 갑자기 충돌을 일으켰습니다. ASG가 비정상 EC2 인스턴스를 종료하고 이를 새로운 EC2 인스턴스로 대체하고 있는 관계로, EC2 인스턴스가 충돌하게 된 원인을 찾을 수 없는 상태입니다. 이 문제를 해결하고 ASG가 비정상 인스턴스를 종료하는 것을 막기 위해서는 어떤 문제 해결 조치를 취해야 할까요?

asg 수명 주기 후크? Amazon EC2 Auto Scaling 수명 주기 후크 - Amazon EC2 Auto Scaling

 

Amazon EC2 Auto Scaling 수명 주기 후크 - Amazon EC2 Auto Scaling

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

Amazon EC2 Auto Scaling은 오토 스케일링에 수명 주기 후크를 추가할 수 있는 기능을 제공합니다. 이러한 후크를 사용하면 Auto Scaling 인스턴스 수명 주기의 이벤트를 인식하는 솔루션을 생성한 다음 해당 수명 주기 이벤트가 발생할 때 인스턴스에 대한 사용자 정의 작업을 수행할 수 있습니다. 수명 주기 후크는 인스턴스가 다음 상태로 전환되기 전에 작업이 완료될 때까지 대기할 지정된 시간(기본적으로 1시간)을 제공합니다.

+ Recent posts