AWS Storage gateway를 이용한 EFS와 S3 간 데이터 전송

2020. 4. 23. 10:33IT/AWS

728x90

1. 설명

1.1 Storage gateway 기능 및 종류

AWS Storage Gateway는 온프레미스 환경과 AWS 스토리지 인프라 사이의 연결을 서비스한다.

 

Storage Gateway는 3가지 종류로 선택할 수 있다.

  • 파일 게이트웨이 : NFS 또는 SMB에서 S3에 대한 파일 인터페이스를 지원한다. 

  • 볼륨 게이트웨이 : 온프레미스 볼륨 데이터 전체를 저장하고, AWS에 특정 시점의 스냅샷을 주기적으로 저장한다.

  • 테이프 게이트웨이 : 가상 테이프 라이브러리(VTL) 인터페이스를 통하여 테이프 기반 백업을 지원한다. 

1.2 Storage gateway 작동 방식

아래는 파일 게이트웨이의 배포를 나타낸 것이다. 

  • 게이트웨이용 VM 이미지를 다운로드하여 게이트웨이의 사용을 준비한다. (EC2에 구성 가능하다.)

  • AWS에서 파일 게이트웨이를 활성화한다. 활성화된 후, 파일 공유를 생성하고 S3 버킷에 연결한다.

  • 클라이언트에서 NFS 또는 SMB 프로토콜을 사용해 파일 공유에 액세스한다. 파일 공유에 기록된 파일은 S3의 객체로 저장된다.

 

파일 게이트웨이는 파일과 객체 간에 일대일 매핑이 되어 있다. 파일을 변경할 때마다 게이트웨이는 S3에 비동기식으로 업데이트된다.

 

2. 구현

2.1 Storage gateway 구성

Console에서 storage gateway를 생성한다. 본문에서는 파일 게이트웨이를 선택한다.

최근 데이터를 빠르게 S3에 객체로 저장하려고 한다.

 

온프레미스 게이트웨이를 생성한다. 온프레미스의 경우, 게이트웨이 VM을 다운로드하여 배포한 후 게이트웨이를 활성화한다.

본문에서는 EC2 인스턴스에 게이트웨이를 생성하였고, AMI로 인스턴스를 시작하였다. 사용 인스턴스는 권장사항이 존재하고, 스토리지를 추가하여 캐시로 사용할 로컬 디스크를 준비한다. 

 

서비스 엔드포인트를 선택한다. 본문에서는 퍼블릭을 선택한다.

퍼블릭 유형은 게이트웨이가 퍼블릭 인터넷을 통해 AWS 스토리지에 연결되고, VPC 유형은 VPC 엔드포인트를 사용하여 AWS 스토리지로 연결된다. 

 

게이트웨이 연결은 게이트웨이 VM의 IP 주소를 기반으로 한다. 본문의 경우, 위에서 생성한 EC2의 공인 IP를 입력한다.

 

위에서 선택한 게이트웨이 유형, 엔드포인트 유형 및 AWS 리전이 적용된다.

게이트웨이의 시간대와 이름을 입력한다.

게이트웨이 표준 시간대는 게이트웨이에 사용할 표준 시간이다. 게이트웨이 이름에서는 해당 게이트웨이를 식별하기 위한 이름이다.

 

캐시 스토리지로 구성하려는 로컬 디스크를 선택한다. 캐시를 활성화하는 것이 목적이다.

본문에서는 EC2 구성 시, 추가한 스토리지를 선택한다. 권장사항은 150GB 이상이다.

 

파일 게이트웨이 또는 리소스의 상태에 대해 알림을 받으려면, CloudWatch 로그 그룹을 생성하여 활성화한다. 

 

Gateway가 생성되고, 실행중임을 확인한다.

 

admin으로 Storage gateway에 접속할 수 있다.

 

2.2 파일 공유 구성

Storage gateway에서 파일 공유를 생성한다. 본문에서는 EFS와 S3 간의 공유할 수 있도록 구성한다.

공유할 S3 버킷 이름을 선택하고, 위에서 생성한 gateway를 선택한다. 객체 액세스 방법은 Network File System(NFS)로 선택한다.

 

EFS에 액세스할 수 있는 EC2 인스턴스가 위치할 VPC, 서브넷을 선택한다.

 

S3 버킷에 생성한 새 객체에 적용할 스토리지 클래스를 선택한다. (S3 스탠다드, S3 스탠다드_IA 등)

객체 메타데이터에서 사용하려는 메타데이터를 선택한다. 

  • MIME 유형 추측 : 파일 확장자를 기반으로 하여 업로드되는 객체의 MIME 유형 추측이다.

  • 버킷 소유자에게 전체 제어 권한 부여 : S3 버킷 소유자에게 완전한 제어 권한을 제공한다.

  • 요청자 지불 사용 : 버킷 소유자가 아닌 요청자가 액세스 요금을 지불하는 경우 선택한다.

 

다음과 같이 파일 공유가 생성된다.

 

2.3 EFS 구성

EFS를 생성한다. 본문에서 생성한 EFS는 파일 게이트웨이를 통해 S3에 연결된다.

 

사용할 EFS를 마운트한다. 

mkdir /root/efs
sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvpor EFS-IP:/ /root/efs

 

2.4 파일 공유 연결 (마운트)

파일 공유에 연결한다. 다음 명령어로, 클라이언트 서버에서 마운트를 수행한다. 

mount -t nfs -o nolock,hard :/soul0-nfs [MOUNT 경로]

 

2.5 구현 결과

EFS에 저장된 파일이 S3에 업로드 됨을 확인한다. EFS에 저장된 파일 삭제시, S3에 저장된 객체도 삭제된다.

300x250