본문 바로가기
AWS/AWS Cloud School

[AWS] AWS DataSync 및 Storage Gateway를 사용하여 온프레미스 NFS 공유 마이그레이션

by parkkingcar 2023. 12. 3.

 

AnyCompany는 일상적 업무 수행에 NFS(네트워크 파일 시스템) 파일 공유를 많이 사용합니다. CIO(Chief Information Officer)는 온프레미스 NFS 파일 서버의 데이터가 적절히 백업되지 않거나 기본 데이터 센터의 재해로부터 보호되지 않을까 봐 걱정입니다. 예산이 빠듯하기 때문에 배포와 유지 관리에 직원들의 시간이 많이 필요한 고가의 백업 또는 복제 솔루션 대신 비즈니스를 개선하는 데 비용을 지출하고자 하며, 이 경우 배포와 유지 관리에 많은 인력의 노동 시간도 필요합니다. CIO는 다음 기준을 충족하는 솔루션을 찾기 위해 여러분에게 요청합니다.

 

1. 회사 데이터 센터에서 온프레미스 NFS 파일 공유의 데이터를 재해로부터 보호 

2. 비용 효율적 

3. 배포 및 유지 관리 용이 

4. 기존 데이터를 신속하게 마이그레이션할 수 있음 

5. 지원 팀과의 상호 작용을 최소화하면서 향후 데이터를 오프사이트에 복제할 수 있음

 

AWS DataSync 및 AWS Storage Gateway File Gateway를 사용하여 PoC(개념 증명)를 수행하기로 결정했습니다.

 

 

AWS DataSync는 안전한 중복 스토리지를 위해 온프레미스 NFS 파일 서버에서 Amazon Simple Storage Service(Amazon S3)로 기존 데이터를 복사합니다. 예약 메커니즘을 기본적으로 제공하므로 데이터 전송 태스크를 주기적으로 실행하여 원본 스토리지 시스템의 변경 사항을 감지하고 이를 대상으로 복사할 수 있습니다. 데이터가 무결성을 유지하며 전송 되도록 보장합니다. 전송이 이루어질 때마다 전송 데이터와 저장 중 데이터의 무결성 검사를 수행합니다. 이러한 검사는 대상에 기록되는 데이터가 원본에서 읽은 데이터와 일치하는지 확인하여 일관성을 검증합니다. 이동되는 데이터의 기가바이트당 가격이 책정되어 비용 효율적이고 예측 가능합니다. 몇 분 안에 구축 가능합니다.

 

 

실습 목표

 

- DataSync 에이전트를 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스로 배포 및 활성화 

- Linux 기반 NFS 서버에서 S3 버킷으로 데이터를 복사하는 DataSync task 생성 

- Storage Gateway File Gateway 어플라이언스를 EC2 인스턴스로 배포 및 활성화 

- File Gateway에 NFS 파일 공유 생성 

- File Gateway의 NFS Share에 연결하도록 Linux 호스트 구성

 

 

실습은 별도의 서브넷에 있는 2개의 Linux 인스턴스로 시작합니다. 하나는 온프레미스 클라이언트 호스트 역할을 하고 또 하나는 온프레미스 Linux NFS 파일 서버 역할을 합니다. DataSync 에이전트 인스턴스를 온프레미스 NFS 파일 서버와 동일한 서브넷에 배포합니다. 그런 다음 샘플 데이터를 S3 버킷에 복사하도록 해당 인스턴스를 구성합니다. 마지막으로 온프레미스 NFS 파일 서버와 동일한 서브넷에 File Gateway 어플라이언스를 배포하고, File Gateway 어플라이언스에서 NFS 파일 공유를 생성합니다. 그리고 새 공유에 연결하도록 Linux 클라이언트 호스트를 재구성합니다.

 

 

먼저 온프레미스 NFS 서버에 연결합니다. PoC(개념 증명)를 수행할 테스트 환경을 만들기 위해 Linux NFS 파일 서버와 Linux 클라이언트 호스트를 배포했습니다.

 

 

먼저 클라이언트 인스턴스에 세션매니저를 이용하여 터미널 접속합니다.

 

 

sudo mount 10.10.2.138:/var/nfs /mnt/nfs

명령을 입력하여 온프레미스 NFS Share를 클라이언트 인스턴스에 탑재합니다. IP는 NFS서버 인스턴스의 프라이빗IP 입니다.

 

 

df -h

명령을 입력하여 NFS 파일 공유를 확인합니다.

 

 

sudo cp /data/DataSync/*.* /mnt/nfs

클라이언트 인스턴스에는 이 실습을 위한 샘플 데이터가 포함된 두 개의 디렉터리인 /data/DataSync와 /data/FileGateway가 있습니다. 각 디렉터리에는 10개의 .png 파일이 들어 있습니다. 샘플 데이터를 /data/DataSync 디렉터리에서 NFS 파일 공유로 복사하기 위해 다음 명령을 실행합니다.

 

 

PoC(개념 증명) 환경의 기초가 완성되었으므로 이제 DataSync 에이전트를 배포할 준비가 되었습니다. 아래 다이어그램과 같이 DataSync 에이전트를 EC2 인스턴스로 배포한 후 활성화합니다.

 

 

먼저 콘솔 상단 검색창에서 EC2를 검색하고 선택합니다. 

 

 

좌측 인스턴스 탭을 클릭한 후 인스턴스 시작을 클릭합니다.

 

 

이름을 입력하고 더 많은 AMI 찾아보기를 클릭합니다.

 

 

커뮤니티 AMI를 선택하고 aws-datasync를 검색하여 버전이 가능 높은 이미지를 선택합니다.

 

 

인스턴스 유형은 t2.xlarge를 선택합니다. 키 페어는 없이 진행합니다.

 

 

네트워크 설정에서 편집을 클릭하고 생성한 VPC를 선택합니다. 서브넷은 서버 인스턴스가 있는 서브넷을 선택하고 퍼블릭IP 자동 할당을 활성화합니다. 기존 보안그룹에서 아래 트래픽을 허용하는 규칙을 가진 보안그룹을 선택합니다. 이후 하단의 인스턴스 시작을 클릭합니다.

 

인바운드: 에이전트 활성화를 위한 포트 80(HTTP) 

아웃바운드: DataSync 서비스와의 통신을 위한 포트 443 

아웃바운드: 서버 서브넷과의 NFS v4.1 통신을 위한 포트 2049

 

 

먼저 콘솔 상단 검색창에서 DataSync를 검색하고 선택합니다. 

 

 

좌측 에이전트를 클릭하고 에이전트 생성을 클릭합니다.

 

 

에이전트 배포에 EC2를 선택합니다. 서비스 엔드포인트는 퍼블릭을 유지합니다. 정품 인증키 인증 부분에 DataSync 에이전트 인스턴스의 퍼블릭 IPv4 값을 입력합니다. 그리고 키 가져오기를 클릭합니다.

 

 

인증이 완료되면 이름을 입력하고 에이전트 생성을 클릭합니다.

 

 

이제 DataSync를 사용하여 현재 NFS 파일 공유에 있는 데이터를 S3 버킷으로 복사해야 합니다. DataSync 에이전트 인스턴스에서 오는 연결을 허용하도록 온프레미스 NFS 서버 구성을 수정합니다. 그런 다음 새 DataSync 태스크를 생성하고 사용하여 온프레미스 NFS 서버에서 S3 버킷으로 데이터를 복사합니다.

 

sudo sh -c 'echo "/var/nfs 10.10.2.238(rw,fsid=2,sync,no_subtree_check)" >> /etc/exports'

이제 서버 인스턴스에 세션매니저를 이용하여 터미널 접속합니다. DataSync 에이전트 인스턴스로부터의 연결을 허용하도록 /etc/exports 파일을 수정하려면 다음 명령을 실행합니다. IP는 DataSync 에이전트 인스턴스의 프라이빗IP 입니다.

 

 

sudo exportfs -a

/etc/exports 구성 변경 사항을 활성화하려면 다음 명령을 실행합니다.

 

 

다시 DataSync 콘솔로 돌아와서 좌측 테스크를 클릭하고 테스크 생성을 클릭합니다.

 

 

새 위치 생성을 선택하고 NFS를 선택합니다. 위에서 생성한 에이전트를 선택하고 NFS서버의 프라이빗 IP를 입력합니다. 탑재 경로에 마운트 경로를 입력하고 다음을 클릭합니다.

 

 

새 위치 생성을 선택하고 위치 유형에 S3를 선택합니다. 생성한 S3 버킷을 선택하고 버킷접근 권한을 가진 IAM역할을 선택한 후 다음을 클릭합니다.

 

 

테스크 로깅 부분에서 로그 전송하지 않음을 선택한 후 나머지 설정을 기본으로 유지하여 다음을 클릭합니다. 이후 화면에서 검토를 마치고 테스크 생성을 클릭합니다.

 

 

생성한 테스크를 선택하고 시작을 클릭합니다.

 

 

이제 S3버킷을 확인하여 NFS 파일 공유에 복사한 10개의 .png 파일과 aws-datasync-metadata 파일을 볼 수 있습니다.

 

 

NFS 파일 공유에서 Amazon S3로 기존 데이터를 마이그레이션했으므로 이제 새 NFS 파일 공유를 호스팅할 File Gateway를 배포할 수 있습니다. 아래 다이어그램과 같이 File Gateway 어플라이언스를 EC2 인스턴스로 배포한 후 활성화합니다.

 

 

콘솔 상단에 Storage Gateway를 입력하고 선택합니다. 게이트웨이 생성을 클릭합니다.

 

 

이름을 입력하고 게이트웨이 유형을 S3 파일 게이트웨이를 선택합니다.

 

 

플랫폼 옵션에서 EC2를 선택하고 설정 사용자 지정을 선택한 후 인스턴스 실행을 클릭합니다.

 

 

새 탭에서 인스턴스 시작 탭이 열립니다. 이름을 입력하고 인스턴스 유형을 선택합니다. 키 페어는 없이 진행합니다.

 

 

네트워크 설정에서 편집을 클릭하고 VPC를 선택합니다. NFS서버가 있는 서브넷을 선택하고 퍼블릭IP자동 할당을 활성화합니다. 생성한 보안그룹을 선택합니다. 보안그룹은 아래와 같은 규칙을 가지고 있습니다.

 

인바운드: 게이트웨이 활성화를 위한 포트 80(HTTP) 

인바운드: 클라이언트 서브넷으로부터의 NFS v4.1 통신을 위한 포트 2049 

아웃바운드: Storage Gateway와의 통신을 위한 포트 443 

아웃바운드: 클라이언트 서브넷으로의 NFS v4.1 통신을 위한 포트 2049

 

 

스토리지 구성에서 새 볼륨 추가를 클릭합니다. 150GiB를 입력하고 gp2를 선택합니다. 이후 인스턴스 생성을 클릭합니다.

 

 

다시 게이트웨이 생성 탭으로 돌아옵니다. 하단 설정 확인을 체크하고 다음을 클릭합니다.

 

 

연결 옵션을 IP주소로 선택하고 생성한 file gateway 인스턴스의 퍼블릭 IP주소를 입력한 후 다음을 클릭합니다.

 

 

게이트웨이 활성화를 클릭합니다.

 

 

캐시 스토리지 구성 정보가 로딩이 끝나면 클라우드와치 설정을 모두 비활성화 하고 구성을 클릭합니다.

 

 

File Gateway를 배포했으므로 이제 Linux 클라이언트에 연결할 NFS 파일 공유를 생성합니다. 파일 공유 생성을 클릭합니다.

 

 

생성한 게이트웨이를 선택하고 NFS를 선택합니다. S3버킷을 선택하고 구성 사용자 지정을 클릭합니다. 

 

 

나오는 페이지의 모든 설정을 기본값으로 유지하고 다음을 클릭합니다. 이후 Amazon S3 스토리지 설정에서 S3 스탠다드를 선택하고 아래 설정과 동일하게 선택합니다. 다음을 클릭합니다.

 

 

클라이언트 추가를 클릭하고 10.10.1.0/24를 입력한 후 다음을 클릭합니다. 이후 검토를 진행하고 생성을 클릭합니다.

 

 

 

생성한 파일 공유ID를 클릭하고 하단의 예제 명령에서 Linux 명령을 복사합니다. [MountPath]는 /mnt/nfs를 입력합니다.

 

 

sudo umount -f /mnt/nfs

이제 클라이언트 인스턴스에 세션매니저를 이용하여 터미널 접속합니다. 다음 명령어를 입력하여 온프레미스 NFS 파일 서버에 대한 기존 연결 탑재를 해제합니다.

 

 

sudo mount -t nfs -o nolock,hard 10.10.2.156:/labstack-f0c0a1dd-0a79-4af1-9c8e-da6c961-nfsbucket-r8d11cvwenvm /mnt/nfs

다음 명령을 입력하여 File Gateway NFS 파일 공유를 탑재합니다.

 

 

df -h

다음 명령을 입력하여 NFS 파일 공유를 확인합니다.

 

sudo cp /data/FileGateway/*.* /mnt/nfs

다음 명령을 통해 두 번째 데이터 집합을 File Gateway NFS 파일 공유에 복사합니다.

 

 

이후 S3 버킷에 접근하면 NFS 파일 공유에 복사한 10개의 파일과 방금 복사한 10개의 파일 총 20개의 .png 파일을 확인할 수 있습니다.

댓글