[DEV] 7주차. AWS 클라우드(1)
1. 클라우드 컴퓨팅
- IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 방식
-
물리적 데이터 센터와 서버를 구입하여 유지 관리하는 대신, AWS와 같은 클라우드 공급자로부터 필요에 따라 컴퓨팅 파워, 스토리지, 데이터베이스와 같은 기술 서비스에 액세스함
- 이점
- 민첩성
- 탄력성
- 비용절감
- on demend
- 관리 용이성
2. AWS EC2
- 논리적인 리소스 서버 할당
기능
- 인스턴스: 가상 컴퓨팅 환경
- Amazon 머신 이미지 (AMI): 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있음
- 인스턴스 유형: 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량 등의 여러 가지 구성 제공
- 키페어를 사용하여 인스턴스 로그인 정보 보호
- 인스턴스 스토어 볼륨: 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전환 또는 종료 시 삭제됨
- Amazon Elastic Block Store (EBS): EBS 볼륨을 통해 영구 스토리지 볼륨에 데이터 저장
- 보안 그룹을 사용해 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능 제공
- 탄력적 IP 주소 (EIP): 동적 클라우드 컴퓨팅을 위한 고정 IPv4 주소
- 태그: 사용자가 생성하여 Amazon EC2 리소스에 할당할 수 있는 메타데이터
- Virtual Private Clouds (VPC): AWS 클라우드에서는 논리적으로 격리되어 있지만, 원할 때마다 고객의 네트워크와 간편히 연결할 수 있는 가상 네트워크
3. EC2 실습
키페어 생성
인스턴스 시작
ssh 연결
- 다운받은 키페어 ->
/.ssh
폴더로 이동 후/.ssh
폴더에서 ssh 연결
- 인스턴스 ID로 연결
- IP 주소로 연결
보안그룹 - 인바운드 규칙 편집
- 0.0.0.0 : 모든 IP 허락
- 포트 번호 변경할 수 있음
4. 클라우드 기본 용어
- 가상화
- 물리적인 컴퓨터 하드웨어를 보다 효율적으로 활용할 수 있도록 해주는 프로세스
- 클라우드 컴퓨팅의 기반을 제공하는 기술
- 가상머신
- 소프트웨어 형식으로 물리적 컴퓨팅을 시뮬레이션하는 가상 환경
- 일반적으로 VM의 구성, 가상 하드 드라이브의 스토리지, 특정 시점에 해당 상태를 유지하는 VM의 일부 스냅샷을 포함한 다수의 파일들로 구성되어 있음
- 스냅샷
- 특정 시점에서 스토리지의 파일 시스템을 포착해 보관하는 기술
- 장애나 데이터 손상 시 스냅샷을 생성한 시점으로 데이터 복구
- 원본 데이터를 그대로 복사해 저장하는 백업과 달리, 초기 생성 시 혹은 데이터의 변경이 있기 전까지는 스토리지 공간을 차지하지 않음
- 메타데이터의 복사본에 해당하기 때문에 생성하는 데 오랜 시간이 걸리지 않고, 장애 상황이 발생해도 빠르게 데이터 복원 가능
- 데이터 센터
- 수많은 서버들을 한데 모아 네트워크로 연결해 놓은 시설
- Region (지역)
- 데이터 센터가 위치한 지역
- IT 리소스를 생성할 리전은 선택 가능
- 대상 고객의 지역과 자원을 생성할 리전이 최대한 가까워야 함
- 국가마다 자원사용 비용이 다름
- Availability Zone (가용영역)
- 하나의 Region은 두 개 이상의 Availability Zone으로 구성됨
- 줄여서 AZ로 표시
5. 탄력적 IP
- 인스턴스에 고정 IP 할당
- 아마 5개까지 가능, AWS에 요청하면 더 받을 수 있을 것
- 반납도 가능
인스턴스 선택
6. Elastic Beanstalk
- 앱 애플리케이션을 만들 수 있는 환경을 빠르게 구성해서 관리할 수 있는 서비스
- 애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도, AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있음
- 애플리케이션을 업로드하기만 하면 용량 프로비저닝, 로드밸런싱, 조정, 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리함
- 프로비저닝: 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것
- Go, JAVA, .NET, Node.js, PHP, Python, Ruby에서 개발된 애플리케이션 지원
- 애플리케이션을 배포할 때 Elastic Beanstalk이 선택된 지원 가능 플랫폼 버전을 구축하고, EC2 등의 AWS 리소스를 하나 이상 프로비저닝하여 애플리케이션을 실행함
애플리케이션 생성
플랫폼 선택 (JAVA 17까지 지원됨)
서비스 역할 & 키페어 선택!
애플리케이션 생성됨
EC2에서 인스턴스 생성 확인
IP 주소로 연결
- 실행 파일 :
/var/app/current
- 로그 :
/var/log
- 앞단에 nginx 80 포트가 대기, 안쪽에 우리가 만든 애플리케이션의 포트로 연동됨
- nginx 웹서버 80 포트가 내부적으로 기본적으로는 5000 포트로 연결되어 있음!
The instance profile aws-elasticbeanstalk-ec2-role associated with the environment does not exist.
에러
- IAM에서 역할 생성!
- [IAM 콘솔] - [역할 생성]
- [신뢰할 수 있는 엔터티 유형] : AWS 서비스
- [사용 사례] : EC2
- [권한 정책] : AWSElasticBeanstalkWebTier, AWSElasticBeanstalkWorkerTier, AWSElasticBeanstalkMulticontainerDocker
- [역할 이름] : aws-elasticbeanstalk-ec2-role
- [역할 생성]