Youtube Lecture - 5
EC2 Autoscaling
scaling = 성능 늘리는거
2가지 종류가있음
1. Verticla scale
성능이 16배 올라가는데 비용이 30배 올라감.
시험볼때 60점에서 80점 올리는거나, 80점에서 90점올리는거나 공부량이 비슷함 -> unfair함
효율이 떨어짐
성능이 올라가지만 비용이 기하급수적으로 올라감
2. Horizontal Scale (Scale Out)
16배의 성능의 CPU가 필요한 경우, 똑같은 EC2 16개 만드는 방법
vertical 보다 비용은 싸지만, 다른 인스턴스가 늘어나는 것 이기때문에 아키텍쳐 고려해야함 -> 조금 어려움
자동으로 scaling작업을 해주는거
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
EC2 템플렛 만들고 (Bash 실행하는거, index.html 수정하는 스크립트)> 오토스케일링 프로필 가서 > 시작 템플릿을 수정 하면됨
로드 밸런서 만드는법
1. 대상그룹 생성 > 인스턴트 할당 > 대상그룹 생성
유형 = 인스턴스
2. 로드밸런서 만들기
- Application/Netowork/Gateway 중 선택
- 대상그룹 선택 (아까 만들어 놓은거 {EC2 포함되어있는그룹})
- 조건내용 : http로 통신하면, 이 대상그룹으로 연결 시키겠다 라고 설정 가능 (ALB기능)
- 더불어 조건내용 더 추가 가능함
- 이렇게 아까 만든 대상그룹을 연동 시키면, 로드밸런서가 2개의 EC2를 번갈아 가면서 트래픽을 보내고 받고 함
- 이렇게 만들어진 로드밸런서를 오토스켈링 그룹에 붙이기
3. 로드밸런서를 오토스켈링에 붙이기
이렇게 하면, 오토스케일링에서 생성되는 모든 EC2는, 로드밸런서와 연동이된 대상그룹이랑 같이 연동이 되는 것
Case : 만약에 Auto Scaling 은 잘 되는데 Load blancer 가 죽으면 어떡하냐? (연동된 http 웹서버가 죽은 경우)
로드밸런서 입장에서는 웹서버가 죽었기 때문에 아무것도 보여줄수가 없다 -> 비정상
오토스케일링 > EC2만 제대로 돌아가면 상관없기때문에 계속 돌아감
이걸 방지하려면 어떻게 하냐?? Health check(상태확인) Rule 걸어야함