EC2 특징과 Scalability (Scale UP/Scale Out/ELB)
- 가상머신이란?
- 가상머신의 종류
- 클라우딩 컴퓨터의 장점
Scalability 변화하는 수요에 얼마나 탄력적으로 대응할 수 있는가.
전략 : 하나의 인스턴스(컴퓨터)를 더 좋은 컴퓨터로 교체하는 것.
스트레스 테스트(stress test) 환경 구축하기 ]
공격당할 인스턴스의 CPU 점유율 확인 명령어 : 해당 인스턴스 접근 ssh -i ~ > top
공격할 인스턴스 공격!
( 에러가 생긴다면 sudo apt-get install > ) sudo apt-get install apache2-utils(ab bench를 설치하기 위함) > y > ab(apache bench) [enter-requests요청, concurrency 동시접속 “집중”] > ab -n 400 -c 1 도메인주소(또는 IP)
결과 분석 ]
Time taken for tests(s) : 총 소요시간
failed request : 실패 (제대로 된 정보를 못 보내주는 경우)
requests per second(s) : 초당처리속도, 1초에 인스턴스에 접근할 수 있는 횟수
time per request (ms) : 개별처리속도. 400명 한명한명이 접속할 때마다 얼마나 시간이 걸리는가?(평균값) (ex) 35ms (0.035s)
▣ Scalability 방법
1. Scale Up : 수요에 따라 더 좋은 컴퓨터(인스턴스)로 업그레이드 하는 것.
- 기존 인스턴스를 이미지화 시킨 후, 이미지화 된 인스턴스를 AMIs에서 더 좋은 인스턴스 타입을 선택하여 Lanch!
- 이미지화 : 해당 인스턴스 우측 클릭 > Image > Create Image (설정 기간동안 인스턴스 중단!)
※ 주의사항
함수로 인스턴스를 중단(stop) 시키지 않는다 : 다시 시작하면 도메인과 IP가 바뀌어져 있음. ( 원인 : IP 고갈현상 )
이미지화 하게 되면 인스턴스가 일정 기간동안 중단(stop)되는데, 고정 IP 받는 방법!
1. Dashboard > network&security > elastic IPs > Allocate New Address > 아마존으로부터 고정 IP를 받는다 (유료!) > 이 작업은 일단 기존 인스턴스에 붙여준다.
( 나중에 스케일업해준 인스턴스랑 연결해줄것임 , Release Address : 고정 IP 삭제 )
2. 1번에서 받은 고정 IP를 인스턴스와 연결. 우측클릭 > Associate Address(scale up한 인스턴스와 연결) > security group 기존 인스턴스와 동일한 것으로 설정해주기.
2. 방법2 추후 업데이트
2. Scale Out (ELB)
- 여러대의 컴퓨터(인스턴스)가 협력해서 동일한 목표를 달성하는 것.
- 시스템이 컴퓨팅 파워를 더 많이 요구할 수록, Scale Up 하다보면 단일 컴퓨팅으로서의 한계에 도달하게 된다.
Scale Out의 흐름(인스턴스 하나에는 일반적으로 세가지로 이루어져있다.)
WEB SERVER(아파치 등) -(요청)-> MIDDEL WARE(jsp, php, spring, jango ... ) -(요청)-> DATABASE(mysql, 오라클 등)
방법1. DNS
사용자가 홈페이지에 접근을 할 때 도메인을 썼던 IP를 썼던, 결과적으로는 IP를 찾아서 홈페이지에 접근하게 되는데, 이 때 사용자 몰래 DNS(전화번호부라고 생각하면 편함)에 접속해서 IP를 알아낸다. DNS의 설정을 바꾸어서 어떤 사용자가 도메인으로 접속했을 때, 서로 다른 IP를 가지고 있는 웹서버에 분산해서 접근하게 된다.
방법2. ELB
Load Balancer(AWS의 ELB) 부하의 균형을 잡아주는 장치.
Load Balancer(IP 가지고 있음)로 사용자들이 접속(Load Balancer Port-기본적으로 80)해서 이 장치가 Instance Port를 통해 분산시켜주는 것.
방법3. Auto Scaling
- ELB 과정을 사람이 아닌 기계가 하도록 하는 일종의 인공지능 서비스.
- 아마존 웹서비스의 꽃 중에 하나!
1. 과부화 된 인스턴스를 이미지한다.
2. auto scaling > lanch configurations
인스턴스를 만드는 과정과 똑같이 진행하면 된다. (auto scaling에 사용할 이미지를 선택하는 것.)
자동으로 생성할 인스턴스를 어떤것을 사용할지 설정.
3. auto scaling > auto scaling groups
어떠한 조건에서 인스턴스를 만들지 정의함.
launch configurations를 통해 만든 인스턴스를 컴퓨터를 실제로 만들어 주는 것.
- submit : 가용구역을 설정할 수 있는데, 하나보다는 여러개를 설정하는 것이 좋다. 하나의 가용구역에서 문제가 생겼을 때를 대비.
▣ ELB 생성
Elastic Load Balancer : AWS에서 지원해주는 부하 균형 장치
[Load Balancer > Load Balance]
STEP1 : define load balance
로드밸런스 이름을 정하고, (Inside) 기본으로 두기
로드밸런스 포트와 인스턴스 포트 설정 , HTTP80 / HTTP80 (기본적) ,HTTPS 443 /HTTP80 ... 등 (인증서 관련 문제)
STEP2: assign security groups
보안 설정.
STEP3 : configure security settings
STEP4 : configure health check
Load Balancer가 사용자의 분산을 해주는데 어떤 컴퓨터가 죽었을 때 그쪽으로는 연결해주면 안되기 때문에,
각각의 컴퓨터가 죽어있는지 살아있는지 체크하는 것.
- ping path : ELB과 웹서버에 접속했을 때 ping path에 적힌파일에 접속할 수 있다면, 살아있다고 생각하고
안되면 죽었다고 생각하고 사용자들을 그쪽으로 보내지 않는 것.
- Response timeout 정한 시간 보다 더 걸리면 건강하지 않다고 생각함.
- Health Check Interval 정한 시간 마다 ELB가 health 체크
- Unhealthy Threshold : Response timeout, health check interval을 통해 체크했을 때, 기입한 숫자만큼 되지 않으면 죽었다고 생각
- Health Threshold : 죽어있는 상태에서도 접속은 하는데 기입한 숫자만큼 시도했을 때 되면 살았다고 생각하고 다시 서비스를 보냄/
STEP5 : ADD EC2 Instances
STEP6 : add tags
STEP7 : review & elb 생성 확인. (eLB도 도메인을 가지고 있다, 도메인 통해 접속 가능!)
▣ ELB 사용
1. 과부화 된 인스턴스를 이미지화 시킨다.
2. 새로운 인스턴스를 만든다.
3. 만들어놓은 ELB에 1번과 2번 인스턴스를 등록한다.
(status에 InService가 보이면 서비스가 되고 있다는 뜻, 이때 1번에서 펜딩시켜놓은 인스턴스가 자동으로 살아나있다.)
* stress test를 통해 ELB 도메인으로 접속했을 때, 각각의 인스턴스로 랜덤하게 접근하는 것을 볼 수 있다.
( 추적 명령어 : sudo tail -f /var/log/apache2/access.log )
▣ ELB 주의사항
사용자가 글을 쓰거나, 이미지를 업로드하는 것과 같은 작업이 포함된 서비스에서는 ELB 사용에 주의!
그런 작업은 데이터베이스에 저장되게 되는데, 각각의 인스턴스에 데이터베이스가 하나씩 있다면, 사용자가 ELB로 글을 작성했을 때와 다른 인스턴스로 접근한다면 자신이 쓴 글을 볼 수 없는 문제가 생길 수 있다.
그러므로 이런 경우의 DB는 동일한 인스턴스에 두는 것이 일단은 바람직하다.
'Others > 인프라' 카테고리의 다른 글
[AWS] AWS S3 (0) | 2017.08.15 |
---|---|
[AWS] AWS를 제어하는 방법 (0) | 2017.08.15 |
[AWS] 인스턴스 원격제어하기 (리눅스환경) (2) | 2017.08.14 |
[AWS-EC2] Instance 생성 / EC2 가격정책 (0) | 2017.08.14 |
[AWS] 지역&가용영역 (0) | 2017.08.13 |