인스턴스 이름 : 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
오토 스케일링 그룹생성 버튼 클릭
로드 밸런싱 - 대상 그룹 클릭
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
엔터 두번
22번 포트를 막았다. aws 인스턴스까지 못 나간다. 방화벽에 막혀서
AWS 인터넷에서 접속하기 때문에 들어갈 수 있음
프라이빗 서브넷이기때문에 사용자 데이터에 설치명령어 적어도 안됨. 인터넷 통신이 안되기때문
* 접근할 때 web서버를 경유해서 들어가야한다. 웹서버에 키 올린 뒤, 권한 400주기
NAT 를 세팅하면 프라이빗 서브넷에서 퍼블릭을 경유하여 인터넷으로 나갈 수 있따.
VPC - NAT GW -NAT GW 생성 버튼 클릭
프라이빗 서브넷 라우팅테이블 편집
구글에 ping 날리면 나간다~!
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을 넣어줌