이번에 우연한 계기로 DataSync에 대한 내용을 접할 기회가 되어 구성을 해봤습니다.
DataSync는 AWS에서 제공해주는 서비스로 AWS 망에서 AWS 내로 또는 OnPrem에서 AWS 내 서비스로 데이터 복사 및 이관을 손쉽게 진행할 수 있게 해주는 서비스 입니다.
이러한 서비스에 대해 간단히 구성하는 방법에 대해서 이번에 적고자 합니다.
이번 글 같은 경우엔 AWS에 EFS에서 S3로의 datasync를 수행하는 방식으로 글을 적을 예정입니다.
진행을 하기 전에 실습 때 사용할 EFS 및 S3를 구성해 줍니다.
이렇게 EFS 및 S3를 구성해주신 후에 datasync를 수행할 테스트 데이터를 준비해줍니다.
테스트 데이터는 따로 EC2를 만들어 거기에 EFS를 마운트 후 1MB 짜리 100개정도를 만들어줍니다.
이렇게 테스트 데이터까지 만들어지면, 서비스를 구성할 준비가 완료된 겁니다.
이제 해당 서비스를 구성을 진행하도록 하겠습니다.
datasync 서비스를 구성할 때는
1. agent 구성 및 연동
2. Source Or Destination 역할을 할 Location 생성
3. Data Sync 업무를 수행할 Task 정의
등의 순서로 수행을 합니다.
그 순서 대로 Agent 구성 및 연동 과정을 진행하도록 하겠습니다.
Agent를 구성하는 서버는 따로 AWS에서 제공하는 AMI를 사용하도록 하겠습니다.
여기에 필요한 자세한 AMI 정보 및 Instance type 정보에 대해선 링크로 남기도록 하겠습니다.
링크를 토대로 사용할 AMI ID를 확인합니다.
여기서 확인한 AMI ID 값과 Instance에 대한 정보를 토대로 EC2 인스턴스를 생성해 줍니다.
여기서 Agent의 Service EndPoint 구성 방식에 따라서
1. Agent를 Public 망에 구성하는 방식
2. PrivateLink(VPC EndPoint)를 구성하여 Private 망에 구성하는 방식으로 나뉘게 되는데요
먼저, 1번 방식으로 진행을 하자면
Public IP(Or Elastic IP를 가져도 상관 없음)를 가지게 EC2를 배포해줍니다.
여기서 생성한 datasync agent 서버의 Public IP를 기억해 줍니다.
그리고 순서대로 DataSync Home으로 이동하여 Create Agents 과정을 진행해줍니다.
EC2 생성 시 Public IP를 가지게 하였으니 Service Endpoint 부분엔 Public Service EndPoints로 선택을 해주고, 키값은 자동 생성, Agent Address 부분엔 방금 기억해 뒀던 Public IP를 기입해주고 Get Key를 눌러주시면 키값을 할당 받게 됩니다.
이러한 과정을 한번 더 반복해 주셔서 Agent를 두개 만들어 주시면 아래와 같이 확인하실 수 있습니다.
그와 다르게 PrivateLink를 통한 구성은 여기에서 추가적인 과정이 들어갑니다.
순서대로
1. VPC Home에서 EndPoint 구성
2. Agent EC2 Private 망에 구성
3. Activation Key 값 추출
4. Agent 구성
순으로 진행이 되는데요
먼저, VPC Home에서 EndPoint 서비스 화면으로 접근해주시고
Create EndPoint를 누르신 후 "com.amazonaws.ap-northeast-2.datasync"에 대한 EndPoint를 구성해줍니다.
VPC엔 해당 endpoint를 구성할 VPC를 넣어주시고, Subnet에는 Private Subnet 선택, SG를 고르신 후에 생성을 해주시면 됩니다.
이렇게 privatelink를 만드신 후엔 private subnet 망에 ec2를 배포해줍니다.
그 후 차후 agent 구성 시 진행할 activation key를 추출해줍니다.
미리 따로 준비해놓은 EC2 콘솔로 접근 후,
$ curl "http://agent-ip-address/?gatewayType=SYNC&activationRegion=aws-region&privateLinkEndpoint=Elastic IP address of VPC endpoint&endpointType=PRIVATE_LINK&no_redirect"
## agent-ip-address: datasync agent EC2의 IP 정보
## activationRegion: 서비스할 region 정보
## Elastic IP address of VPC endpoint: endpoint가 가지는 IP 정보
위의 URL에 빨간 색 부분을 변경해줍니다.
그러면 해당 agent에 대한 key값을 획득하실 수 있습니다.
이것을 따로 기록해 주시고 난 후 agent를 생성하러 가주시면 됩니다.
방금 전과 마찬가지로 Create Agent를 누르시고 Service Endpoint엔 privatelink로 지정을 해주고, 그에 대한 endpoint 값을 방금 만들어놓은 endpoint로 선택해줍니다.
그 후 Subnet 및 SG를 선택해주시고, Activation Key 부분엔 manually로 선택 후 방금 추출한 키 값을 Activation Key 값 부분에 기입해주시고 생성해주시면 Agent가 생성된 것을 확인하실 수 있습니다.
생성한 Agent가 Active가 되시면 이제 Agent 구성이 완료가 되게 됩니다.
이를 가지고 이제 location 생성을 진행하겠습니다.
location 생성에는 Source 용 하나와 Destination용 하나를 생성해줍니다.
Location Type에 따라 기입하는 내용이 달라지게 되는데요 EFS는 NFS를 선택해주시고, S3는 S3로 기입하시고 그에 대한 정보를 기입해줍니다.
Source 용 Location 생성
여기서 NFS Server에 대한 정보는 EFS의 IP 정보를 기입해주시면 됩니다.
Destination 용 Location 생성
위의 사진과 같이 Location 구성이 완료되면 이제 Task를 구성해 줍니다.
위에 구성한 Location은 Source 및 Destination에 대한 구분 없이 단순히 구성만 해주신거고, 그에 대한 정의는 Task 부분에서 진행을 해줍니다.
Source Location 및 Destination Location을 지정해주시고 Next를 누릅니다.
그 후 설정 부분에서 task의 명칭 및 세부 설정을 지정해줍니다.
sync시 file의 퍼미션 및 소유권 등을 지정하실 수 있고요,
그에 따라 sync 시 예외로 둘 항목 또한 지정할 수 있습니다.
이에 대해 cloudwatch logs에 log group을 지정하여 task가 진행되는 로그를 적재시켜서 유사시 진행 안된 사유를 확인하실 수 있습니다.
세부 설정이 끝나시면 생성을 해주시면 아래와 같이 생성된 task를 확인하실 수 있습니다.
이제 그에 대한 작업은 따로 스케쥴을 걸 수도 있지만, 이번엔 그냥 실행시켜 주겠습니다. 우측 상단에 start를 누르시면 쉽게 sync job을 동작시킬 수 있습니다.
해당 job이 성공적으로 완료되면 아래와 같이 Status 부분에서 Success를 확인하실 수 있습니다.
실제로도 정상 동작 했는지 S3를 가보니 테스트 데이터로 넣어놓은 데이터가 정상적으로 복사가 된 것을 확인할 수 있네요.
이처럼 간단한 방법으로 구현하여 대용량의 데이터를 손쉽게 옮길 수 있는 것을 확인 할 수 있었습니다.
긴 글 읽어주셔서 감사합니다.
참고 사이트
https://docs.aws.amazon.com/ko_kr/datasync/latest/userguide/
https://www.wisen.co.kr/pages/blog/blog-detail.html?idx=11936
(AWS)CloudWatch Logs Insight(vpc-flowlog) (0) | 2021.01.03 |
---|---|
(AWS)VM Import (0) | 2021.01.02 |
(AWS)EKS 구성하기-3 (0) | 2021.01.02 |
(AWS)EKS 구성하기-2 (0) | 2021.01.02 |
(AWS)EKS 구성하기-1 (0) | 2021.01.02 |