EBS(Elastic Block Store)
- 인스턴스가 작동하는 동안 인스턴스에 부착할 수 있는 네트워크 드라이브이다.
- 인스턴스가 terminate 되더라도 데이터는 남아 있게 된다.
- 한 인스턴스당 한개만 마운트된다. (CCP level, *Associate Level - 일부 EBS는 다중 연결이 가능하다)
- 특정 AZ에 바운드된다.
- 마치 실제 usb같은 느낌
- EC2가 2006년에 나온 것에 비해, EBS는 더 늦게 나왔다.
- 원래는 EC2가 Instant Volume를 사용했다. 그러나 EBS가 생긴 이후론, EBS가 Persistent Volume을 사용하므로 EBS의 volume을 사용하게 되었다.
1. EBS는 네트워크 드라이브이다.(물리적인 장치 X)
- 네트워크로 인스턴스에 활용되기 때문. 그래서 지연이 발생한다.
- 원래 인스턴스에서 detach 한 후 다른 인스턴스에 attach할 수 있다.
2. 특정 AZ에 제한된다.
- 볼륨을 옮기기 위해서는 스냅샷 해야한다.
3. 용량을 미리 결정해야 한다(provisioned capacity)
EBS - Delete On Termination 속성
- 'Delete On Termination' : 인스턴스를 종료할 시 동시에 EBS도 삭제할 건지에 대한 여부
- root EBS는 체크가 디폴트
- 다른 EBS는 체크X가 디폴트이다.
EBS Snapshots
- EBS 볼륨 백업할 때 사용한다.
- 다른 AZ나 리전으로 옮길 때 스냅샷을 카피해야 한다.
AMI
- Amazon Machine Image의 줄임말
- EC2 인스턴스를 커스터마이징 한 것 - 내 마음대로 소프트웨어나 환경설정, OS 등을 정할 수 있고 이를 pre-package화 할 수 있다.
- 특정 리전에 둘 수 있고 다른 리전으로 카피해 갈 수도 있다.
AMI 생성 과정
- 인스턴스를 커스터마이징 한 뒤, 데이터 무결성을 위해 인스턴스를 stop하고 AMI를 만든다
- EBS 스냅샷도 동시에 만들어진다.
- AMI로부터 새로운 인스턴스를 만든다.
snapshot -> 볼륨을 통해 만들어진다.
단독으로 있을 수 있다.
AMI(이미지) -> 스냅샷이 있어야만 링크되어 존재할 수 있음
이미지를 launch하거나 복사해서 다른 곳으로 전송할 수도 있다.
iterm에서 ec2-user(WEB01)에 접속한 뒤, aws.tar파일을 wget한다.
/var/www/html 아래에 타르 파일을 압축 해제 한다.
이후 퍼블릭 IP로 접속하면
이렇게 뜬다.
WEB01의 이미지를 생성한다.
[재부팅 안함]에서 [활성화] 에 체크한다.
이미지를 만들면 그와 동시에 스냅샷도 만들어진다.
이미지를 이용하여 스냅샷 만들기
아까 만들어진 이미지를 선택한 뒤, 오른쪽 마우스 클릭 - [AMI로 인스턴스 시작]을 클릭한다.
앞의 과정과 거의 동일하다.
방금 만든 인스턴스가 생성되었다.
MY-AMI-WEB01의 public ip에 접속해보면 WEB01에서 보았던 홈페이지가 동일하게 보인다.
탬플릿 생성
방금 복제한 인스턴스에서 오른쪽 마우스 클릭 - [인스턴스에서 템플릿 생성]을 클릭한다.
나머진 다 기본값으로 하고 [시작 템플릿 생성] 클릭
[EC2 대시보드] 탭에 들어가서 [인스턴스 시작]을 클릭해 보면 [탬플릿으로 인스턴스 시작]을 선택할 수 있다
이를 통해 보다 빠르게 인스턴스를 launching할 수 있다.
요렇게 시작할 수 있다.
퍼블릭 Ip로 들어가면 start bootstrap이 역시 뜬다.
EC2 Instance Store(인스턴스 스토어)
- 물리적으로 연결된 H/W 드라이브 -> EBS보다 성능이 더 좋다
- I/O Performance가 더 좋다.
- 임시 스토리지이기 때문에 장기적인 저장이 어렵다
- buffer/ cache/ scratch data/ temporary content에 좋다
*만약 가변 스토리지에 310,000 IOPS가 필요한 고성능 DB를 실행하고 있을 때 어떤 방법을 추진할 것인지?
- 인스턴스 스토어를 사용하여 실행 가능
- 데이터 손실이 발생할 수 있으므로, 인스턴스 스토어가 있는 다른 인스턴스에 복제하거나, 데이터를 백업한다.
EBS Volume의 종류
1. GP(General Purpose) SSD
- 경제적이고 지연시간이 적음
- 부트 볼륨으로 사용됨
- 1GB ~ 16TB
- gp3 : IOPS와 처리량을 독립적으로 증가시킬 수 있음
- gp2 : volume과 IOPS가 연결되어 있고, 용량이 증가함에 따라 IOPS는 3배 증가한다.
2. Provisioned IOPS (PIOPS) SSD
- IOPS 성능이 지속적인 중요한 비즈니스 애플리케이션에 사용된다.
- 16,000 IOPS이상이 필요한 어플리케이션에 활용된다.
- 스토리지 성능과 일관성에 민감한 데이터베이스 워크로드에 주로 사용된다.
- io1 / io2 (4GB ~ 16TB) : 최대 32,000 PIOPS까지, Nitro의 경우 64,000 PIOPS 까지 가능, io2가 io1보다 내구성과 GB당 IOPS가 더 높음
- io2 Block Express (4GB ~ 64TB) : 지연속도가 매우 낮고, 최대 256,000 PIOPS까지 가능하다.
3. HDD (Hard Disk Drives)
- boot volume이 될 수 없다.
- 125GB ~ 16TB
- st1(Throughput Optimized HDD) : 빅데이터, Data Warehouse, Log Processing에 적합하다. 최대 500 IOPS
- sc1 (Cold HDD) : 저렴하다. 최대 240 IOPS
EBS Multi-Attach(EBS 다중 연결)
- 하나의 EBS 볼륨을 한 AZ 내의 여러 인스턴스에 연결하는 것
- 각각의 인스터스는 볼륨 전체 읽기, 쓰기 권한을 갖는다
- cluster된 리눅스 애플리케이션에 높은 availability를 갖는다.
- 애플리케이션은 반드시 동시 쓰기 작업을 관리해야 한다.
- 반드시 클러스터 인식 파일 시스템을 사용해야 한다.
EBS Encryption(암호화)
- 안 쓰는 데이터는 암호화된다.
- 모든 데이터는 전송될 때 암호화 된다
- 암호화는 지연 시간에 영향을 주지 않는다.
- 암호화 되지 않은 스냅샷을 복사할 때 암호화를 활성화 할 수 있다.
1GB의 EBS Volume을 만든다.
방금 만든 Volume에 오른쪽 마우스 - [Create Snapshot] 클릭
스냅샷을 unencrypted 상태로 만든다.
스냅샷 메뉴로 들어간 뒤, 만든 스냅샷 선택 - [Copy snapshot]
그리고 Encryption 에 체크한다.
그러면 암호화 된 스냅샷이 생성된다.
방금 만든 스냅샷을 체크해보면, KMS 키가 생긴 것을 확인할 수 있다.
이 스냅샷으로 volume을 생성하면
우 : 암호화되지 않은 스냅샷으로 Volume을 생성할 때, 직접 Encryption에 체크하고 진행하면 된다.
KMS 키로 암호화 된 것을 볼 수 있다.
EFS (Elastic Files System)
- 다양한 AZ에 걸쳐 다수의 EC2 인스턴스에 마운트 할 수 있는 관리형 NFS ( <-> EBS는 한 인스턴스에서만 사용된다)
- multi-AZ에서 작동한다. (<-> EBS는 멀티를 제외하곤 단일 AZ)
- HA, scalable, 비쌈, 사용한 만큼 지불함
- 콘텐츠 관리, 웹 서빙, 데이터 셰어링, 워드프레스에 사용된다
- NFSv4.1 프로토콜 사용
- 리눅스 기반의 AMI와 호환된다
- 사용되지 않을 땐 KMS를 이용해서 암호화된다.
- 필요한 만큼 알아서 용량이 조절된다.
- standard file API를 갖는 POSIX file system(리눅스에서만 사용 가능)이다.
EFS Scale
- 자동으로 용량이 조정된다.
Performance mode
- 범용(General Purpose) : 기본, 지연 시간에 민감한 경우에 사용된다.
- Max I/O : 대규모의 데이터 워크로드를 처리할 때. 지연시간과 처리량, 병렬성이 높음
Throughput mode
- Bursting
- Provisioned : 스토리지 사이즈와 관계 없이 처리량을 설정할 수 있다.
EFS의 Storage 계층
- Storage Tiers : 파일에 대한 수명 주기 관리 기능
- Standard : 자주 액세스되는 파일
- EFS-IA(Infrequent access) : 저비용의, 접근빈도가 낮은 파일에 대한 티어. 파일을 불러올 때마다 돈이 든다.
* 관리형 - 데이터 보호, 자동 백업, 고가용성, 자동조정 등을 총괄적으로 관리해 준다.
[파일 시스템 생성]을 클릭한다.
One Zone이 리전보다 가용성은 떨어지지만 더 저렴하다.
[생성]을 누르면 빠르게 생성된다.
우측 상단의 [연결]을 클릭한다.
첫 번째 명령어를 클립보드에 복사한 뒤, 터미널에 붙여넣기 한다.
* NFS 클라이언트 사용 - 전통적인 nfs 프로토콜 방식으로 사용하겠다는 의미
mkdir efs
sudo yum install -y amazon-efs-utils
efs디렉터리를 만든 뒤, amazon-efs-utils를 설치한다.
그리고 sudo mount ~... 명령어를 입력하면 time out이 된다. default 보안 그룹에서 포트 번호가 열려 있지 않기 때문이다.
=> 새로운 보안 그룹을 만들어서 efs의 포트 번호를 열어준다.
다시 ec2로 가서, [보안 그룹]탭에 들어간 뒤 새로운 보안 그룹을 생성하자
customize를 클릭한다(안하고 바로 Create 한 뒤, 따로 보안 그룹을 설정해도 된다.)
Customize를 클릭한다.
Lifecycle management : n일 동안 파일에 대한 접근이 없는 경우 해당 파일을 접근 빈도가 낮은 파일로 분류한다. -> EFS IA 스토리지 클래스로 옮겨 비용을 절약한다.
Performance mode
- General Purpose : 지연 시간에 민감한 웹 서비스 환경에 적합하다.
- Max I/O : 처리량이 많은 것, 지연 시간이 긴 작업인 빅 데이터 등에 적합하다.
Throughput mode
- Bursting : 파일 시스템의 크기에 따라 처리량이 확장됨
- Provisioned : EFS 파일 시스템 처리량이 정해져 있고, 처리량이 높을 때
EC2 > Security Group 으로 가서
보안 그룹을 만든다.
이 보안 그룹을 각 AZ의 Mount target으로 추가한다.
그 다음 이 EFS에 접근할 인스턴스 두 개를 만들고, 가용영역은 각각 a, c
SG를 새로 만들고 이름을 ec2-to-efs로 지정한다.
터미널로 Test1, Test2 인스턴스에 접속한다.
sudo yum install -y amazon-efs-utils
mkdir efs
EFS 네트워크 파일 시스템에 대한 접근을 허용해 주기 위해, 아까 만든 EFS 선택 - [Attach] 클릭한다.
복사해서 각각의 터미널에 붙여넣기 한다.
하지만 timeout이 발생한다.
보안그룹에서 my-efs-demo가 ec2-to-efs로부터 오는 트래픽을 허용하도록 인바운드 규칙을 수정해야 한다.
다시 mount 명령어를 실행해 본 뒤, 확인해 보면 127.0.0.1 ~ efs 디렉터리가 성공적으로 마운트된 것을 확인할 수 있다.
확인해 보면 Test1 인스턴스에서 만든 txt파일이 Test2에서도 잘 보인다.
ip a를 해 보면 efs 디렉터리와 연결된 127.0.0.1이 나타나는 것을 볼 수 있다.
EBS vs EFS
EBS | EFS |
오직 하나의 인스턴스에만 붙일 수 있음 | 여러 AZ에 걸쳐 있는 여러 인스턴스들에 마운트 가능하다 |
AZ에 제한됨 | AZ 외부에 있어서 여러 AZ에 걸쳐 마운트할 수 있음 |
저렴하며, 사용량에 관계 없이 EBS 드라이브 크기에 따라 지불한다 | 비싸며, 사용한 만큼 지불한다 |
구글 드라이브와 AWS EFS의 차이
구글드라이브
- 웹브라우저 없이 wget만으로 받을 수 없다.
- 즉, CLI에서 다운로드 불가능하다.
AWS EFS
- 객체이다. -> ~~.jpg 처럼 끝이 확장자로 끝남
- 배포 속도가 훨씬 빠르다.
- 대신 배포가 쉽다 보니 트래픽 과다 발생할 수도 있다.
'Public Cloud > AWS' 카테고리의 다른 글
AWS 실습하기 6 (0) | 2022.06.13 |
---|---|
AWS - RDS 개념, 실습 (0) | 2022.05.31 |
AWS - EC2 Basic 2 (0) | 2022.05.27 |
AWS - EC2 Basic (0) | 2022.05.27 |
AWS - IAM 및 AWS CLI (0) | 2022.05.25 |