만약에 트래픽이 발생하면 서버가 늘어나거나 자원이 늘어나거나 혹은 트래픽이 감소하게 되면 자동으로 scale 이 조정되는 것.
오토스케일링 절차
1. 로드 밸런서 생성
2. 비어 있는 타겟 그룹 생성
3. Auto-scaling Group = 정책
오토스케일은 스케일 즉 인스턴스를 감소, 증가시키는 '기능' 이다. 그러려면 하나의 healthy한 인스턴스가 필요하다.
쉘에 ssh 접속
[ec2-user@ip-10-10-1-43 ~]$ sudo yum -y install httpd
# 부하 주는 패키지가 담겨있는 패키지 설치
[ec2-user@ip-10-10-1-43 ~]$ sudo amazon-linux-extras install epel -y
# 부하 주는 패키지 설치
[ec2-user@ip-10-10-1-43 ~]$ sudo yum -y install stress
<세션 복붙>
[ec2-user@ip-10-10-1-43 ~]$ top # cpu사용량 모니터링 가능
[ec2-user@ip-10-10-1-43 ~]$ stress --cpu 1 --timeout 60
# 60초 동안 cpu 1개 만큼에 부하를 줌, top 창 보면 cpu 100인걸 볼 수 있음
[ec2-user@ip-10-10-1-43 ~]$ sudo systemctl restart httpd
[ec2-user@ip-10-10-1-43 ~]$ sudo systemctl enable httpd
[ec2-user@ip-10-10-1-43 ~]$ sudo vi /var/www/html/index.html
<index.html>
이미지 이름 : web-img
상태확인 유예 기간 30초 - 초기화(부팅시간 고려)시간 = health check 유예
Cloud Watch 설정 - 클라우드 모니터링
예를 들면, CPU 가 80% 를 초과하여, 인스턴스가 1대에서 2대로 늘어났다면, 인스턴스를 1개 띄우고 나서 몇초 혹은 몇분을 대기 할 것인지 지정하는 옵션이다.
인스턴스를 띄우는데도 시간이 필요하니까 유예시간을 지정하는 것이다.
대상 값 : 80 - CPU 사용률이 80%
인스턴스 요구 사항: 30 - 최대 30초에 한대 늘어난다.
인스턴스의 CPU 사용률이 80%를 초과하여 인스턴스를 1개 추가한다.
인스턴스 요구 사항은 그 대기 시간을 의미한다.
지표를 봐서 무한대로 늘어날 수 도 있고, 갑자기 인스턴스가 여러 개로 증가할 수 도 있는 것이기 때문
상단의 WEB-NLB(out) 는 Internet Facing LB로써 퍼블릭 서브넷에 두고
히단의 WEB-ALB(in) 는 Internal LB로써 pri-web 서브넷에 둔다.
조건1> 모든 web-was-db 서버는 Private Subnet에 존재해야하며 bastion만 Public Subnet에 존재
또한 각 티어별로 서로 다른 키페어를 갖는다
web 키페어 exam-web.pem
was 키페어 exam-was.pem
조건2> db 대역에 접근할 수 있는 출발지 주소는 was 대역으로 한정, was 대역에 접근할 수 있는
대역은 web 대역으로 한정한다.
조건3> ‘https://www.<자신의도메인>’ 으로 접속이 가능해야 한다.
조건4> DB포트는 보안을 고려하여 33306으로 변경한다.
제출 내용>
1. https로 접속한, 최소 3개 이상의 was 서버 화면
2. 경보 상태.
맨윗단의 NLB 이름을 web-alb 로 생성
webNLB -> webalb 로 로드밸런서 이름을 잘못 작성함
VPC 생성
인터넷 게이트웨이 생성 - VPC 와 연결
서브넷 생성 - 8개 (Public 2 / Private 6) 생성 / 퍼블릭 IP 주소 자동 할당 체크
라우팅 테이블 생성 하여 명시적 연결
베스천 보안 그룹 생성 (http, https, ICMP 허용) & 키페어 생성
베스천 호스트 인스턴스(public) 생성
웹서버 보안 그룹 생성 (http, https, ICMP 허용) & 키페어 생성
웹 인스턴스(private) 생성
베스천 호스트에 ssh 연결하여 키페어 전송시키고 웹서버 인스턴스로 접속
외부로 통신이 안가기 때문에 NAT 게이트웨이 와 탄력 IP 필수
웹 인스턴스가 외부로 통신이 가는지 확인한 후 필요한 패키지 설치
/var/www/html 경로에 index.html 파일 하나 생성
httpd.conf 파일 수정 (아직 로드밸런서가 생성이 안됐기 때문에 복사만 해준다)
was 인스턴스(private) 생성
was 서버 보안 그룹 생성 (사용자 지정 TCP PORT 8080, ICMP 허용, http)
was 키페어 옮겨 주고 ssh 접속 was 서버에 필요한 패키지 설치 & 파일 수정
RDS 서브넷 그룹 생성 후 데이터베이스 생성
RDS 보안 그룹 생성 & 초기 데이터 베이스 생성
RDS 보안 그룹 인바운드 규칙을 수정 (로컬에서 IP로 접속한 상태이기 때문에)
was alb 로드밸런서 생성 (Internal) - 테스트를 위해서
web alb 로드밸런서 생성 (Internal) - 테스트를 위해서
was 인스턴스로 들어와서 dbtest.jsp 파일 생성 후 수정
각종 테스트
각각의 인스턴스를 중지시키고 이미지 생성
(web, was) 시작 템플릿 생성
시작템플릿 2개를 만든 상태에서 오토 스케일링 그룹 생성 (확대, 축소 정책 & 기존 로드밸런서에 연결)
부하 (stress) 생성 web 서버 와 was 서버에 부하
대상 그룹 생성
이름 : web-alb-tg
대상 : 로드 밸런서
web 로드밸런서에 리스너 HTTPS 443번 port 추가
NLB 생성
Route 53 호스팅 영역 생성
[참고]
Application Load Balancer에 고정 IP 주소가 필요합니다. Network Load Balancer 뒤에 Application Load Balancer를 등록하려면 어떻게 해야 합니까?
https://aws.amazon.com/ko/premiumsupport/knowledge-center/alb-static-ip/