kakao Cloud school 2기 D+38

LEE EUI JOO·2022년 12월 30일
0

Amazon Web Service

목록 보기
4/9
post-thumbnail

1. Auto-Scaling

만약에 트래픽이 발생하면 서버가 늘어나거나 자원이 늘어나거나 혹은 트래픽이 감소하게 되면 자동으로 scale 이 조정되는 것.

  • 오토스케일링 절차

    	1. 로드 밸런서 생성
    
    	2. 비어 있는 타겟 그룹 생성
    
    	3. Auto-scaling Group = 정책

오토스케일은 스케일 즉 인스턴스를 감소, 증가시키는 '기능' 이다. 그러려면 하나의 healthy한 인스턴스가 필요하다.


1. 이름이 web 인 EC2 인스턴스 만들기

쉘에 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>

2. 인스턴스 중지 후 이미지 및 템플릿에서 이미지 생성

이미지 이름 : web-img

3. EC2 탭에 시작 템플릿 콘솔 접속

  • 아직 시작템플릿에서는 서브넷을 정의하지는 않을 것이고, 나중에 타켓 그룹(Target group)을 만들때 설정 할 것

4. 시작 템플릿 생성

5. 로드밸런서 생성

6. 빈 타켓 그룹 생성

7. 로드밸런서 탭으로 들어와서 타켓그룹(비어있음) 지정

8. load balancer 생성 완료

9. 오토 스케일링 그룹을 만들자

  • 기존 로드밸런서에 연결

	상태확인 유예 기간 30초 - 초기화(부팅시간 고려)시간 = health check 유예
	Cloud Watch 설정 - 클라우드 모니터링 

예를 들면, CPU 가 80% 를 초과하여, 인스턴스가 1대에서 2대로 늘어났다면, 인스턴스를 1개 띄우고 나서 몇초 혹은 몇분을 대기 할 것인지 지정하는 옵션이다.

인스턴스를 띄우는데도 시간이 필요하니까 유예시간을 지정하는 것이다.

  • 스케일 설정

  • 원하는 용량 : 기본 인스턴스의 개수
  • 최소 용량 : 최소 유지해야 하는 인스턴스의 개수
  • 최대 용량 : 오토스케일링을 적용하여 인스턴스를 생성할 때가 있을 시, 최대 4개 까지 인스턴스를 만든다

10. 확대 정책 생성


대상 값 : 80 - CPU 사용률이 80%

인스턴스 요구 사항: 30 - 최대 30초에 한대 늘어난다.

인스턴스의 CPU 사용률이 80%를 초과하여 인스턴스를 1개 추가한다.
인스턴스 요구 사항은 그 대기 시간을 의미한다.
지표를 봐서 무한대로 늘어날 수 도 있고, 갑자기 인스턴스가 여러 개로 증가할 수 도 있는 것이기 때문

11. 오토스케일링 그룹생성 완료

12. 동적 크기 조정 정책 생성

13. Cloud Watch cpulow 경보 생성 - CPU 사용량이 기준보다 낮을때 인스턴스를 low 즉, 삭제하겠다.

  • CPU 임계값 30%로 결정

  • 경보 이름 cpulow로 수정

  • 다음 3번 후 경보 생성 완료

14. 인스턴스 2대에 부하적용

  • 인스턴스 2대에 동시에 부하를 준다

  • 항상 인스턴스들은 healthy 인 상태여야 함!

  • 인스턴스 2개로 돌아옴 - 돌아온 이유는 stress 명령어의 timeout 시간이 지나서 cpu 점유율이 임계값에 못미쳤기 때문에 cpulow 정책에 의하여 인스턴스가 삭제되는 것임


실습 문제 : Web 3 Tier Auto-Scaling & Load Balacner 아키텍처 구성

  • Autoscaling 3 tier architecture를 구축
    상단의 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. 경보 상태.
  • 수정사항 : web 서버들은 public 서브넷으로 둘 것


  • 개인 실습 결과

    맨윗단의 NLB 이름을 web-alb 로 생성

    webNLB -> webalb 로 로드밸런서 이름을 잘못 작성함


  • 풀이 순서

  1. VPC 생성

  2. 인터넷 게이트웨이 생성 - VPC 와 연결

  3. 서브넷 생성 - 8개 (Public 2 / Private 6) 생성 / 퍼블릭 IP 주소 자동 할당 체크

  4. 라우팅 테이블 생성 하여 명시적 연결

  5. 베스천 보안 그룹 생성 (http, https, ICMP 허용) & 키페어 생성

  6. 베스천 호스트 인스턴스(public) 생성

  7. 웹서버 보안 그룹 생성 (http, https, ICMP 허용) & 키페어 생성

  8. 웹 인스턴스(private) 생성

  9. 베스천 호스트에 ssh 연결하여 키페어 전송시키고 웹서버 인스턴스로 접속

  10. 외부로 통신이 안가기 때문에 NAT 게이트웨이 와 탄력 IP 필수

  11. 웹 인스턴스가 외부로 통신이 가는지 확인한 후 필요한 패키지 설치

  12. /var/www/html 경로에 index.html 파일 하나 생성

  13. httpd.conf 파일 수정 (아직 로드밸런서가 생성이 안됐기 때문에 복사만 해준다)

  14. was 인스턴스(private) 생성

  15. was 서버 보안 그룹 생성 (사용자 지정 TCP PORT 8080, ICMP 허용, http)

  16. was 키페어 옮겨 주고 ssh 접속 was 서버에 필요한 패키지 설치 & 파일 수정

  17. RDS 서브넷 그룹 생성 후 데이터베이스 생성

  18. RDS 보안 그룹 생성 & 초기 데이터 베이스 생성

  19. RDS 보안 그룹 인바운드 규칙을 수정 (로컬에서 IP로 접속한 상태이기 때문에)

  20. was alb 로드밸런서 생성 (Internal) - 테스트를 위해서

  21. web alb 로드밸런서 생성 (Internal) - 테스트를 위해서

  22. was 인스턴스로 들어와서 dbtest.jsp 파일 생성 후 수정

  23. 각종 테스트

  24. 각각의 인스턴스를 중지시키고 이미지 생성

  25. (web, was) 시작 템플릿 생성

  26. 시작템플릿 2개를 만든 상태에서 오토 스케일링 그룹 생성 (확대, 축소 정책 & 기존 로드밸런서에 연결)

  27. 부하 (stress) 생성 web 서버 와 was 서버에 부하

  28. 대상 그룹 생성

  29. 이름 : web-alb-tg
    대상 : 로드 밸런서

  30. web 로드밸런서에 리스너 HTTPS 443번 port 추가

  31. NLB 생성

  32. Route 53 호스팅 영역 생성


[참고]
Application Load Balancer에 고정 IP 주소가 필요합니다. Network Load Balancer 뒤에 Application Load Balancer를 등록하려면 어떻게 해야 합니까?

https://aws.amazon.com/ko/premiumsupport/knowledge-center/alb-static-ip/

profile
무럭무럭 자라볼까

0개의 댓글