[AWS] Monitoring , Load Balancer and Scaling
모니터링
모니터링을 하는 이유
운영상태 파악
애플리케이션 성능 체크
리소스 사용률 체크
보안 감사
CloudWatch
EC2를 생성하면 별도로 설정하지 않아도 자동적으로 CloudWatch가 CPU/Network등의 메트릭들을 수집하고 있다.
원래는 수집하지 않는 정보들을 CWAgent를 설치해서 수집하게 만들수도 있다.
이 정보들을 바탕으로 관리콘솔로 볼 수 있고 임계치를 설정하고 해당 임계점을 초과하는 경우 관리자에게 알림 및 auto scaling을 한다.
로그
• CloudTrail은 콘솔, AWS SDK, CLI 및 AWS 서비스를 통해 수행된 작업을 비롯하여 계정 활동의 이벤트 기록을 제공합니다. 이러한 이벤트 기록은 보안 분석, 리소스 변경 추적 및 문제 해결을 단순화합니다. CloudTrail은 거버넌스, 규정준수, 운영 및 위험 감사를 촉진합니다. CloudTrail을 사용하면 AWS 인프라에서 계정활동과 관련된 작업을 기록하고 지속적으로 모니터링하며 보관할 수 있습니다.
• Amazon CloudWatch Logs는 Amazon EC2 인스턴스, CloudTrail, Route 53 및 기타 소스에서 로그 파일을 모니터링, 저장 및 액세스합니다.
• VPC Flow Logs는 VPC의 네트워크 인터페이스에서 송수신되는 IP 트래픽에 대한 정보를 캡처합니다.
• 로드밸런싱은 로드밸런서로 전송된 요청에 대한 상세 정보를 캡처하는 액세스 로그를 제공하며, 애플리케이션의 사용자 지정 로그를 사용할 수 있게 해줍니다.
호출이벤트
설정된 경보 임계값을 2개 기간을 연속으로 위반된 경우에만 경보
위 그림 같은경우 1:05PM 은 경보가 울리지 않고 1:25PM에 경보가 울리게 된다.
로드벨런싱
주요기능
고가용성 - ELB는 단일 가용 영역 또는 여러 가용 영역에서 다수의 대상에 걸쳐 트래픽을 자동으로 분산합니다. 대상으로는 EC2인스턴스, 컨테이너 및 IP 주소가있습니다.
계층 4 또는 계층 7 HTTP 및 HTTPS 로드밸런싱 - 계층 7 전용 기능에 대해 HTTP 도는 HTTPS 어플리케이션을 로드 밸런싱할 수 있습니다. 또는 TCP만 사용하는 어플리케이션에 대해 엄격한 계층 4 로드 밸런싱을 사용할 수 있습니다.
보안 기능 – Amazon VPC를 사용하면 로드 밸런서와 연결된 보안 그룹을 생성 및 관리하여 추가 네트워킹 및 보안 옵션을 제공할 수 있습니다. 또한 내부(인터넷에 연결되지 않음) 로드 밸런서를 생성할 수도 있습니다.
상태 확인 – ELB 로드 밸런서는 비정상 대상을 감지하고, 해당 대상으로 트래픽 전송을 중단한 다음, 나머지 정상 대상으로 로드를 분산합니다.
모니터링 작업 – ELB는 어플리케이션 성능을 실시간으로 모니터링할 수 있도록 CloudWatch 지표와 통합되며 요청 추적 기능을 제공합니다.
• Application Load Balancer (ALB - L7 Switch)
개방형 시스템 간 상호 연결(OSI)모델의 일곱 번째 계층인 어플리케이션 계층에서 작동합니다. Application Load Balancer는 콘텐츠 기반 라우팅, 컨테이너에서 실행되는 어플리케이션, 개방형 표준 프로토콜 (WebSocket 및HTTP/2)을 지원합니다. 이 유형의 밸런서는 HTTP 및 HTTPS 트래픽의 고급 로드밸런싱에 이상적입니다.
• Network Load Balancer (NLB - L4 Switch)
높은 처리량과 매우 짧은 대기 시간을 유지하면서 초당 수천만 건의 요청을 처리하도록 설계되었습니다. Network Load Balancer는 연결수준(4 계층)에서 작동하여 IP 프로토콜 데이터에 따라 대상으로 연결을 라우팅합니다. 대상에는 EC2 인스턴스, 컨테이너 및 IP 주소가 포함됩니다. 이 밸런서는 TCP 트래픽의 밸런싱에 이상적입니다.
• Gateway Load Balancer
이 로드 밸런서를 사용하면 서드 파티 가상 어플라이언스를 손쉽게 배포, 스케일링 및 관리할 수 있습니다. 여러 가상 어플라이언스에 트래픽을 분산하면서 수요에따라 스케일업 또는 스케일 다운하는 하나의 게이트웨이 역할을 합니다. 이러한 배포는 네트워크의 잠재적 장애 지점을 줄이고 가용성을 높입니다. Gateway Load Balancer는 서드 파티 가상 어플라이언스를 통한 모든 3 계층 트래픽을 투명하게 전달합니다.
실제 서버들을 대상으로 분산처리하는 것이 아니어서 약간 결이 다르다고 볼 수 있습니다.
• Classic Load Balancer
이전 세대의 로드밸런서이므로 이 과정에서는자세히 설명하지않습니다. 최근에는 잘 사용하지 않습니다.
Auto Scaling
AWS Auto Scaling은 어플리케이션을 모니터링하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지합니다. AWS Auto Scaling을 사용하면 몇 분만에 여러 서비스 전체에서 여러 리소스에 대한 어플리케이션 크기 조정을 설정할 수 있습니다. 또한 서로 다른 EC2 리소스 그룹이 수요 변화에 대응하는 방법을 자동화하는 크기 조정 계획을 수립할 수 있습니다. 가용성 또는 비용을 최적화하거나 둘 사이의 균형을 적절하게 유지할 수 있습니다.
어떤 리소스가 필요한가?
AMI 인스턴스 유형 보안 그룹 역할
어디서, 얼마나 필요한가?
VPC 및 서브넷, 로드밸런서, 최소 최대 인스턴스 갯수, 최소 최대 용량
언제, 얼마동안 필요한가?
예약, 온디맨드, 예측 가능 오토 스케일링, 스케일 인/아웃 정책
시작 템플릿
시작 템플릿을 사용하여 Auto Scaling 그룹을 생성하려면 먼저 시작 템플릿을 생성해야 합니다. 이 템플릿에는 Amazon Machine Image(AMI)의 ID와 인스턴스 유형 등 EC2 인스턴스를 시작하는데 필요한 파라미터가 포함되어 있습니다.