Module 6a : 고가용성 시스템 구성


Elastic Load Balancing

- 사용자 트래픽의 부하분산

- 타겟 인스턴스의 헬스체크

- 리전 레벨 서비스

    - 인스턴스에 대한 관리

- CLB, NLB, ALB, GLB

- 인스턴스에 대한 SG 설정 가능

- Web - WAS - DB 3Tier 구조의 사이에 ELB 배치 가능

- Auto Scaling 및 CloudWatch를 통한 모니터링 가능

 

ELB Access Logs

- Access logs 옵션을 활성화하고 S3 버킷을 잡아주어 사용할 수 있다.

- gzip으로 압축하여 저장된다.

- 포함되는 정보

    - 요청 타임스탬프

    - 클라이언트 IP 주소

    - 대기 시간

    - 요청 경로

    - 서버 응답

 

ELB HTTP Error Codes

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html#load-balancer-http-error-codes

 

Troubleshoot your Application Load Balancers - Elastic Load Balancing

Troubleshoot your Application Load Balancers The following information can help you troubleshoot issues with your Application Load Balancer. A registered target is not in service If a target is taking longer than expected to enter the InService state, it m

docs.aws.amazon.com


Amazon Route 53

- 리전에 대한 상태 확인 및 장애 조치 수행

- 100% 사용 가능한 서비스 수준 계약(SLA)

- 타 도메인 서비스로부터 도메인 네임을 이전 가능

- Record Set에 Primary, Secondary... 리전 설정

- Health Checker 생성 및 주기 설정

    - 응답이 오지 않을 시 해당 리전에 대해 Record Set 업데이트

- 글로벌 레벨 서비스

    - 리전에 대한 관리

 

Alias 기능

아래와 같이 도메인에 대한 앨리어스가 가능하다.

app.examplecorp.com ↔ web-app.us-west-2.elb.amazonaws.com

 

Route 53 라우팅 정책

- 단순 라우팅 정책

    - 인스턴스를 1개만 사용할 때

- 가중치 기반 라우팅 정책

    - 블루/그린 배포에서 점진적으로 트래픽 비율을 바꿀 때 사용

- 지연 시간 라우팅 정책

- 장애 조치 라우팅 정책

- 지리 위치 라우팅 정책

    - 사용자의 위치에 따라 해당 지역의 언어로 서비스를 제공하거나 특정 지역을 차단해야 할 때 사용

- 지리 근접 라우팅 정책

    - 최소한의 네트워킹 거리를 위해 가장 가까운 엣지 로케이션에 연결

- 다중 응답 라우팅 정책

 


Module 6b : 크기 조정 자동화


EC2 Auto Scaling 구성 단계

1. Launch Configuration(Legacy)/Template 생성

    - 인스턴스 구성

        - 인스턴스 유형

        - 보안 그룹(SG)

        - 인스턴스 키 페어

        - AMI

        - 스토리지

        - IAM 역할

        - 사용자 데이터

2. ASG(Auto Scaling Group) 생성

    - 조정 범위 설정

        - Min

        - Max

        - Desired

    - ELB와 통합 가능

    - 인스턴스를 여러 가용 영역에 분산 및 밸런싱 가능

3. Auto Scaling 정책 선택 및 구성

    - 정책 트리거 방법

        - 예약됨

            - 배치성 업무

        - 수동

        - Amazon CloudWatch 제어

            - 실시간 이벤트(Event Driven?) 모니터링을 통한 동적 제어

            - ex) CPU 사용량 50% 이상 시 인스턴스 1개 추가

    - 확장 또는 축소의 정도

        - ChangeInCapacity

        - ExactCapacity

        - ChangeInPercent

 

Launch Template

- 기능

    - 버전 관리

    - 재사용

    - 업데이트

- 고급 세부 정보 설정

    - IAM 인스턴스 프로파일(Role)

    - 종료 방지(Terminate)

    - 세부적인 CloudWatch 모니터링

    - 라이선스 구성

    - 사용자 데이터 스크립트(=NCP의 Init Script)

 

Auto Scaling Status Checks

- System Status Checks (1/2)

    - EC2 인스턴스가 실제 돌고 있는 물리적인 서버에 대한 상태 점검

- Instance Status Checks (2/2)

    - EC2 인스턴스 자체에 대한 상태 점검

- ELB에서의 상태 체크 옵션도 같이 선택하여 빠른 주기의 검사를 수행할 수 있다.

 

안정된 상태의 Auto Scaling Group 생성

핵심 서비스가 아닌 간단한 서비스를 하나의 ASG로 묶은 후 Min, Max, Desired 값을 모두 같은 값(인스턴스 수)으로 주어 인스턴스 실패 시 새로운 인스턴스를 재시작하게 함으로 부가 서비스들을 안정적으로 운영할 수 있다.

 

Auto Scaling 정책

- 예약된 조정

    - 특정 날짜 또는 시간을 지정한다.

- 동적 조정: 단순 조정 정책

    - 대상 리소스 사용량이 특정 임계값을 초과하면 스케일링 한다.

- 동적 조정: 단계 조정 정책

    - 단순 조정과 유사하나 사용량에 대해 세부적인 단계를 구분하여 보다 효율적인 스케일링을 수행한다.

- 동적 조정: 대상 추적 정책

    - 마치 에어컨 온도 설정과 같이 지표에 대한 지정 값을 설정하면(예: CPU 사용량 50%) 트래픽이 급증하여 CPU 사용량이 50%가 넘어가면 50% 이하로 떨어질 때까지 EC2 인스턴스를 계속 추가하는 방식이다.

- 예측 정책

    - AWS에서 과거의 리소스 증감량 등의 데이터를 기반으로 머신러닝을 통해 예측하여 스케일링 해주는 방식이다.

 

축소 종료 정책 (Termination Policies)

- Default

    - 각 가용영역에 인스턴스가 고르게 분포되도록 Scale In 한다.

- Allocation Strategy

    - ASG에서 인스턴스를 종료하여 나머지 인스턴스를 정의된 allocation strategy에 맞게 정렬해 온디맨드 용량 또는 스팟 용량을 충족한다. 이 정책은 선호하는 인스턴스 유형이 변경된 경우 유용하다.

- Newest Instance

    - 최신 인스턴스를 종료한다. 새로운 시작 구성을 테스트하지만 프로덕션 상태로 유지하고 싶지 않은 경우 유용하다.

- Oldest Instance

    - 가장 오래된 인스턴스를 종료한다. ASG의 인스턴스들의 타입을 변경할 때 점진적인 교체가 가능하다.

- Oldest Launch Template

    - 가장 오래된 런치 템플릿을 가진 인스턴스를 종료한다. 그룹을 업데이트하고 이전 구성에서 인스턴스를 단계적으로 종료할 때 유용하다.

- Oldest Launch Configuration

    - Oldest Launch Template과 같다.

- Closet To Next Instance Hour

    - 다음 번 결제 시간에 가장 근접한 인스턴스를 종료한다. 시간제로 요금이 청구되는 인스턴스의 사용을 극대화할 수 있게 한다.

 

스래싱 방지

스래싱이란 Scale Out/In이 짧은 간격으로 발생해 인스턴스의 생성과 삭제를 지속하는 현상이다(Ping Pong).

- 경보 지속 기간

    - 10분 동안 CPU 사용량이 50% 초과한다면 Scale Out

- 휴지 기간

    - 5분 동안 조정을 일시 중지

- 인스턴스 워밍업 기간

    - 인스턴스가 올라온 후 5분 간 사용하지 않는다.

 

오픈소스 로드 테스트 도구

- The Grinder

- JMeter


EC2 요금 옵션

- On-demand 요금제 (default)

    - 상대비용: 100

    - 원할 때 사용 및 중지 가능

    - 사용한 만큼 시간(Hour) 단위로 지불

    - 새로운 사업 또는 프로젝트 진행 시 사용해보고, 길게 운영할 것 같다면 RI로 전환하는 것도 좋다.

- 예약(RI=Reserved Instance) 요금제

    - 상대비용: 35 (온디맨드 대비 최대 65% 저렴)

    - 1년, 3년, 선불, 부분, 후불 등의 옵션이 있는 약정 형태.

    - 사전 신청 필요

    - 약정 중도 해지 불가

    - 긴 기간 동안 리소스의 유휴 시간 없이 쭉 사용한다면 유리하다.

- Spot Instance 요금

    - 상대비용: 10 (온디맨드 대비 최대 90% 저렴)

    - 시장 가격에 따라 결정

        - 여분 리소스가 많으면 AWS에서 가격을 낮춰 Spot Instance 사용 유도

        - Spot Instance 사용자가 많아 여분 Pool이 줄어들면 가격 상승

        - 사용하고 있는데 시장가가 오르면 2분 전에 알리고 회수해간다.

    - AWS의 여분의 하드웨어 리소스를 제공

    - 시간에 여유가 있고 컴퓨팅 리소스가 중지되어도 괜찮은 경우 사용한다.

    - Spot Instance를 얼마나 많은 비율로 사용하는가에 따라 지불 비용이 크게 달라진다.

 

비용 효율적 Auto Scaling

ASG에서 Scale Out 시 1차 시도로 설정한 가격에 따라 Spot Instance를 생성함으로 하고, 지정 가격보다 시장가가 높다면 2차로 On-demand로 인스턴스를 생성하는 방식 등으로 비용 효율적인 운영이 가능하다.

 

AWS License Manager

타사 제품의 유료 라이센스를 관리해주는 도구이다. 하드웨어 제한을 통해 초과요금이 발생하지 않게 한다.

1. 라이센스 구성 만들기

2. AMI에 라이센스 구성 연결

3. 인벤토리 검색 및 라이센스 추적

4. 알림을 사용하여 라이센스 제어 및 관리

 

문제 해결

오류 메시지: AMI<AMI ID>(은)는 대기 중이며 실행할 수 없습니다.

→ 새로 생성되어 준비 중인 AMI일 수 있다. 조금 기다린 후 재시도해본다.

 

오류 메시지: 요청된 구성이 현재 지원되지 않습니다.

→ 경우에 따라 Launch Template에 구성한 인스턴스 타입(ex: t2.small)의 하드웨어 장비가 해당 AZ에 존재하지 않을 수 있다. 인스턴스 타입을 변경한다.

 

ENI (Elastic Network Interface)

탄력적 네트워크 인터페이스는 가상 네트워크 인터페이스이다.

동일한 가용역역 안에서 EC2 인스턴스 간에 이동할 수 있다.

새 인스턴스로 이동할 때 ENI는 다음을 유지한다.

  • Private IP Address
  • Elastic IP Address
  • MAC Address

 

VGW(Virtual GW) & CGW(Customer GW)

VGW란 VPC마다 하나씩 존재할 수 있는 가상 프라이빗 게이트웨이이다.

VGW를 통해 다른 VPC와 통신하거나 고객의 On-premise 네트워크에 연결할 수 있다.

이 때 고객 쪽의 게이트웨이는 CGW라고 한다.

 

하나인 VGW에 여러 회선을 연결하여 사용할 수도 있으며, 연결 방식은 AWS Direct Connect VPN으로 나뉜다.

 

AWS Direct Connect (DX) vs. VPN

기준 DX VPN
연결 방식 전용선 인터넷
연결 매개체 DX Location 없음
통신 속도 빠름 보통
보안성 높음 보통
비용 비교적 높음 비교적 낮음

 

DX - 중요

DX는 AWS와 협약을 맺은 회사들로부터 제공되는 전용선을 통해 통신을 하는 것이다.

VPN 방식에 비해 Network Bandwidth가 확보되고, 보안적 측면에서의 이점도 확실히 가져갈 수 있다는 장점이 있다.

현재 DX Location을 제공하는 파트너는 LG U+, 세종텔레콤, Kinix, Dream Line, Console Connect 이렇게 5개가 있다.

가격대는 DX Partner, Network Bandwidth 등에 따라 천차만별이다.

 

VPN

통상적으로 쓰이는 방식이다.

인터넷 회선을 통해 통신한다. DX 대비 속도가 떨어지고 보안이 완전하지 않을 수 있다.

보안과 속도가 중요한 케이스에선 DX를 메인, VPN을 보조회선으로 사용하기도 한다.


VPC Peering

2개의 VPC를 직접적으로 연결해 IGW 또는 VGW를 통하지 않고도 서로 간에 통신할 수 있게하는 기능이다.

고가용성 연결로 단일 장애 지점이 없고 대역폭 병목 현상 또한 일어나지 않으며, 트래픽은 항상 글로벌 AWS 백본에서 유지된다. 추가로 서로 다른 리전 간의 연결 또한 가능하다.

2개의 VPC를 각각 Requester와 Accepter로 잡아 Peering Connection을 생성하고, 아래와 같이 각 VPC의 라우팅 테이블에서 서로를 알도록 라우팅해주면 된다.

이를 통해 아래와 같은 인프라를 가져가는 것이 가능하다.

다만 전이적인 Peering은 불가하기에 너무 많은 Peering Connection이 필요할 경우엔 사용하기 힘들다.

n/2 * n-1

연결할 VPC 수를 위 식에 대입하면 만들어야 하는 라우팅 테이블의 수가 나오는데 이 규모가 방대해지면 효율이 크게 떨어지기 때문에 Transit Gateway를 사용해야 한다.

 

Transit Gateway - 중요

이 방식은 피어링과 달리 VPC 또는 온프레미스 네트워크 간 직접 연결하지 않고 트랜짓 게이트웨이를 통해 연결한다.

하나의 트랜짓 게이트웨이로 최대 5000개의 연결을 관리할 수 있으며, 이 트랜짓 게이트웨이의 라우팅 테이블은 연결된 모든 네트워크를 알고 있다. 

 

트랜짓 게이트웨이를 통해 아래와 같은 시나리오를 만족할 수 있다.

 

VPC Endpoint

VPC의 엔드포인트는 다른 AWS 엔드포인트 서비스에 Private하게 연결할 수 있다.

VPC Peering과 비슷하지만, 엔드포인트는 애플리케이션/서비스에 적용한다는 점이 다르다.

엔드포인트에는 두 가지 유형이 있는데, 인터페이스 엔드포인트와 게이트웨이 엔드포인트이다.

 

Interface Endpoint

ENI와 연결된다. Amazon EC2 API, Amazon SNS, AWS Systems Manager 그리고 다른 AWS 계정에서 호스팅하는 엔드포인트 서비스 등이 여기 포함된다. 

ENI는 EC2 Instance에 달려있는 것이기 때문에 많은 엔드포인트 연결을 필요로 한다면 EC2 Instance 생성 시에 미리 많은 ENI를 생성해 두어야 할 것이다.

 

Gateway Endpoint

라우팅 테이블과 연결된다. Amazon S3, Amazon DynamoDB가 여기 포함된다.


ELB (Elastic Load Balancing)

연결된 인스턴스들에 대해 주기적으로 Health Check를 하며, 200번 코드를 반환하는 정상 작동 중인 인스턴스에만 요청을 전송한다. 

 

ELB의 종류

  • ALB (Application) : 7계층에서 동작. HTTP 및 HTTPS 트래픽의 고급 로드 밸런싱. RR(Round Robin) 알고리즘을 통한 LB.
  • NLB (Network) : 4계층에서 동작. TCP, UDP, TLS 트래픽의 로드 밸런싱. Hashing 알고리즘을 통한 LB.
  • CLB (Classic) : 구세대 통합형 LB. EC2 Instance 신규 등록 작업 불가. 예전부터 쓰고 있는 고객들이 있기에 Deprecated 되지 않고 있음.

 

ELB 동작 원리

위 사진과 같이 2개의 ELB가 배치되며, Internet Facing ELB와 Internal ELB로 나뉜다.

  1. Internet Facing에서 Public Subnet의 Instance들에게 Load Balancing을 해주면
  2. 그 Instance들로부터 Internal ELB로 전달.
  3. 이후 Private Subnet으로 다시 LB된다.

IAM (Identity and Access Management)

말 그대로 인증과 권한에 대한 관리.

IAM의 4개의 주요 Entity는 다음과 같다.

 

User : 단일 IAM 사용자이다.

User Group : 보통 사내 부서 별로 나뉘어진 개별 그룹이다.

Role(역할) : (모자처럼 생겼으니)모자를 쓰고 있는 Duration만큼 임시 자격 증명.

Policy : AWS Service에 대한 액세스만 제어. User, User Group, Role에 권한 부여. JSON 파일 형식이다.

 

Federation User

연동 자격 증명 관리. On-premise에서 관리하다가 AWS를 잠깐 관리하기 위해 On-premise의 자격 증명을 받고 AWS에서 권한을 연동해 간단하게 관리할 수 있음.

 

Root User

결제의 주체. 모든 AWS 서비스와 리소스에 대한 전체 액세스 권한을 갖는다.

Admin 생성 및 사용, Root 접근에 대한 자격 증명 잠금을 하는 것이 안전하다.

 

IAM 사용자 생성

기본적으로는 묵시적 Access Deny이다. 가장 강하게, 최우선으로 권한을 제한하려면 명시적으로 Deny한다.

AWS Management Console 또는 CLI에 대한 액세스는 명시적으로 부여되어야 한다.

 

리소스 기반 - 연결된 AWS 리소스 : Amazon S3, Amazon S3 Glacier 등

자격 증명 기반 - 연결된 IAM 보안 주체 : User, User Group, Role

'IT > AWS 공인 교육' 카테고리의 다른 글

Systems Operations on AWS - Module 1~2  (0) 2021.11.29
Architecting on AWS - 03  (0) 2021.11.13
Architecting on AWS - 04  (0) 2021.11.13
Architecting on AWS - 01  (0) 2021.11.10
AWS Technical Essentials  (0) 2021.11.09

+ Recent posts