Develop/서버

인프런 <스타트업과 함께하는 AWS 클라우드> 강의기록

안다희 2023. 7. 27. 14:54
728x90

✅섹션 0: 클라우드를 사용해야 하는 이유

 

Security Group

- 서버를 만들 땐 방화벽이 있어야 한다.

 

<보안그룹 만들기>

- SSH

- HTTP

- HTTPS

웹이니까.

 

인스턴스 내부로 접근하려면?

- connect

- 그러나 쉘로도 접근해보기.

 

✅섹션 1: 로드밸런서 사용해보기

<ELB 설명>

- 가용영역(Availabilty Zone): 데이터센터.

- 리전(Region): 3개 이상의 가용역역을 논리적으로 묶음.

- 인스턴스를 여러개 사용하게 될텐데, 주소가 여러개인데 사용자의 트래픽을 받아 분산시켜줄거야.

 

- 로드밸런서는 가용영역을 최소 2개 이상 선택해야하는 이유: 한 가용영역이 문제가 생겨도, 다른 한쪽으로 버틸 수 있기 때문.

 

<로드밸런서 만들기>

1. 우선 HTTP, HTTPS rule 포함한 SecurityGroup 만들기

2. 로드밸런서 만들기 전, TargetGroup 만들기. 로드밸런서가 부하를 분산해주는건데, 아무 인스턴스에게 부하를 분산해주면 안되니까!

그래서 정해진 인스턴스에게 분산해주기 위해 그룹핑한다.

3. 이제 로드밸런서를 만들자. 

인터넷을 통해 트래픽을 받아서 전달하기 때문에, internet-facing 체크.

네트워크가 중요한 부분.

서울리전은 가용영역이 4개.

여기서 2개! 데이터센터를 2개 쓰겠다는 이야기야. (하나 붕괴되어 마비되는 것 방지)

내가 만든 Target Group에 라우팅 시켜주겠다!

Provisining: 할당. 장비를 공급받는중.

근데 아직, 지정한 TargetGroup에 인스턴스가 없어서, LB에 접근해봤자 의미 없다.

 

✅섹션 2: 오토스케일링 사용해보기

- ELB가 부하 분산하는 건 알겠는데, 필요한 건 자동으로 서버가 늘어나는 것.

- AutoScaling을 해보자!

- 보통 CPU 사용률을 기준으로 자동으로 늘어나고 줄어든다.

 

- Lucky Instance의 이미지가 하나 필요하다. Action에서 Create Image

- Images - AMIs 들어가면 만든 이미지가 보인다.

- 이건, 웹서버 이미지를 뜬거야.

- 웹서버랑 앱서버랑 있는 이것을 자동으로 오토스케일링이 늘게 해야하는데, 방금 만든 이미지를 넣어야 해.

- 이 때 템플릿을 만들어. EC2 launch templates. 어떤 인스턴스,운영체제,이미지 를 설정하는거야.

- 버전이 계속 올라간다. 처음은 1로 세팅하자.

- HTTP, HTTPS, SSH 있는 Security Group 선택.

 

- 만든 Launch Template을 가지고, Auto Scaling을 만들거야.

- VPC는 아직 배우지 않았으니 패스.

- 가용영역은 전과 같이 a,b 똑같이 선택해야함!

- 아까 만든 타겟그룹 선택!!

- 일반적으로, 오토스케일링 그룹과 타겟 그룹이 똑같아!!

 

- 부하가 많이 없어도 테스트 가능하도록, 일단 CPU 점유율의 Target Value는 20으로 잡는다.

 

- 이제 로드밸런서가 정말 분산을 시켜주고 있는지를 보자.

- 만든 로드밸런서의 주소로 가보자. 잘 뜬다.

 

자, 이제 인스턴스 하나를 타겟그룹에서 제외해볼거야.

- 타겟그룹에서 대상을 제외해야해.

- 왜 인스턴스를 직접 지우면 안되냐? 실제 사용자 중 지울 인스턴스를 쓰고있는 유저가 있을 수도 있으니까.

빠른 테스트를 위해, 시간을 300s -> 20s 로 바꾸자. 원래는 5분이라 조금 기다리는게 맞다~

draining이 완료되면, 이제 인스턴스에서 직접 삭제할 수 있다.

근데 로드밸런서에서는 최소 2개여야 하기에, 자동으로 늘어나는지를 보면돼.

하나가 자동으로 만들어지고 있다!!!

 

이제 다시 2개가 되었으니, 과부하를 걸어서 분산이 잘되는지를 볼까?

내부로 직접 들어가서 CPU 과부하를 걸어버릴 것이다.

script실행해서 반복문을 계속 돌려볼거야!

CPU 점유율 모니터링하고, 인스턴스 늘어나는 것을 볼 수 있음.

 

로드밸런서, 타겟그룹, 오토스케일링, AMI(deregister), AMI Snapshot, Launch Template, Security Group

 

 

 

✅섹션 3: 관계형 데이터 베이스 사용해보기

RDS: Relational Database Service

- MariaDB로 만들어보자.

- 매일 스냅샷을 찍음.

 

- 인스턴스와 달리, DB는 오토스케일링

- 그래서 DB는 민감하게 모니터링해야해.

- 사용량이 올라가면 scale up 등의 조치를 취해야 해.

 

 

✅섹션 4: 도메인 연결하기, 도메인 HTTPS 인증하기

-

✅섹션 5: AWS의 네트워크를 이해해보기

 

- VPC: AWS에서 나만의 사설 네트워크를 만들어주는 서비스.

- VPC: 집에 있는 IP 공유기와 비슷해. 

- 네트워크를 쪼개서 만들어야 해.

- VPC에서 쪼개진 영역을 subnet이라 하고, public과 private있다.

- 보안상, default VPC 사용은 권하지 않음.

 

CIDR

- IP주소를 관리하는 체계.

- 10.0.0.0/16 이면 16이 prefix.

- {prefix}번째 숫자까지 고정하겠다는 이야기.

- 10.0.0.0 을 2진수로 나타내면, 00001010.00000000.00000000.00000000 인데 여기서 앞에 16번째까지는 고정이고 나머지는 가변적이야.

- 그러면 2^8 * 2^8 = 2^16 개의 private ip를 사용할 수 있는 것.

 

Internet Gateway

- 위에서 만든 Public Subnet이, 그냥 만든다고 해서 외부에서 접근 가능한게 아니라, Internet gateway를 붙이고 Route Table 설정을 해야해.

- 하나 만들고 VPC에 달면 돼.

- 인터넷 게이트웨이 만들고, 인스턴스에 pulic ip가 할당되어 있어야 하고, route table을 설정해줘야 해.

 

 

 

VPC 만들기

1. Create VPC

2. Create Subnet

- 가용영역 a: Public 1, 10.0.0.0/24

- 가용영역 a - Private 1, 10.0.1.0/24

- 가용영역 b: Public 2, 10.0.2.0/24

- 가용영역 b: Private 2, 10.0.3.0/24

 

이제 Public Subnet을 외부에서 접근 가능하도록 Interent Gateway를 열어줄거야.

만들고 VPC 연결해주면 된다.

마지막으로, Route Table을 만들어서, Public Subnet들이 Internet Gateway를 통해 인터넷이 되도록 설정까지 해줘야 해.

기본적으로 VPC를 만들면 Route Table이 하나 있다.

Public Route Table 하나, Private Route Table 하나 만들 것이다.

 

Public RT - Routes - Edit routes

- 인터넷을 통해 들어오는 트래픽을 처리하고, 다시 나가야 하는데, 이걸 설정해줄거야.

- 0.0.0.0/0 은 모든 IP를 의미하는데, 모든 IP를 IG로 가게하면, 내부에서 돌아야 하는 패킷도 IG로 가는거야.

- 근데 라우팅 테이블은 적용 우선순위가 있어. Longest Prefix Match: Prefix 숫자가 클수록 네트워크 범위가 작기 때문에, 작은 것부터 적용됨. 그래서 내부에서 돌아야하는 것 빼고는 전부 IG로 간다~

 

이제 Private Subnet에서도 인터넷이 가능하도록 NAT Gateway를 만들거야~

NAT Gateway는, IP 공유기와 똑같은 역할을 해서, 고정 IP가 있어야 해.

NAT Gateway를 Public Subnet 1번,2번에 만들자. 다른 가용영역에 고장나도 다른 곳에서 사용 가능하게.

 

Route Table을 만들어서 Private Subnet의 인스턴스들이 NAT를 통해 인터넷을 할 수 있도록 설정해야해.

 

https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/tutorial-ec2-auto-scaling-load-balancer.html

 

자습서: 조정 및 로드 밸런싱된 애플리케이션 설정 - Amazon EC2 Auto Scaling

인스턴스에 연결해야 하는 경우 Proceed without a key pair(키 페어 없이 계속)를 선택하지 마세요.

docs.aws.amazon.com

 

 

- NAT gateway, Elastic IP, VPC 지우기.

 

(좌) 원본 다이어그램 / (우) 직접 그린 다이어그램

그대로 카피하는 것이지만, 그래도 직접 그려보니 이해가 깊이 되었다.

이걸 설명할 수 있을 정도로도 연습해야 한다.

 

✅섹션 6: AWS 리소스 마이그레이션 해보기

 

 

 

✅섹션 7: 세션 매니저 사용해보기

 

 

 

✅섹션 8: SecurityChain 구성해보기

 

 

 

✅섹션 9: 관계형 데이터 베이스 장애를 극복하는 방법 알아보기

 

 

 

✅섹션 10: 무제한 인터넷 스토리지 S3 사용해보기

 

 

 

✅섹션 11: AWS 내부에서 내부로 통신하기

 

 

 

✅섹션 12: 컨텐츠를 빨리 배포해보기

 

 

 

✅섹션 13: 서비스 할당량 증가하기

 

 

 

 

 

✅섹션 :

 

<질문창고>

1. 로드밸런서: 하나의 인스턴스에 대해서도 필요?

2. 서버를 만들면, 인스턴스, 로드밸런서, 오토스케일링, RDS, VPC 모든걸 세팅해줘야 하는 것?

3.