6.15

w0nyyy·2022년 6월 15일
0

AWS

오토 스케일링

인스턴스 생성

인스턴스 이름 : Origin
vpc : MY-VPC
서브넷 : MY-PUBLIC-SUBNET-2A
기존 보안그룹 :SG-WEB
사용자데이터

#!/bin/bash
yum install -y httpd
systemctl enable --now httpd

알리바바 클라우드 dns에 www.wonyyy.shop으로 추가

mobaxterm으로 접속 - food.tar 업로드

[ec2-user@ip-10-19-2-85 ~]$ sudo tar -xvf food.tar -C /var/www/html/

이미지 생성

origin 인스턴스 체크 - 작업 - 이미지 생성

이미지 이름 : MY-AMI
* 껍데기에 불과함. 운송하기 위한 택배박스와 비슷함 안에 스냅샷이 반드시 있어야함.

재부팅 안함 : 활성화

이미지 생성하기

시작 템플릿

인스턴스 생성 효율성, 간소화 시킴

시작템플릿 - 시작 템플릿 생성 클릭

이름 : MY-TEMP

애플리케이션 및 OS 이미지 - 내 AMI - MY-AMI

인스턴스 유형 : t2.micro
키페어 지정 : aws-key
네트워크 - 서브넷 : 시작 템플릿에 포함하지않음 선택
보안그룹 - 기존보안그룹 : SG-WEB

시작템플릿 생성 클릭

오토스케일링

EC2 - Auto Scailing 그룹 - 그룹 생성 클릭

그룹이름 : MY-ASG
시작템플릿 : MY-TEMP

네트워크 세팅 후 다음 클릭

새 로드 밸런서에 연결

* 로드 밸런서 없이 오토 스케일링만 있으면 어케 되는 거임 ?

Internet-facing : 로드 밸런서를 인터넷 경계에 놓는다.

원하는 용량 (Desired Capacity)
최소 용량 (Minimum Capacity)
최대 용량 (Maximum Capacity)

대상 추적 크기 조정 정책은 지금 생성하지않고 클라우드 와치에서 할거임

* SNS : Simple Notification Service

  • 이메일, SMS로 알려주는 서비스

오토 스케일링 그룹생성 버튼 클릭

로드 밸런싱 - 대상 그룹 클릭

ASG 가 생성된 인스턴스를 넣어준 것을 확인할 수 있다.

로드밸런싱 - 로드밸런서

DNS 이름 복사

www.wonyyy.shop 도메인 cname으로 alb로 접근하도록 변경해주기.

접속 안되면 로드밸런서 - MY-ASG-ALB 에서
보안그룹 default아니고 SG-WEB

자동 크기 조정

EC2 - AUTO Scaling 그룹 - MY-ASG - 자동 크기 조정

동적 크기 조정 정책 생성 클릭 - 정책 유형: 단순 크기 조정

SCALE OUT 정책

CloudWatch 경보 생성 클릭

지표생성 - EC2 - Auto Scaling 그룹별 클릭

CPUUtilization 선택 - 지표 선택 클릭

알림 설정

SCALE IN 정책

CPUUtilization 선택 - 지표 선택 클릭

오토스케일링으로 인해 인스턴스 하나가 종료됨

인스턴스 부하주기

ASG01 인스턴스에 부하를 준다.

// 명령을 계속 주는 것. cpu사용량 올리기
// & 는 백그라운드 실행을 위함
[ec2-user@ip-10-19-4-174 ~]$ yes > /dev/null &



// cpu 사용률이 90% 이상이 된 것을 확인
[ec2-user@ip-10-19-4-174 ~]$ top
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
29966 ec2-user  20   0  114640    764    700 R 99.9  0.1   0:44.56 yes

5분 단위로 경보 설정을 했기때문에 5분 뒤에 경보가 뜬다.

시간이 안맞는 경우 local time zone으로 변경해준다

스케일 아웃이 된 것을 확인

스케일 아웃된 ASG02에 또 부하를 준다.

[ec2-user@ip-10-19-32-27 ~]$ yes > /dev/null &
[1] 3403

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 3634 ec2-user  20   0  114640    720    656 R 99.7  0.1   0:11.33 yes

// 프로세스 멈추는 명령어
[ec2-user@ip-10-19-45-160 ~]$ kill 3634
엔터 두번

보안그룹 및 네트워크 ACL 비교

22번 포트를 막았다. aws 인스턴스까지 못 나간다. 방화벽에 막혀서

AWS 인터넷에서 접속하기 때문에 들어갈 수 있음

DB서버 생성

프라이빗 서브넷이기때문에 사용자 데이터에 설치명령어 적어도 안됨. 인터넷 통신이 안되기때문
* 접근할 때 web서버를 경유해서 들어가야한다. 웹서버에 키 올린 뒤, 권한 400주기

NAT 를 세팅하면 프라이빗 서브넷에서 퍼블릭을 경유하여 인터넷으로 나갈 수 있따.

NAT GW

VPC - NAT GW -NAT GW 생성 버튼 클릭

프라이빗 서브넷 라우팅테이블 편집

구글에 ping 날리면 나간다~!

EFS

VPC - 보안그룹 - 보안그룹 생성 버튼 클릭

SG-ALB 를 소스로 추가

SG-ALB 인바운드 규칙 편집

보안그룹이 Default 인데 방금 만든 SG-EFS로 바꿔준다.

[ec2-user@ip-10-19-2-85 ~]$ sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-0a82e505325cf4758.efs.ap-northeast-2.amazonaws.com:/ /mnt

명령어 마지막을 efs 말고 /mnt

EFS의 보안그룹은 SG-ALB 고 origin 서버의 보안그룹이 SG-WEB 이기때문에 마운트가 안됨

해결방법
1. SG-EFS의 인바운드 규칙에 SG-WEB을 넣어줌

  1. origin 서버의 보안그룹을 SG-ALB로 넣어줌

0개의 댓글