AWS Datasync

신동수·2024년 8월 27일
0

AWS

목록 보기
21/26

개요

  • 기존 IDC 에서 NAS 서버를 운용하고 있었는데, 클라우드환경으로 전환을 하면서 기존 데이터를 S3 로 복사하기 위한 내용을 포스팅 하였다.

Architecture


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 서버에 액세스할 권한이 있는 사용자도 확인이 필요하다.

계정 정보

  • login: admin
  • password: password


또한, 내부적으로 통신할 것이므로 VPC Endpoint 를 사용하여 진행한다.
VPC Endpoint 는 이전에 생성한 datasync Endpoint 를 기입하면 활성키를 부여 받을 수 있다.
Agent 의 활성키를 발급 받은 후 설정을 진행하지 않고 30분이 지나면 다시 할당 받아야 한다.

확인을 하였다면 정품 인증 키를 등록하여 에이전트를 생성한다.


위와 같이 에이전트가 활성화 된 것을 확인할 수 있다.

위치


구성에서는 Source 위치와 Destination 위치를 지정을 해야한다.
유형에는 NFS, SMB, Amazon EFS, Amazon FSx, Amazon S3 등이 있다. 각 유형에 맞게 설정을 진행하면된다.
해당 포스팅에는 SMB -> S3 로 데이터를 복사하는 예시이다.
또한, 에이전트는 위에서 생성한 VM 을 지정을 하며, SMB 서버와 경로를 작성한다.


사용자 설정에는 NAS 서버에 접근하기 위한 사용자를 입력하며, 해당 사용자는 NAS 데이터에 접근할 권한과 방화벽 등이 충족되어야 한다.

IAM Role & Policy


만약, 위치 설정 시 유형이 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내 파일 전송 커맨드보다 좀 더 안정성 및 신빙성이 있고 모니터링이 가능한 조건을 원하는 경우 솔루션의 구매보다 비용적으로도 아주 훌륭한 대안이 될 수 있을 것이다.

profile
조금씩 성장하는 DevOps 엔지니어가 되겠습니다. 😄

0개의 댓글