728x90
728x90
Auto Scaling Group - 솔루션 아키텍트용 ASG 기본 종료 정책 아래는 기본 종료 정책에 대한 우선 순위이다. 가장 많은 인스턴스가 있는 AZ을 찾는다. AZ에 여러개의 인스턴스가 존재할 경우 가장 오랫동안 실행된 인스턴스를 종료한다. 아래 그림을 보면 오토 스케일링 그룹이 있고 두개의 가용 영역이 있다. A 가용 영역에는 두 개의 v1 인스턴스와 두 개의 v2 인스턴스가 실행 구성으로 되어 있고 B 가용 영역에는 세 개의 v1 인스턴스가 있다. v1은 가장 오랫동안 실행된 인스턴스이다. 기본 종료 정책에 따라 우선 가장 많은 인스턴스가 있는 A 가용 영역에서 인스턴스를 삭제할 것이다. 또한 네 개의 인스턴스 중에서 가장 오랫동안 실행된 v1 인스턴스를 선택하여 종료시킨다. 기본 종료 정책..
Auto Scaling Group 조정 정책 오토 스케일링 그룹의 스케일링 정책에 대해 살펴보자 동적 스케일링 정책(Dynamic Scaling Policies) 동적 스케일링 정책은 세 가지 유형이 존재한다. 대상 추적 스케일링(Target Tracking Scaling) 가장 간단하고 설정하기도 쉽다. 예를 들어 오토 스케일링 그룹의 모든 EC2 인스턴스 평균 CPU 사용률을 추적하여 40% 대에 머무르게 하고 싶을 경우 사용한다. 즉, 기본이 되는 기준점을 세우고 상시 가용이 가능하도록 하는 것이다. Simple / Step Scaling 대상 추적 스케일링 보다 좀 더 복잡하다. 예시1) CloudWatch 에 전체 ASG 에서 CPU 사용률이 70%를 초과하는 경우, 두 개의 유닛을 추가할 수 ..
Connection Draining 한 기술 회사에서 운영하는 서비스는 ELB(Elastic Load Balancer)뒤에 EC2 인스턴스를 두고 부하를 분산하는 방식을 사용하고 있다. 이때, EC2가 health check 에 실패하여 unhealthy 상태로 들어가게 되면 진행중이던 in-flight Request 가 끊어지는 이슈가 발생하게 된다. 이를테면, 특정 EC2 인스턴스로부터 수십초가 걸리는 파일 다운로드를 수행중이라고 했을 때, 파일을 다운로드받는 도중, 해당 인스턴스가 unhealthy상태로 바뀌게 되면 커넥션이 끊어지면서 파일 다운로드에 실패하게 되는 것이다. 이러한 상황을 막기 위해 취할 수 있는 방법으로 Connection Draining 을 사용한다. Connection Drai..
Sticky Sessions (Session Affinity) 하나의 백엔드 서버 인스턴스를 복사하여 여러개의 인스턴스로 띄웠을 때 AWS 로드 밸런서는 traffic 에 따라서 인스턴스에 http request 를 분산하여 전달하기 때문에 A 서버는 session 정보를 가지고 있지만 B 서버는 가지고 있지 않을 수 있는 상황이 발생한다. 즉, 로그인을 하고 난 다음 새로고침을 했더니 로그아웃이 될 수도 있다는 뜻이다. 다중 서버 구성 시에 발생하는 문제로 AWS ELB 를 사용하고 있다면 Sticky Session 이라는 간단한 설정으로 해결할 수 있다. 다시 말해서 sticky 하게 해결한다는 것, A 라는 사용자가 X 라는 서버에서 응답을 받았다면 X 라는 서버에서 사용자에게 계속 응답을 주도록 ..
Application Load Balancer 실습 HTTP 와 HTTPS 유형의 Application Load Balancer 를 만들어보자. Application Load Balancer 가 어떻게 작동하는지 볼 수 있는 AWS 서비스가 있다. EC2 서비스로 들어와서 로드 밸런서 콘솔창으로 이동, 로드 밸런서를 생성해보자 Application Load Balancer 를 클릭하고 Create 버튼을 클릭한다. 이름과 스키마 IP address type 을 정하고 network mapping 을 지정하는 등 각종 설정을 할 수 있다. 이름은 DemoALB 로 짓는다. Schema 스키마에서는 Internet-facing 과 Internal 을 설정할 수 있는데, Internet-facing 로드 밸런..
Classic Load Balancer(CLB) CLB 는 TCP (4 계층), HTTP & HTTPS (7 계층) 프로토콜을 지원한다. 헬스 체크 또한 TCP 또는 HTTP 프로토콜 기반이다. 클래식 로드 밸런서는 호스트명이 고정되어 있다는 것이다. ex) XXX.region.elb.amazonaws.com HTTP listener 로 클래식 로드 밸런서에 연결하는 클라이언트와 CLB 를 통해 인스턴스에 트래픽을 리다이렉션하는 작업을 진행할 것이다. 클래식 로드 밸런서를 만들기 전에 인스턴스를 생성한다. 사용자 데이터에는 아래 처럼 작성한다. #!/bin/bash sudo yum update -y sudo yum install -y httpd sudo systemctl start httpd sudo s..