본문 바로가기
AWS

AWS 기반 웹서비스 구성 실습(3)

by 장중앙 2021. 8. 18.

https://jangcenter.tistory.com/5 AWS 기반 웹서비스 구성 실습(2)에서 이어짐

 

AWS 기반 웹서비스 구성 실습(2)

https://jangcenter.tistory.com/3 AWS기반 웹서비스 구성 실습(1)에서 이어짐 AWS 기반 웹서비스 구성 실습 1. 네트워크 구성  1. VPC 생성  2. 생성한 VPC에 또 다른 subnet 추가  3. 라우팅 테이블 편집  4..

jangcenter.tistory.com

1. Amazon SNS (Simple Notification Service)

애플리케이션과 애플리케이션 또는 사용자 간의 메시지 전달을 위한 완전 관리형 메시징 서비스 

 

SNS 클라이언트 유형

  • 게시자(publishers) : 주제에 대한 메시지를 생성, 발송함으로써 구독자와 비동기적으로 통신하는 논리적 액세스 및 커뮤니케이션 채널 
  • 구독자(subscribers) : 주제를 구독하는 경우 지원하는 프로토콜 중 하나를 통해 메시지 또는 알림을 소비하거나 수신 

 

SNS 구성

  • 주제(topic) 
    • 통신 채널 역할을 한는 논리적 액세스 포인트
    • 주제를 사용하여 여러 엔드포인트를 그룹화할 수 있음
  • 구독(subscribe)
    • 주제에 게시된 메시지를 수신할 수 있도록 주제에 대한 엔드 포인트를 등록하는 것
  • 엔드포인트(endpoint)
    • HTTP/HTTPS
    • Email
    • Amazon Kinesis Data Firehorse
    • Amazon SQS
    • AWS Lambda
    • SMS
  • 게시(publish)



SNS 일반적인 사용 예

  • 응용 프로그램 경고 → SMS 또는 이메일 등을 통해서 지정된 사용자에게 알림을 전송
  • 사용자 알림 또는 모바일 푸시
  • Fanout 시나리오



SNS를 이용해 웹 서버에 대한 모니터링 기능을 구현

EC2 인스턴스의 상태 변화가 생겼을 때 지정된 계정(관리자)으로 알림을 전달  

⇒ 상태 변화 감지를 위해서 CloudWatch 서비스를 이용

 

주제(topic) 생성

SNS 서비스 대시보드에서 주제 이름을 입력하고 다음 단계 버튼을 클릭

 

 

주제 생성을 확인하고, 해당 주제를 받아볼 구독을 생성

 

프로토콜로 이메일을 선택하고, 에드포인트에 본인의 메일 주소를 입력 



구독 생성을 확인 ⇒ 이메일 구독인 경우 이메일 확인 처리를 해야만 정상적으로 메시지를 수신할 수 있음

 

본인 메일함에 구독 확정 메일 수신을 확인 후 해당 메일을 통해서 Confirm subscription 처리를 수행해야 함



구독 화면에서 상태가 "확인 대기 중" 상태에서 "확인 됨" 상태로 변경된 것을 확인할 수 있음 

 

CloudWatch 경보(alarm)를 생성

EC2 서비스에서 본인이 생성한 웹 서버 인스턴스를 선택한 후 경보를 생성



경보 생성 선택 후 본인이 생성한 SNS 토픽으로 경보가 전달될 수 있도록 선택

 

 

웹 페이지에 접속해서 웹 서버의 CPU 사용량을 증가

로드밸런스의 퍼블릭 주소로 접속

 

1) 로드벨런스 주소로 접속

2) 본인이 생성한 첫번째 인스턴스로 접속 여부를 확인

3) LOAD TEST 링크를 클릭 → 해당 서버에 부하를 유발하는 코드를 동작

 

해당 서버의 CPU 사용량이 증가한 것을 확인



CloudWatch 서비스로 이동해서 경보 발생 여부를 확인

 

임계치(10%)를 넘지 않았기 때문에 경보가 생성되지 않음



시간이 경과하면 임계치를 초과한 지표가 수집되어 경보가 발생하는 것을 확인



경보 내용을 포함한 이메일이 수신된 것을 확인



2. Amazon EC2 Auto Scaling

애플리케이션을 모니터링하고 용량을 자동으로 조정

AWS Auto Scaling을 사용하면 서비스에 대한 여러 리소스를 조정가능

시작 템플릿 생성

 

 

 

 

시작 템플릿 생성 확인



앞에서 생성한 로드밸런스에 등록된 대상 그룹의 인스턴스를 모두 등록 취소

개별적으로 생성한 인스턴스는 오토스케일링을 통해서 제어되지 않으므로, 로드밸런스 대상 그룹에서 제외시키는 것

 

Auto Scaling Group 생성

 

 

 

어떤 기준으로 인스턴스 수를 늘리고 줄일것인가

 


Auto Scaling을 통해 생성된 인스턴스 확인

자동으로 생성된 인스턴스가 로드밸런스의 대상그룹에 포함되어 있음

 

AWS 기반 웹서비스 구성 실습(2)와 마찬가지로 로드밸런스 주소로 접속하면 생성된 인스턴스로 순차적으로 라우팅되는 것을 확인할 수 있음

* Auto Scaling Group의 인스턴스를 중지했을 때  -> 중지한 인스턴스의 상태가 terminate가 되고 시간이 꽤 지난 후에 새로운 인스턴스가 생성

* Auto Scaling Group의 인스턴스를 종료했을 때 -> -> Auto Scaling Group에서 종료한 인스턴스가 삭제되고 최소 인스턴스 조건이 2개이므로 새로운 인스턴스를 생성(2개의 인스턴스가 동작됨)

 

Auto Scaling의 인스턴스 삭제

Auto Scaling의 인스턴스 를 모두 없애기 위해서는 Auto Scaling의 그룹 크기관리 설정을 변경해야함

(개별로 인스턴스를 종료하면 새로운 인스턴스를 만들기 때문에)

ASG를 통해 생성된 인스턴스가 모두 종료됨

 

댓글