Server/AWS

Youtube Lecture - 5

포항돼지 2023. 6. 30. 11:55

EC2 Autoscaling

scaling = 성능 늘리는거

2가지 종류가있음

1. Verticla scale

성능이 16배 올라가는데 비용이 30배 올라감.

시험볼때 60점에서 80점 올리는거나, 80점에서 90점올리는거나 공부량이 비슷함 -> unfair함

효율이 떨어짐

성능이 올라가지만 비용이 기하급수적으로 올라감

 

2. Horizontal Scale (Scale Out)

16배의 성능의 CPU가 필요한 경우, 똑같은 EC2 16개 만드는 방법

vertical 보다 비용은 싸지만, 다른 인스턴스가 늘어나는 것 이기때문에 아키텍쳐 고려해야함 -> 조금 어려움

클라우드환경 에서는 Scale Out을 많이씀. 그래서 처음 구성할때 유연하게 대처 할수 있도록 염두에 두어야한다
이 Horizontal scaling을 컨트롤 하기위해 나온 서비스가 AWS Auto Scaling

자동으로 scaling작업을 해주는거

subsidiary scaling service

 

모니터링을 통해 Autoscaling 을 언제 어떻게 실행 시킬지 정함
이렇게 돌다가
서버 하나 터졌을때 auto scaling이 감지를해서
시작구성 config확인해서 터진 서버에 넣어줌

 

 

 

1. 시작템플릿 먼저 만들어야함

어떤 EC2를 어떻게 올릴지 간소화 및 표준화 하는 템플릿 만드는거

템플릿 만들면서 AMI 선택해서 EC2 생성 , 네트워크 인터페이스도 활성화 해놔야 접근 및 컨트롤 가능

보안그룹에서 네트워크 인터페이스 설정해줌

 

2. Autoscaling Group 생성 해서, 인스턴스 시작 옵션, 가용영역 선택

로드밸런싱도 여기서 추가&제거 가능

태그도 verify 용으로 잘 달아주는게 좋음

 

이렇게 automatic하게 생성된 EC2들도 traffic control 이 필요한데, 이걸 해주는게 바로 ELB (Elastic Load Balacer)가 하는 일임

 

 

Elastic Load Balancer

Autoscaling 을 한 EC2를 모두 사용하기 위해서는, User입장에서는 모든 아이피를 다 알고 있어야함,근데 사실상 이거는 불가능. 그래서 로드밸런서 활용 , 아이피 주소 바꼇을경우도 활용

 

인스턴스가 수도없이 많을 경우에도 아이피 관리 및 다른거 관리 불가능함

그래서 나온게 ELB

 

이렇게 로드밸런서에서 트래픽 알아서 분산 시켜줌

로드 = 부하

밸런스 = 분산

 

Client 가 EC2에 도달하기 전에, Gateway Load Balancer가 그 패킷을 검사 하는?? 약간 그런 개념인듯

그래서 방화벽, 트래픽 분석, 캐싱 인증 로깅 등등 보안쪽도 작업 및 패킷 검사도 해주는듯

 

ALB (Application Load Balancer)

 

ALB 대상그룹 (Target Group) = ALB를 어따 보낼지 정하는 그룹

  • 구성
  • 3 + 1 가지 종류
  • Instance = EC2
  • IP = Private IP로 사용
  • Lambda = 람다 함수로 연동가능
  • ALB = 다른 ALB랑 연동 해서 컨트롤도 가능

 

프로토콜 = Http,https,gRPS

 

ALB 대상 그룹 통신 하는 방법 , 도메인 기반으로 대상그룹 verification 가능 , 그리고 그에맞는 인스턴스 대상그룹에 트래픽을 보냄 , 주소 및 포트도 읽을수 있음
아키텍쳐
인스턴스 만들때 사용자 데이터 넣음 = 인스턴스 시작하면 실행되는 Bash Script

EC2 템플렛 만들고 (Bash 실행하는거, index.html 수정하는 스크립트)> 오토스케일링 프로필 가서 > 시작 템플릿을 수정 하면됨

 

 

로드 밸런서 만드는법

1. 대상그룹 생성 > 인스턴트 할당 > 대상그룹 생성

유형 = 인스턴스

 

2. 로드밸런서 만들기

- Application/Netowork/Gateway 중 선택

- 대상그룹 선택 (아까 만들어 놓은거 {EC2 포함되어있는그룹})

- 조건내용 : http로 통신하면, 이 대상그룹으로 연결 시키겠다 라고 설정 가능 (ALB기능)

- 더불어 조건내용 더 추가 가능함

- 이렇게 아까 만든 대상그룹을 연동 시키면, 로드밸런서가 2개의 EC2를 번갈아 가면서 트래픽을 보내고 받고 함

- 이렇게 만들어진 로드밸런서를 오토스켈링 그룹에 붙이기

 

3. 로드밸런서를 오토스켈링에 붙이기

오토스케일링 편집 옵션 들어가서 로드밸런서 대상그룹 선택 하면됨

이렇게 하면, 오토스케일링에서 생성되는 모든 EC2는, 로드밸런서와 연동이된 대상그룹이랑 같이 연동이 되는 것

 

Case : 만약에 Auto Scaling 은 잘 되는데 Load blancer 가 죽으면 어떡하냐? (연동된 http 웹서버가 죽은 경우)

로드밸런서 입장에서는 웹서버가 죽었기 때문에 아무것도 보여줄수가 없다 -> 비정상

오토스케일링 > EC2만 제대로 돌아가면 상관없기때문에 계속 돌아감

502 Gate Way 오류뜸 = 내가 트래픽 분산하려고 했는데 걔가 아무거도 안주더라.. 아파치 서버 종료했기때문 , 다른 웹서버 돌고있는 EC2들은 잘 되다가 아파치 서버 꺼진 EC2에 트래픽을 분산하면, 502 gateway error comes up

이걸 방지하려면 어떻게 하냐?? Health check(상태확인) Rule 걸어야함

EC2 뿐만 아니라 ELB상태 확인도 함
ELB에서는 Unhealthy 로 나옴 > 왜? 트래픽 달라고 신호 줬는데 신호 제대로 안오니까
상태검사 설정가능
이렇게 Unhealthy 로 판단되면, 다른 EC2생성해서 메꿈