쓰다가 한판 날아갔지만 진정하고 다시 써본다......🫠
Amazon EC2
- Elastic Compute Cloud = IaaS(Infrastructure as a Service)
* 클라우드는 필요할 때마다 컴퓨터를 대여할 수 있다.
- ex. EC2
- 기능 : EC2, EBS, ELB, ASG 등...
- EC2를 이해해야 클라우드가 어떻게 동작하는지를 이해할 수 있다!
EC2의 사이즈, 환경 설정 옵션
- EC2의 OS : 리눅스, 윈도우, 맥 OS
- compute power & core가 얼마나 필요한지? -> CPU
- Random-access memory가 얼마나 필요한지? -> RAM
- 얼마나 storage 공간이 필요한지?
-> EBS& EFS(Network에 부착됨)
-> EC2 Instance Store(hardware)
- 방화벽 규칙 - 보안 그룹(security group)
- 부트스트랩 스크립트 : EC2 User Data(사용자 데이터)
EC2 User Data(사용자 데이터)
- EC2 User data script를 이용하여 인스턴스를 부트스트래핑 할 수 있다.
* 부트스트랩이란, 머신이 시작할 때 커멘드를 실행시키는 것이다.
- 이 스크립트는 최초 실행시 딱 한번 실행된다.
- EC2 User data는 부팅 작업을 자동화할 때 사용한다.
- 루트 권한으로 실행된다.
EC2 인스턴스의 종류
m5.2xlarge
- m : 인스턴스의 클래스
- 5 : 세대(AWS가 H/W를 계속 개선하기 때문에 새로운 세대의 H/W가 계속 출시된다.
- xlarge : 인스턴스 클래스 내의 사이즈
1. General Purpose(범용 인스턴스)
- 웹서버나 code repositories 등에 사용됨.
- ex. t2.micro
2. Compute Optimized
- compute에 집중된 작업을 할 때 좋다.
ex. - Batch processing
- Media transcoding
- 고성능 웹서버
- HPC(High Performance Computing)
- 머신러닝
- 게임 서버
3. Memory Optimized
- 메모리에 많은 데이터 셋을 처리해야 하는 workload에 빠른 성능을 보여야 할 때 좋다.
ex. - Relational/Non-relational DB
- 분산 웹 scale 캐시 저장소
- BI(Business Intelligence)를 위한 인-메모리 DB
- 큰 비정형화된 데이터의 실시간 처리를 해야하는 애플리케이션
인스턴스 생성하기(구버전)
크롬의 root 계정으로 접속한다
검색창에 ec2를 검색하고 클릭한다.
좌측의 [인스턴스] 탭에 들어간 뒤 [인스턴스 시작]을 누른다.
상단의 [이전 경험으로 옵트아웃]을 눌러 이전 버전으로 사용해 본다.
Amazon Linux2(AL2) == CentOS7, RedHat7, Fedora
맨 위에 Amazon Linux 2 AMI 5.10을 선택한다.
프리 티어인 t2.micro를 선택한 뒤 [다음:인스턴스 세부 정보 구성] 을 클릭한다.
* 퍼블릭 IP = Openstack의 floating IP와 같음.
서브넷 - 2a를 선택한다. (실제로 2a, 2c만 선택 가능하다.)
* 도메인 조인 디렉터리 - 유저에게 접근 권한 주기. .. 인데 따로 서칭해도 나오는 게 없음.
* 종료 방식
poweroff를 입력했을 때 어떻게 할 것인지에 대해 정할 수 있다.
원래 서버는 끄지 않고 24/7 돌아가는 게 정상이지만, 비용 절감을 위해 poweroff가 필요할 때도 있다.
디폴트 값은 중지가 기본이고, [종료]=terminate(delete)로 바꿀 수도 있다.
* 최대 절전 중지 동작
컴퓨터의 절전 모드와 동일하게 이용할 수 있다.
디스크 드라이버의 일부에다가 상태 저장하고, 다시 불러올 수 있다.
부팅속도가 향상된다.
* 종료 방지 기능 활성화
terminate(삭제)를 방지한다.
하지만 이렇게 되면 인스턴스를 삭제해야 할 때 삭제가 어려워지므로, 실습할 때는 사용하지 않는다.
* 중지 방지 활성화
poweroff를 방지한다.
* 모니터링
기존 5분마다 모니터링하는 것을 더 자주 체크하도록 할 수 있다.
시간을 줄일 수록 과금이 많이 된다.
* 테넌시(tenancy)
가입자의 의미, 서버 호스팅 서비스를 가능하게 한다.
* Elastic Inference
딥러닝/머신러닝을 할 때 체크한다.
* 크레딧 사양
갑자기 CPU 1C가 넘는 접속자가 생길 때, 끊김이 발생하지 않도록 무한대로 Scale Up(인스턴스의 개수가 증가)하게 된다.
* 파일 시스템
file storage가 연동되어 마운트 할 수 있다.
* 네트워크 인터페이스
랜카드를 추가할 수 있다. 특히 보안장비를 추가할 때 사용한다.
이 단계에서는 따로 건드리지 않고 넘어간다.
스토리지의 사이즈를 편한 대로 수정할 수 있다.
볼륨 유형의 gp2과 gp3, io1과 io2(속도가 가장 높음)는 같다.
* /dev/xvda 에서 x는 XEN Server의 x를 가리킨다.
[SSH], [HTTP]를 추가한다.
그리고 ping test 를 위해 [모든 ICMP - IPv4]를 추가한다.
틀린 부분이 있는지 확인하고 [시작하기]를 누른다.
새로운 키를 추가한 뒤, [키 페어 다운로드]를 클릭하여 다운로드 받고, [인스턴스 시작]을 누른다.
이 키를 이용해서 추후에 터미널로 접속할 것이다.
[인스턴스 보기]를 클릭한다.
[상태 검사]가 2/2가 되어야 완전히 설치된 것이다.
웹서버를 이용하기 위해서는 탄력적 IP(elastic IP)를 구매해서 이용해야 한다.
인스턴스를 클릭하면 퍼블릭 IPv4 주소가 보이는데, 이를 웹브라우저로 접속해 본다.
Test Page가 보이면 성공!
인스턴스 생성하기(신버전)
새로운 버전으로 WEB02를 구축한다. 이번엔 Ubuntu로 정해 본다.
Ubuntu는 18.04로..
* [서브넷] - WEB01은 2a를 가용영역에 뒀기 때문에, WEB02는 2c에 한다.
* 콜드 HDD - hotline의 반대, 느리게 동작하기 때문에 자주 액세스하지 않는 워크로드에 적합한 가장 저렴한 HDD이다
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ebs-volume-types.html
Amazon EBS 볼륨 유형 - Amazon Elastic Compute Cloud
Amazon EBS 볼륨 유형 Amazon EBS는 다음의 볼륨 유형을 제공하고 이러한 볼륨 유형은 성능 특성과 가격이 다르므로 애플리케이션의 필요에 맞게 스토리지 성능과 비용을 조정할 수 있습니다. 볼륨 유
docs.aws.amazon.com
* EFS - NFS와 유사, Elastic File Storage의 줄임말.
* FSx -Samba와 유사
하여튼 둘 다 파일 스토리지의 종류이다
스크롤 쭉쭉 내려서 [고급 세부 정보]의 가장 아래부분에 스크립트를 추가한다.
WEB02는 Ubuntu이므로, 우분투 명령어를 입력해야 한다.
[인스턴스 생성]버튼을 누른다.
WEB02에 Public IP로 접속했을 때 큰 글씨로 WEB02가 뜨면 성공!
Moba Xterm으로 인스턴스에 접속하기
Moba Xterm을 실행한 뒤, 상단 왼쪽의 Session 버튼을 누른다.
remote host에는 public IP를 입력한다.
username의 default값은 ec2-user이다.
key에는 직전에 다운로드 받았던 aws-key.pem을 사용한다.
Mac Iterm로 인스턴스에 접속하기
맥에서는 iterm을 이용해서 접속할 수 있다.
접속할 인스턴스를 선택한 뒤, 상단의 [연결]을 클릭한다.
Moba-Xterm에서 접속했던 것 처럼, SSH로 접속해야 한다.
가장 마지막 줄의 ssh -i ~~를 복사하고, iterm를 켠다.
만약 Amazon Linux로 접근하려면 계정 이름을 ec2-user로 해야한다.(root 아님)
key를 저장한 디렉터리로 이동한다.
key의 권한을 400으로 바꿔준다.
chmod 400 aws-key.pem
권한이 400인 모습
그 다음, 아까 복사했던 명령어 ssh -i~ 를 입력하면 접속할 수 있다.
인스턴스 삭제
오른쪽 마우스 - [인스턴스 종료] 를 클릭한다.
스토리지도 인스턴스와 같이 삭제된다
EC2 대시보드를 보면 인스턴스(실행중)이 0임을 확인할 수 있다.
아래 칸의 [인스턴스]는 종료된 인스턴스를 포함하기 때문에, 1로 나타난다.
Security Group(보안 그룹)
- EC2 인스턴스에 트래픽이 들어오거나 나오는 것을 통제하는 역할을 한다.
- allow rules만 있다.(disallow는 없음)
- IP 혹은 보안 그룹을 참조할 수 있다.
- EC2 인스턴스에서 방화벽(firewall)의 역할을 한다.
- SG는 여러 인스턴스에 부착될 수 있다.
- 리전, VPC 결합에 한정되어 있다. 즉, 리전을 전환하게 되면 새 보안그룹을 생성하거나 다른 VPC를 생성해야 한다.
- EC2의 바깥에 존재한다. EC2 외부의 방화벽이다. EC2의 내부 애플리케이션이 아님.
- SSH 엑세스를 위해 따로 SG를 두는 것이 좋다.
- 애플리케이션에서 time out이 발생하면 SG문제이다.( cf. connection refused -> 애플리케이션 에러 혹은 시작(launch)되지 않은 것)
- inbound는 기본적으로 all block
- outbound는 기본적으로 all authorised
내 컴퓨터 IP를 인바운드 규칙으로 참조했을 경우 이 컴퓨터가 포트 22에서 허용될 것이다.
그렇기 때문에 내 컴퓨터로는 EC2 인스턴스로 접속이 가능하지만, 다른 컴퓨터의 경우에는 아이피가 해당하지 않으므로 접속이 되지 않는다.(timeout)
* outbound는 주로 S/W 업데이트, 이메일 전송 등
- 이는 로드 밸런서로 이어진다.
Classic Port
- 22 : SSH(Secure Shell) - 리눅스 인스턴스로 로그인 할 때
- 21 : FTP(File Transfer Protocol) - file share에 파일을 업로드 할 때
- 22 : SFTP(Secure File Transfer Protocol) - SSH를 이용해서 파일을 업로드 할 때(그래서 SSH와 동일한
- 80 : HTTP - 보안되지 않은 웹사이트에 접속할 때
- 443 : HTTPS - 보안된 웹사이트에 접속할 때
- 3389 - RDP(Remote Desktop Protocol) - Window 인스턴스에 접속할 때
AWS 비용 유형
1. 온 디맨드 인스턴스
- 가장 기본인 요금제이자 가장 비싼 요금제
- 사용한 만큼 지불한다.(pay by second)
- 단기(short) 및 중단 없는 워크로드에 권장됨(특히 실습할 때 많이 사용)
- predictable pricing
2. 예약 인스턴스(Reserved Instance; RI)
2-1. Reserved Instance
- 장기 약정으로 사용한 것에 대해 선결제한다.
- 다른 리전으로 이동 등이 어렵다 -> 이를 극복한 것이 Saving Plans
- 1년, 3년 예약 가능
- 특정 인스턴스 유형을 예약하게 되면, 중간에 인스턴스를 바꿀 수 없다
- ex. DB
2-2 Convertible Reserved Instances(가변 예약 인스턴스)
- 예약 인스턴스와 달리, 사용 중 EC2 인스턴스를 변경할 수 있다
2-3 (Deprececated)Scheduled Reserved Instance(정기 예약 인스턴스)
- 1년 동안 지정된 시작 시간 및 기간으로 매일, 매주 또는 매월 반복적으로 정기 용량을 예약
- 예를 들어, 블랙 프라이데이마다 사용한다든가..
3. 스팟 인스턴스
- 가장 저렴한 인스턴스 (주문형에 비해 90퍼센트 낮은 가격)
- 경매 방식 => 상한가를 부르면 남이 쓰던 것도 내가 쓸 수 있다.
- 반대로, 나보다 더 최고가를 부르는 사람이 생기면 -> 인스턴스를 손실하게 된다(less reliable).
- 장애에 탄력적인 워크로드에 유용함(batch 작업, 데이터 분석, 이미지 처리).
- 반대로, DB 등 중요한 작업에는 권장되지 않음.
EC2 > Spot Requests 메뉴로 간다.
[Pricing history] 클릭해본다.
중간에 Instance Type을 c4.large로 바꿔 보았다.
그러면 현재 가격과, 온디멘드 가격(검은색 선)을 비교해 볼 수 있다.
나간 뒤, [Request Spot Instance]를 클릭한다.
Apply Defaults를 해제하면, 다양한 설정이 나온다.
Max Price, valid from, valid until 수정, 로드 밸런서, 타겟 그룹 연결도 가능하다.
스팟 플릿 내에 몇 개의 인스턴스를 포함할지 지정한다.
우측에는 instance, vCPUs, memory중 어떤 것이 가장 중요한지(대상으로 하는지)를 선택할 수 있다.
Interruption behavior - 방해가 발생했을때 Terminate할 것인지 Stop할 것인지, Hibernate(동면)할 것인지 선택
스팟 모드에서 인스턴스를 한 번만 실행할 때
Instance > Launch Instance 클릭 후
Advanced Details에 가면 [Request Spot Instances] 가 있는데, 체크한다.
그러면 최고가를 지정할 수도 있고(내가 낼 수 있는 최대 돈), Interruption이 발생했을 때 어떤 조치를 취할 것인지도 정할 수 있다.
4. Dedicated Hosts(전용 호스트)
- 앞의 것들이 : 아파트 라면/ 전용 호스트 : 단독 주택 과 같다
- EC2를 위한 서버 하나를 단독으로 임대해준다.
- 단 한 사용자를 위한 물리적 전용 EC2 서버
- 비싸다
- 3년동안 할당된다.
5. Dedicated Instances
- 다른 사용자와 H/W를 공유하지 않을 수 있다
6. Capacity Reservation
- 일정 기간동안 특정 AZ내의 capacity를 예약할 수 있다.
- EC2 인스턴스의 실행에서 용량의 사용 가능 여부를 확실하게 하고자 할 때 사용한다.
EC2 On Demand
- 사용한 만큼 지불한다. -> Linux와 Windows는 최초 1분 후 초 단위로 계산됨, 나머지 OS는 시간 단위
- 가장 비용이 높지만 선불 결제 방식이 아님
- 오랜 기간 사용해도 되지 않음
- 연속적인 단기 워크로드에 적합함
EC2 Reserved Instances
- 온 디멘드보다 최대 72% 할인
- 특정 인스턴스를 선택해서 예약해야 한다.
- 1년 혹은 3년
- 매달 지불, 부분 선결제(upfront), 전체 선결제 방식
- 인스턴스의 범위 : Regional, Zonal
- 지속적으로 사용할 애플리케이션에 주로 사용된다. -ex. DB
- 특정 인스턴스 타입이 예약된다.
* Convertible Reserved Instance : 인스턴스 유형을 바꿀 수 있다.(t2.large <-> c5.large)
* Scheduled Reserved Instance : 특정 시간대만, 1~3년의 Commitment
EC2 > Reserved Instances 클릭
이렇게 고를 수 있다.
하지만 Reserved Instances 보다 Saving Plan이 더 간편하기 때문에 주로 Saving Plan을 더 많이 사용하는 추세이다.
EC2 Spot Instance
- On-demand보다 최대 90퍼센트까지 할인됨
- 나의 max 가격이 현재 spot 가격보다 클 때 지속될 수 있다.
- 가장 저렴한 인스턴스
- failure에 resilient(회복력 있는) 작업에 좋음
- Batch jobs, Data analysis, 이미지 프로세싱, 분산 작업, 시작과 끝 시간이 유연한 작업
- DB나 중요한 작업에는 적합하지 않음
* EC2 Spot Instance Requests
- 만약 현재 spot 가격이 내 max 가격보다 크게 되면 내 인스턴스를 중지하거나 종료할 수 있다.
* Spot Block(deprecicated)
- AWS에게 스팟 인스턴스를 회수당하지 않기 위해 사용한다.
- 일정 시간동안 스팟 인스턴스를 차단한다.
* Spot Fleets(스팟 집합)
- Spot Instance의 집합 + (On-Demand 인스턴스)
- 가격 제한 내에서 목표한 수용치를 충족시키려고 한다.
- 사용 가능한 launch pool을 통해서 실행된다.
- 가장 적절한 launch pool을 정할 수 있다.
- 상한가를 넘어섰을 때 인스턴스 시작하는 것을 멈춘다.
- Spot Fleets는 자동으로 스팟 인스턴스를 가작 낮은 가격으로 구매할 수 있도록 해준다.
<Spot Instance에 할당하는 전략>
- lowestPrice : 제일 낮은 가격의 풀부터(가격 최적화, 짧은 워크로드에 적합)
- diversified : 모든 풀에 걸쳐 분산한다. - 한 풀이 중단되더라도 다른풀이 활성화되면 됨
- capacityOptimized : 인스턴스의 개수에 따라 최적 용량으로 실행되고 적절한 풀을 찾아 준다.
EC2 Dedicated Hosts(전용 호스트)
- AWS 데이터 센터 내 하나의 전체 서버(physical server)를 임대한다.
-가장 비싼 옵션이다
- 1 or 3년동안
-복잡한 라이센싱 모델을 가진 소프트웨어에 유용하다.
- 강한 규제나 규정준수를 가진 회사에 적합하다.
낮은 수준의 하드웨어로 액세스할 수 있는 호스트를 실행할 수 있다.
라이센싱 가격이 좋아진다.
상단의 [Get Started]를 클릭하게 되면, 호스트의 관점이 아니라 라이센스의 관점에서 고려를 하게 된다.
그냥 여기서 직접 전용 호스트를 실행하려면 [Allocate Dedicated Host]를 클릭한다.
EC2 Dedicated Instances(전용 인스턴스)
- Dedicated Hosts의 약한 버전
- 내 전용 HW에서 실행되는 인스턴스
- 다른 인스턴스와 하드웨어를 공유할 수도 있다.
- 인스턴스 배치 여부에 개입할 수 없다. 인스턴스가 자동으로 배치된다.
* Desired Capacity
EC2에 n개의 인스턴스가 유지되도록 했을 때의 그 n값. 즉, 유지되어야 하는 인스턴스의 최소 개수
- 만약 한개의 인스턴스가 지워진다면 master controller가 그 n개를 유지하기 위해 1개를 복제해서 새롭게 인스턴스 n개를 형성하도록 한다.
* AWS EKS Cluster(Elastic Kubernetes Service)
- 운반되는 애플리케이션을 scale하고, manage하고, 배치하기 위해 관리되는 aws 쿠버네티스 서비스이다.
- 자신이 직접 쿠버네티스를 설치, 운영하지 않아도 쿠버네티스를 사용할 수 있는 managed service이다.
- eks의 복제 기능으로 인스턴스의 개수를 desired capacity만큼 유지하도록 한다.
- 미리 스냅샷 등 복제해놓고 계속 복구하는 작업을 하게 된다.
'Public Cloud > AWS' 카테고리의 다른 글
AWS - RDS 개념, 실습 (0) | 2022.05.31 |
---|---|
AWS - EC2 인스턴스 스토리지(EBS, EFS) (0) | 2022.05.30 |
AWS - EC2 Basic 2 (0) | 2022.05.27 |
AWS - IAM 및 AWS CLI (0) | 2022.05.25 |
AWS - AWS 기본 이론 (0) | 2022.05.16 |