DEVELOP/AWS

AWS | 스토리지 - EFS, S3, 볼륨 스냅샷 생성 하기

Hanee_ 2023. 4. 12. 17:49

0412

✅ 보안그룹 편집

 

clb에서 들어오는 트래픽들만 허용가능하도록 보안그룹을 수정하였다.

이 작업을 통해 clb에 포함된 리소스들만 접근할 수 있도록 허용된다.

 

 

ipv4로 접근했을 때, 이젠 접속이 되지 않는다.

하지만 elb로 접속했을 땐 잘 되는 모습을 보인다.

 

 

 

AWS 스토리지 서비스

AWS 클라우드 스토리지는 데이터 스토리지를 서비스로서 관리하고 운영하는 클라우드 컴퓨팅 공급자를 통해 데이터를 인터넷에 저장하는 클라우드 컴퓨팅 모델이다. JIT(Just-In-Time) 용량 및 비용이 온디맨드로 제공되며 자체 데이터 스토리지 인프라를 구매하거나 관리할 필요가 없다. 따라서 '언제 어디서든' 데이터에 액세스할 수 있는 민첩성, 세계적 규모 및 안정성을 제공한다.

 

AWS 클라우드 데이터 스토리지엔 객체 스토리지, 파일 스토리지, 블록 스토리지 3가지 유형이 있다.

 

블록 스토리지 데이터를 일정한 크기의 덩어리로 나누어 저장하는 방식
객체 스토리지 오브젝트라는 개별 데이터 단위로 데이터를 저장하는 방식
파일 스토리지 파일과 폴더의 계층구조로 이루어진 방식

 

 

 

실습을 진행해보자. aws.tar 파일을 업로드한다.

aws.tar
1.52MB

 

html 폴더에 tar 파일을 압축 해제한 뒤, html 파일을 수정해준다. 

[ec2-user@ip-172-31-0-249 ~]$ sudo tar xvf aws.tar -C /var/www/html
[ec2-user@ip-172-31-0-249 ~]$ sudo vi /var/www/html/index.html

 

 

 

 

기존에 두개의 볼륨이 생성되어있음을 볼 수 있다. 연결된 인스턴스 상태를 확인해보면 앞서 만들었던 ec2 인스턴스 web01, web02에 연결된 볼륨들이다. 끄트머리에 a가 붙어있으면 root volume 이다. 두개 다 끝에 a가 있으므로 root volume들이다.

 

 

구분하기 쉽도록 식별자를 추가해준다.

 

 

✅ 볼륨 생성

볼륨을 하나 생성해보자

 

 

✅ 볼륨 연결

동일한 가용영역의 인스턴스만 연결할 수 있다. 따라서 2a에 있는 web01만 보인다.

 

 

 

디스크를 포멧한뒤 마운트한다.

운영체제가 물리적인 장치를 이용할 수 있도록 연결하는 것이 Mount이다.

Linux OS는 모든 장치를 파일 단위로 관리하기 때문에 새로 추가된 장치는 임의의 디렉토리인 /mnt에 연결시켜서 사용해야 한다.

 

[ec2-user@ip-172-31-0-249 ~]$ sudo mkfs -t ext4 /dev/xvdf
[ec2-user@ip-172-31-0-249 ~]$ sudo mount /dev/xvdf /mnt
[ec2-user@ip-172-31-0-249 ~]$ df -h

 

tar 파일을 마운트한 볼륨으로 옮겨 a 드라이브를 확보하였다

 

[ec2-user@ip-172-31-0-249 ~]$ sudo mv aws.tar /mnt
[ec2-user@ip-172-31-0-249 ~]$ ls /mnt

 

 

 볼륨 스냅샷 생성

EBS 볼륨의 특정 시점 스냅샷을 생성하여 새 볼륨이나 데이터 백업의 기준으로 사용할 수 있다. 볼륨의 스냅샷이 주기적으로 생성되는 경우 스냅샷은 증분식이어서 새 스냅샷은 마지막 스냅샷 이후 변경된 블록만 저장한다.

 

web01-add 볼륨을 선택한 뒤 태그를 설정해준다.

 

 

그리고 스냅샷 찍은 볼륨을 web02에 붙이고자 한다. 

스냅샷을 볼륨으로 만드는 과정에서 가용영역을 수정해야한다. 

가용영역을 2c로 수정함을 통해 web02에 붙을 수 있다. 그러면 aws tar파일이 있는 볼륨이 생성되고, web02에 붙일 수 있는 상태가 된다. 

 

 

잘 생성되었음을 확인하고 web02에 연결해준다.

 

 

 

movaxterm에서 확인해보면 디스크가 추가되었음을 확인할 수 있다.

 

 

ubuntu@i-012d11f951346315c:~$ sudo mount /dev/xvdf /mnt
ubuntu@i-012d11f951346315c:~$ df -h

xvdf가 마운트 되었음을 확인할 수 있고, /mnt 폴더에 web01 서버에서 추가했던 aws.tar도 확인할 수 있다. 

 

 

 

ubuntu@i-012d11f951346315c:~$ sudo tar xvf /mnt/aws.tar -C /var/www/html
ubuntu@i-012d11f951346315c:~$ sudo vi /var/www/html/index.html

 

clb dns 주소로 접근해보면 순차적으로 web01, web02 페이지가 나오는 모습을 확인할 수 있다. 

 

 볼륨 이미지 생성

 

스냅샷을 다른 지역으로 서울-> 도쿄로 복사해보았다. 도쿄 리전을 선택해 준다.

(이때, 다른 리전간 전송은 아웃바운드 비용이 발생한다)

 

 

도쿄에 복사된 스냅샷을 볼 수 있다.

 

 


EFS Elastic File System

- 탄력적인 서버리스 파일 스토리지

- 스토리지 용량 및 성능을 프로비저닝하거나 관리하지 않고도 파일 데이터를 공유할 수 있다.

- 애플리케이션에서 파일을 추가하고 제거할 수 있다.

 

 

4곳의 가용영역에 efs가 만들어지고 있음을 확인할 수 있다.

vpc에 해당하는 가용영역이다.

 

 

 

 

 EFS 연결하기

EFS 연결을 위해 먼저 NFS가 사용하는 포트번호를 열어줘야한다.

따라서 보안그룹을 생성하여 인바운드 규칙으로 NFS 포트를 열어준다.

 

 

 

보안 그룹 생성 후 EFS를 선택해 연결해준다.

 

 

다음과 같은 화면이 뜨며, DNS를 통해 접속해보았다.

 

[ec2-user@ip-172-31-0-249 ~]$ mkdir efs
[ec2-user@ip-172-31-0-249 ~]$ //"NFS 클라이언트 사용 부분"붙여넣기

 

df 통해 확인해보면 잘 저장되어있음을 확인할 수 있다.

 

 

efs에 업로드한다.

 

[ec2-user@ip-172-31-0-249 ~]$ sudo mv two-rabbit.jpg efs/

 

이후, ubuntu인스턴스(web02)에 ip를 통해 탑재해보았다.

 

 

 

우분투는 사전에 모듈 설치가 필요하다

 

ubuntu@i-012d11f951346315c:~$ mkdir efs
ubuntu@i-012d11f951346315c:~$ sudo apt update
ubuntu@i-012d11f951346315c:~$ sudo apt install -y nfs-common
ubuntu@i-012d11f951346315c:~$ sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 172.31.7.160:/ efs
ubuntu@i-012d11f951346315c:~$ df -h

 

마운트 되었음을 볼 수 있고 같은 파일시스템을 공유하고 있음을 확인할 수 있다.

마찬가지로 web02서버에서 파일을 올려도, web01 서버에서 확인할 수 있다.

 

 

 

 

S3

- 어디서나 원하는 양의 데이터를 검색할 수 있도록 구축된 객체 스토리지

- 최고 수준의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스

- 비용 효율적인 스토리지 클래스와 사용이 쉬운 관리 기능을 통해 비용을 최적화하고, 데이터를 정리하고, 세분화된 액세스 제어를 구성하여 특정 비즈니스, 조직 및 규정 준수 요구 사항을 충족할 수 있다.

 

 

✅ S3 버킷 생성

 

웹사이트를 외부에서 접근하기 위해서 퍼블릭 엑세스 권한을 주어야 한다.

 

 

버킷 클릭 후 속성으로 이동한 뒤 정적 웹사이트 호스팅 편집을 누른다.

 

 

url을 접속하면 성공적으로 접속하는 모습을 보인다.