DataSync는 온프레미스 스토리지 시스템과 AWS 스토리지 서비스 간 , 그리고 AWS 스토리지 서비스 간 데이터 이동을 간소화, 자동화, 가속화하는 온라인 데이터 전송 서비스이다.
DataSync를 사용하면 활성 데이터 세트를 AWS로 마이그레이션하고, 온프레미스 스토리지 용량을 확보하기 위해 데이터를 보관하고, 비즈니스 연속성을 위해 AWS로 데이터를 복제하거나, 분석 및 처리를 위해 클라우드로 데이터를 전송할 수 있다.
IDC 와 AWS 간의 내부 통신으로 위해 com.amazonaws.ap-northeast-2.datasync
이름의 엔드포인트를 생성해야 한다.
퍼블릭으로 진행할 수도 있지만, 데이터가 퍼블릭 인터넷 대신 VPC 통해 전송되므로 전송된 데이터의 보안이 강화를 위해 진행하였다.
Datasync 좌측 메뉴에서 Agent를 선택한다.
지원하는 Hypervisor 는 VMWare ESXi , KVM , Microsoft Hyper-V, EC2 이다.
IDC 와 AWS 간 네트워크 연결이 되어 있다면, Endpoint type은 VPC endpoints using AWS Private Link를 선택하는 것이 좋다.
정품 인증 키의 경우 VMware 쪽에 ova 파일로 생성을 하였다면, 위와 같이 확인이 될 것이다.
0 을 클릭하여 인증키를 확인하자.
여기서 VM 으로 Agent 서버를 기동하였다면 통신을 위한 네트워크 설정과 네트워크 인터페이스 설정을 해야한다. (VM 에 IP가 없다면 연결이 불가능하다.)
On-prem에 설치된 Agent 서버와 NAS 서버의 IP 와 상호 통신이 가능해야 하는 상태여야 하며, NAS 서버에 액세스할 권한이 있는 사용자도 확인이 필요하다.
계정 정보
또한, 내부적으로 통신할 것이므로 VPC Endpoint 를 사용하여 진행한다.
VPC Endpoint 는 이전에 생성한 datasync Endpoint 를 기입하면 활성키를 부여 받을 수 있다.
Agent 의 활성키를 발급 받은 후 설정을 진행하지 않고 30분이 지나면 다시 할당 받아야 한다.
확인을 하였다면 정품 인증 키를 등록하여 에이전트를 생성한다.
위와 같이 에이전트가 활성화 된 것을 확인할 수 있다.
구성에서는 Source 위치와 Destination 위치를 지정을 해야한다.
유형에는 NFS, SMB, Amazon EFS, Amazon FSx, Amazon S3 등이 있다. 각 유형에 맞게 설정을 진행하면된다.
해당 포스팅에는 SMB -> S3 로 데이터를 복사하는 예시이다.
또한, 에이전트는 위에서 생성한 VM 을 지정을 하며, SMB 서버와 경로를 작성한다.
사용자 설정에는 NAS 서버에 접근하기 위한 사용자를 입력하며, 해당 사용자는 NAS 데이터에 접근할 권한과 방화벽 등이 충족되어야 한다.
만약, 위치 설정 시 유형이 S3 라면 아래와 같은 신뢰관계와 정책을 가진 IAM 을 생성해야 한다.
# IAM Role 신뢰관계
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAWSDataSync",
"Effect": "Allow",
"Principal": {
"Service": "datasync.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "<Account>"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:datasync:ap-northeast-2:<Account>:*"
}
}
}
]
}
# IAM policy 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSDataSyncS3BucketPermissions",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Resource": "arn:aws:s3:::<Bucket_Name>",
"Condition": {
"StringEquals": {
"aws:ResourceAccount": "<Account>"
}
}
},
{
"Sid": "AWSDataSyncS3ObjectPermissions",
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:GetObjectVersion",
"s3:GetObjectVersionTagging",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:PutObjectTagging"
],
"Resource": "arn:aws:s3:::<Bucket_Name>/*",
"Condition": {
"StringEquals": {
"aws:ResourceAccount": "<Account>"
}
}
}
]
}
소스 위치 설정
대상 위치 설정
태스크의 이름
을 기입하고, Contents to scan
에서는 모든 데이터를 복사할지 or 특정 경로의 데이터만 복사할지 선택한다.
Transfer mode
에서는 모든 데이터를 전송 or 변경된 데이터만 전송 두 가지의 선택이 있으며, 처음 복사 시 모든 데이터를 복사 후 이후 변경, 추가 되는 데이터가 있을 경우 변경된 데이터만 전송하도록 수정하면 된다.
Verification
에서는 데이터 확인을 위한 설정이며, 소스와 대상의 데이터 일관성을 위한 데이터 확인이며, 각 항목은 사용자의 용도에 맞게 진행하면 될 것이다.
또한, 추가적인 옵션이 있으며, 복사 시 대역폭 설정, 삭제된 파일 보관, 파일 덮어쓰기 등 추가적인 옵션을 제공한다.
마지막으로 Task report 와 Logging 은 선택사항이며, 전송 작업에 대한 보고서를 json 형식으로 확인할 수 있다.
설정이 완료 되었다면 기록에서 각 태스크의 개요, 성능, 옵션, 로그 등의 실행 내역을 확인할 수 있다.
참고 사항
Datasync 의 경우 하나의 태스크 당 4개의 ENI 를 사용하며, Data 복사가 끝나기 전까지는 해당 태스크의 ENI 는 삭제하게 된다면 수동으로 태스크를 시작하여 다시 ENI 를 할당 받아야 한다.
데이터 마이그레이션이 필요하고, OS내 파일 전송 커맨드보다 좀 더 안정성 및 신빙성이 있고 모니터링이 가능한 조건을 원하는 경우 솔루션의 구매보다 비용적으로도 아주 훌륭한 대안이 될 수 있을 것이다.