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에 존재하지 않을 수 있다. 인스턴스 타입을 변경한다.

 

+ Recent posts