AWS

22.06.23

가로선 2022. 6. 23. 15:48

 

   목차   

 

1. 초기 세팅

2. Auto Scaling

 - 이미지 생성

 - 시작 템플릿 생성

 - Auto Scaling 그룹 생성

 - 부하 설정하여 테스트

 - LoadBalancer 생성 후 AutoScale Group에 Association

 - Jmeter 툴로 부하 설정하여 테스트

    - Windows

    - Linux


 

   초기 세팅   

 - Bastion, WEB-A 인스턴스 생성

 - RDS를 통해 DB 생성(MySQL) 및 Wordpress 연동

 

인스턴스 생성

    - Bastion으로 외부에서 접속하여 내부 인스턴스에 ssh로 접속하여 설정을 위해 공인 IP할당

    - WordPress 연동확인 및 설치를 위해 WEB-A에도 공인 IP할당

 

RDS 생성 후, 엔드포인트 확인

    - RDS 생성 시, 데이터베이스를 wordpress라는 이름으로 미리 생성

 

Bastion을 통해 WEB-A에 접속하여 wp-config 수정

    - Bastion에서 WEB-A 인스턴스로 접속하기 위해 Private Key 받아오기   

    - httpd, wordpress, php7.2 설치

    - 메인페이지 출력파일을 html에서 php로 변경

    

nslookup을 통해 엔드포인트 해석

 

Wordpress 접속하여 설치 진행

 

Wordpress 접속 확인

 

 

   Auto Scaling   

 - 시스템 자원들의 메트릭 값을 모니터링하여 서버 사이즈를 자동으로 조절

 

   이미지 생성   

 - 이미지 생성 전에 enable을 통해 따로 httpd를 시작하지 않아도 영구적으로 되도록 설정

 - 오토스케일링을 사용하기 위해서는 이미지가 필요하다

 

WEB-A의 이미지(AMI) 생성

    - Auto Scaling Group으로 묶기 위해 이미지가 필요

 

이미지 이름 및 설명 지정

 

AMI 생성 확인

 

   시작 템플릿 생성   

 

Auto Scaling 그룹 생성에서 시작 템플릿 생성 가능

    - 시작 템플릿 배너에서도 생성 가능

 

시작 템플릿 이름 및 버전 설정

 

생성한 Wordpress 이미지로 설정

 

인스턴스 유형 및 키 페어 설정

 

서브넷 및 보안 그룹 설정

 

시작 템플릿 생성 확인

 

   Auto Scaling 그룹 생성   

 

Auto Scaling 그룹 생성 진행

 

그룹이름 지정 및 생성한 시작 템플릿으로 선택

 

인스턴스의 VPC, 가용영역 선택

    - 인스턴스 유형 요구 사항에서 시작 템플릿 확인

 

고급 옵션 구성

    - 로드 밸런서는 따로 구현하지 않아서 패스

    - 상태 확인 유예 기간 변경

        - 상태 확인 유예 기간 : 얼마만에 검사할꺼냐라는 의미

    - 모니터링 툴인 CloudWatch를 통해 그룹 지표 수집

 

Auto Scaling 그룹 크기 지정

    - 원하는 용량은 1부터!

        - 용량을 처음부터 주면 지정한 수에따라 인스턴스가 생성되므로

 

크기 조정 정책 설정

    - 평균 CPU 사용률을 지표로 두어 50%가 넘어가면 인스턴스가 깨어나도록 설정

 

인스턴스 축소 보호도 가능하나 패스

 

과금용이므로 패스

    

태그도 따로 설정 X

 

Auto Scaling 그룹 생성 확인

 

새롭게 인스턴스가 생성된 것을 확인

    - WEB-A의 이미지를 그대로 받아 시작템플릿을 만들었으므로,

      Auto Scaling 그룹에서 생성된 인스턴스들은 바로 Wordpress에 접속이 가능하다

 

Public IP를 할당해 접속 확인

 

   부하 설정하여 테스트   

 - stress 패키지를 이용하여 테스트 진행

    - stress 설치를 위해서는 epel이 설치되어야한다

 

stress 설치

 

cpu에 부하 설정

 

cpu의 사용률이 100%가 된 것을 확인

    - top 명령어를 통해 확인이 가능

 

부하분산을 위해 Auto Scaling 그룹에서 인스턴스가 생성된 것을 확인

 

인스턴스 생성 확인

 

   LoadBalancer 생성 후 AutoScale Group에 Association   

 

Load-balancer 생성

 

Auto Scaling 그룹 - 편집 - 생성한 로드 밸런서로 설정

 

Auto Scaling 그룹에서 인스턴스 확인

 

   Jmeter 툴로 부하설정하여 테스트 - Windows   

http://jmeter.apache.org/download_jmeter.cgi

 

Apache JMeter - Download Apache JMeter

Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava

jmeter.apache.org

    - 해당 위치에서 Jmeter 설치(.zip 파일)

    - JAVA 8+ 이상이 요구 된다

    

jmeter 배치파일로 실행

 

Thread Group 생성

    - 여기서의 Thread Group은 하나의 작은 작업 단위를 뜻함

 

접속 유저 수 설정 및 Loop Count 설정

    - 동시 접속자 수 100명으로 설정

    - Loop Count 무한대로 설정

        - Infinite로 놓고 테스트를 진행하면 정상 진행은 되나 오래걸림

 

HTTP 서버에 부하를 줄 것이므로 HTTP Request 선택

    - Server Name에 로드 밸런서의 DNS를 넣어준다

 

로드 밸런서의 DNS 확인

 

top을 통해 cpu 사용률 확인

 

많은 동시 접속자 수로 인해 페이지가 작동 x

 

부하를 주기 시작하니 숨어있던 인스턴스들이 올라오는 것을 확인

 

접속이 되는 것을 확인

    - 로드밸런싱을 통해 페이지가 바뀌나 많은 동시 접속자들 및 무한 루프로 인해

      데이터베이스 오류, 페이지 접속 불가 창이 뜨는 웹 서버가 존재함

 

이런 식으로 페이지 출력

 

부하를 멈추니 생성된 인스턴스들이 서서히 종료되는 것을 확인

 

시간이 좀 지나 전부 종료된 것을 확인

    - 만약, Health Check가 제대로 작동되지 않는다면 인스턴스 재부팅!

        - 부하를 너무 쌔게 줘서 맛탱이가 간 느낌..ㅎ

 

   Jmeter 툴로 부하설정하여 테스트 - Linux   

 - Jmeter 실행을 위해 java openjdk11이 필요

    - amazon-linux-extras로 설치

 

Jmeter 다운로드 및 환경 변수 변경

    - wget을 통해 웹에서 파일 다운로드

 

인스턴스에서 실행시 메모리 부족으로 실행이 되지 않는 것을 확인

    - 인스턴스 생성 시 t2.micro를 사용하기 때문에 1GB의 메모리로는 실행이 되지 않는 것

 

VMware에서 메모리 양을 늘리고 다시 진행

    - Jmeter 실행까지 완료

        - 옵션 찾아서 부하 테스트 해볼 예정..