Elastic File System (EFS) - aws_introduction[13]

Elastic File System (EFS) - aws_introduction[13]

생성일
May 22, 2024 07:05 AM
Description
EFS에 대해 알아봅니다.
Tag
AWS

Amazon Elastic File System(EFS)

notion image
Amazon EFS는 AWS 클라우드 서비스와 온프레미스 리소스에서 사용할 수 있는, 간단하고 확장 가능하며 탄력적인 완전관리형 NFS 파일 시스템을 제공합니다. 이 제품은 애플리케이션을 중단하지 않고 온디맨드 방식으로 페타바이트 규모까지 확장하도록 구축되어, 파일을 추가하고 제거할 때 자동으로 확장하고 축소하며 확장 규모에 맞게 용량을 프로비저닝 및 관리할 필요가 없습니다.
 
보통 EBS와 EC2가 1:1 매칭되는 것과 달리, 여러 EC2가 공용으로 사용하는 스토리지로서, 세션 / 소스코드 등을 공유해야 할 때 사용한다.
 

Amazon EFS

  • NFS 기반 공유 스토리지 서비스 (NFSv4)
    • 따로 용량을 지정할 필요 없이 사용한 만큼 용량이 증가 ↔ EBS는 미리 크기를 지정해야 함
  • 페타바이트 단위까지 확장 가능
  • 몇 천개의 동시 접속 유지 가능
  • 데이터는 여러 AZ에 나누어 분산 저장
  • 쓰기 후 읽기(Read After Write) 일관성
  • Private Service: AWS 외부에서 접속 불가능
  • AWS외부에서 접속하기 위해서는 VPN 혹은 Direct Connect 등으로 별도로 VPC와 연결 필요
  • 각 가용영역에 Mount Target을 두고 각각의 가용영역에서 해당 Mount Target으로 접근
  • Linux Only
 
notion image
 

Amazon EFS 퍼포먼스 모드

  • General Purpose: 가장 보편적인 모드. 거의 대부분의 경우 사용 권장
  • Max IO: 매우 높은 IOPS가 필요한 경우
    • 빅데이터, 미디어 처리 등
    •  

Amazon EFS Throughtput 모드

  • Bursting Throughput: 낮은 Throughput일 때 크레딧을 모아서 높은 Throughput일 때 사용
    • EC2 T타입과 비슷한 개념
  • Provisioned Throughput: 미리 저장한 만큼의 Throughput을 미리 확보해두고 사용
 

Amazon EFS 스토리지 클래스

  • EFS Standard: 3개 이상의 가용영역에 보관
  • EFS Standard-IA: 3개 이상의 가용영역에 보관, 조금 저렴한 비용 대신 데이터를 가져올 때 비용 발생
  • EFS One Zone: 하나의 가용영역에 보관 → 저장된 가용영역의 상황에 영향을 받을 수 있음
  • EFS One Zone-IA: 저장된 가용영역의 상황에 영향을 받을 수 있음. 데이터를 가져올 때 비용 발생(가장 저렴)
 

Amazon FSx

  • FSx for Windows File Server
    • EFS의 윈도우즈 버전
    • SMB 프로토콜 활용
    • Microsoft Active Directory와 통합 등의 관리 기능 사용 가능
    • Linux, MacOS등의 다른 OS에서도 활용 가능
  • FSx for Lustre
    • 리눅스를 위한 고성능 병렬 스토리지 시스템
    • 주로 머신러닝, 빅데이터등의 고성능 컴퓨팅(High Performance Computing)에 사용
    • AWS 밖의 온프레미스에서 액세스 가능
 

실습

notion image
  • EFS를 활용한 스토리지 공유 웹서버 만들기
    • Amazon EFS를 위한 보안 그룹 생성
    • Amazon EFS 생성
    • EC2 인스턴스 3개 프로비전
      • 유저 데이터
        • 생성한 EFS를 마운트
        • 웹 서버 생성/실행
    • 각 웹서버에서 스토리지를 공유하는 것을 확인
    • 리소스 정리
 
notion image
  • EC2 > 보안 그룹 > 보안 그룹 생성 클릭
 
notion image
  • 위와 같이 설정 후 생성하기
 
notion image
  • EFS > 파일 시스템 생성 > 위와 같이 설정
 
notion image
  • 생성한 EFS > 네트워크 탭에서 보이는 것들이 바로 Mount Target들.
  • 보안 그룹은 default로 설정되어있는 것을 볼 수 있음
 
notion image
  • 관리를 누른 후 default 보안 그룹을 방금 생성한 SG로 변경해준다.
 
  • EC2 생성
    • 이름: Demo-EC2-EFS
    • 인스턴스 개수: 3개
    • 키페어: 키 페어 없이 계속 진행
      • 네트워크 설정: 기존 보안 그룹 선택, Demo-EFS-SG로 선택
      • 고급 세부 정보 > 사용자 데이터에 아래 붙여넣기
 
#cloud-config package_upgrade: true packages: - nfs-utils - httpd runcmd: - | TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") echo "${TOKEN}" - | AZ=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" "http://169.254.169.254/latest/meta-data/placement/availability-zone") echo "$AZ.[자신의 EFS_ID].efs.ap-northeast-2.amazonaws.com:/ /var/www/html/efs-mount-point nfs4 defaults" >> /etc/fstab - mkdir /var/www/html/efs-mount-point - mount -a - touch /var/www/html/efs-mount-point/test.html - service httpd start - chkconfig httpd on - mkdir /var/www/html/efs-mount-point/sampledir - chown ec2-user /var/www/html/efs-mount-point/sampledir - chmod -R o+r /var/www/html/efs-mount-point/sampledir
 
  • 아무 EC2 인스턴스 하나를 연결하고, 아래와 같은 프롬프트를 작성하자.
  • /var/www/html/efs-mount-point/sampledir 위치에서 index.html을 하나 만들자
sudo -s cd /var/www/html/efs-mount-point/sampledir # 우리가 바라보고 있는 EFS 폴더
  • publicIP/efs-mount-point/sampledir/index.html 로 접근하게 되면, 만든 html 파일을 볼 수 있다.
  • 모든 EC2가 동일한 html 파일을 보여주고 있다.
 

References