[DEV] 7주차. AWS 클라우드(1)
[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 리소스를 하나 이상 프로비저닝하여 애플리케이션을 실행함
애플리케이션 생성
- 실행 파일 :
/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
- [역할 생성]
This post is licensed under CC BY 4.0 by the author.