안녕하세요 서후아빠입니다. ^_^
이번 세션은 On-premise에서 AWS로 대규모 데이터를 이관할 때 사용되는 Snowball에 대해서 알아보도록 하겠습니다.
우리가 대규모 데이터를 전용선이나 VPN으로 옯길 경우, 비용과 시간이 어마 무시하게 발생하게 됩니다.
때문에 Snowball이라는 이동 장비를 통해서 데이터를 이관하게 됩니다.
개념도
Snowball device
구분 | Snowone | Snowball edge storage optimized | Snowmobile |
외관 | |||
마이그레이션 규모 | Up to 24 TB, online and offline | Up to petabytes, offline | Up to exabytes, offline |
배송 | 일반 배송 | 일반 배송 | 컨테이너 사이즈로 예약배송 |
보안 | 256비트 암호화, 변조 감지 | 256비트 암호화, 변조 감지 | 암호화, 보안 직원, GPS 추적, 비디오 감시, 경보 |
스토리지 용량 | 8 TB usable | 80 TB usable | <100 PB |
무선 | Wi-Fi | N/A | N/A |
이동성 | 배터리 구동식 | N/A | N/A |
네트워크 인터페이스 | 1/10Gbit RJ45 | 10Gbit RJ45, 25Gbit SFP+, 100Gbit QSFP28 | 40Gbit |
단순하게 데이터 전송용으로만 선택할 경우는 Snowball Edge Storage Optimized(데이터 전송용)을 선택합니다. 아래 예시는 Snowball Edge Storage Optimized(데이터 전송용)를 수령하여 진행한 것입니다. |
1단계 : Snowball Device 주문
AWS 관리 콘솔 > AWS Snow Family > Order an AWS Snow family device
Plan your job | Snow job assistance | Shipping address | Choose your job details | Choose your security preferences |
Choose a Snow job type : Import into Amazon S3 | I acknowledge I have read the information above : check | Shipping address : Add a new address 선택, 이름, 회사, 주소 입력 Shipping speed : Standard Shipping (or Express Shipping) |
Job name : DataTrasferJob Choose your Snow device : Snowball Edge Compute Optimized Choose your pricing option : On-demand, per day pricing Choose your S3 storage : 업로드할 버킷 선택 |
암호화 기본값 유지 |
Province에 서울이 없기 때문에 Gyeonggi-do로 선택합니다. 배송에서 Express Shipping과 Standard Shipping에 대한 비용 비교는 없습니다. Standard Shipping로 진행할 경우 대략 2~3일만에 물건을 받았습니다. S3 bucket 선택하는 부분 - Snowball로 데이터를 모두 옮긴 후, AWS로 Appliance device가 반송되면 지정한 S3 bucket에 데이터를 모두 업로드됩니다. - 동일한 bucket 내 세부 경로는 추후에 prefix를 추가하여 업로드 가능합니다. Job Status가 “Job Created” 상태에서만 취소 가능합니다. (Job 신청후 1시간 이내) 10일 무료 기간은 AWS Snowball Edge 디바이스가 고객센터에 머무는 날로 수령일과 발송일은 제외합니다. |
2단계 : Snowball Device 수령, IP 설정
Device 뒷면 RJ-45에 라인 연결 > 전면 LCD 패널에서 IP(1개만 설정 가능) 설정
RJ-45 포트 : 1개는 1G 지원, 다른 1개는 10G 지원 DHCP 지원한다고 합니다. 구성 : SnowBall device <-> 중계서버 <-> 데이터파일 있는 Target |
3단계 : Snowball Device Unlocking
Unlocking : 소유한 AWS 계정이 장비에 접근하여 데이터를 넣을 수 있도록 잠금해제되고 Access key를 발급받는 과정
AWS OpsHub 이용한 Unlocking
- OpsHub : Windows, Mac, Ubuntu에 설치되고, GUI가 있는 프로그램으로써 이 프로그램을 이용하여 Snowball device에 접근 후, Unlocking 및 데이터 전송
- 중계서버는 OpsHub를 설치하지 못하다 보니, Unlocking 용도로만 사용 가능
- AWS 참고 URL : https://aws.amazon.com/ko/blogs/storage/customization-and-field-maintenance-with-aws-snowball-edge-sideloading-amis/ > 7번 항목
Snowball Edge Client 이용한 Unlocking
OpsHub, Snowball Edge Client 다운로드 URL : https://aws.amazon.com/ko/snowball/resources/ Snowball Device로 데이터 전송 관련 메뉴얼 URL : https://aws.amazon.com/ko/premiumsupport/knowledge-center/snowball-edge-device-transfer-data/ |
4단계 : 중계서버 설정, Snowball Device로 데이터 전송
중계서버 : Snowball Device와 데이터 파일이 있는 Target 사이에서 중계역할 하는 서버 중계서버는 데이터 파일을 전송받아 압축 후, Snowball Device로 전송하는 작업이 위주이기 때문에 메모리 많이 필요하므로 최소 64G 이상 권고합니다. |
AWS 관리 콘솔 > AWS Snow Family > 진행 중인 Job 선택 > Get Credentials > Credentials (tab) > Client unlock code 확인(25자리), Download manifest
중계서버에서 unlick 진행하면서 Access_key / secret_key 확인
# 중계서버에서 unlock 진행
snowballEdge unlock-device --endpoint https:x.x.x.x:8080 --manifest-file 다운받은_manifest_file_경로 --unlock-code 확인한_25자리_code
# 중계서버에서 access-key 확인
snowballEdge list-access-keys
# 중계서버에서 access-key를 이용해서 secret key 확인
snowballEdge get-secret-access-key --access-key-id 확인한-access-key값
중계서버에서 Access_key / secret_key를 이용하여 credential 설정하여 aws configure로 등록 > aws cli 명령어 사용 가능
미설정하고 아래 s3booster 스크립트 동작시키면 "botocore.exceptions.NoCredentialsError: Unable to locate credentials" 에러팝업됩니다. max_concurrent_requests, max_queue_size, multipart_threshold, multipart_chunksize, max_bandwidh 등 aws config 값에 설정하여 전송간 최적화 실행합니다. 전송하는 방법은 주로 큰 파일 전송하는 경우와 주로 작은(1MB 이하) 파일 전송하는 경우 2가지가 있습니다. 아래 내용은 주로 작은 파일 전송하는 경우로 작성되었습니다. 전송하는 방법은 2가지가 있습니다. - AWS API인 s3 cp 나 s3 sync로 전송하는 방법 : 사용은 편리하나, 전송 도중 끊어질 위험 - 작은 파일을 압축하여 전송하는 방법 : tar로 파일 압축하여 snwoball 장비로 전송, s3booster라는 스크립트 코드 사용 (참고 URL : https://github.com/aws-samples/s3booster-snowball) |
# s3booster 스크립트 코드
python3 s3booster-snowball-v2.py --bucket_name your-own-bucket --src_dir /data/fs1/ --endpoint https://s3.ap-northeast-2.amazonaws.com --profile_name sbe1 --prefix_root fs3/ --max_process 5 --max_tarfile_size $((1*(1024**3))) --symlink no
// buekct_name : Snowball device로 옮겨질 위치
// src_dir : Source file 위치
// endpoint : Snowball device에서 확인 가능한 데이터파일이 있는 로컬 IP
// max_process : default 5, 5로 작업할 경우 메모리 초과 에러 발생 가능성, 에러 발생 시 적절한 값으로 조정
// max_tarfile-size : default 1G (1Gb씩 tar로 압축 전송)
// no_extract : no (tar로 압축된 파일을 S3로 업로드 시 자동 압축 해제하는 옵션)
# s3booster Error Log 설명
error_~ 로 시작하는 파일 : 파일전송 시 실패한 파일경로에 대한 값 확인 가능, 확인된 파일은 s3 cp 명령어로 재전송
success~로 시작하는 파일 : 파일전송 성공한 파일
filelist~로 시작하는 파일 : tar 압축 시작/성공/종료 등 info 로그, 해당 로그가 방대하게 커질 경우 용량 부족 발생 우려, cat /dev/null > fillist-yyyymmdd_@@@.log (yyyymmdd는 작업당일 생성되는 로그 파일명) 이용하여 로그 비우기
파일 전송 작업 모니터링 시 사용할 명령어 : dstat, iotop, top |
5단계 : Snowball Device로 전송된 파일 검증 (개수, 크기)
리눅스ls 명령어로 확인 가능한 파일 개수는 max 1000이므로 aws s3 ls로 확인 불가능하므로 S3 API로 아래처럼 확인
# S3 bucket 전체 갯수, 용량 확인
aws s3api list-objects --bucket "your-own-bucket" --endpoint http://x.x.x.x:8080 --output json --query "[sum(Contents[].Size), length(Contents[])]"
// buekct : Snowball device로 옮겨진 위치
// endpoint : Snowball device에서 확인 가능한 데이터파일이 있는 로컬 IP
# S3 bucket 내 특정 경로 하위의 파일 갯수 및 용량 확인 (ex : images 하위)
aws s3api list-objects --bucket "your-own-bucket" --endpoint http://x.x.x.x:8080 --prefix "images" --output json --query "[sum(Contents[].Size), length(Contents[])]"
# 명령어 정상 실행 시 (용량, 갯수)
[
22310015,
45
]
S3 API 참고 URL : https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/index.html |
6단계 : Snowball Device를 AWS로 반송
Snowball Device LCD 디스플레이 위에 있는 전원 버튼을 눌러 전원 OFF (20초 정도 소요)
전원케이블을 상단 커버에 넣고 도어 닫음(총 3군데)
Snowball 팀으로 메일 전송
# 메일 예시
수신자 : snowball-shipping@amazon.com
내용
I would return request for Genie Music SnowballEdge 1 node.
Please return it. Thank you.
- JOBID : JOBID 입력
- Address : 수신자 정보(업체명, 담당자, 주소)를 영문으로 입력
- Pickup Date : YYYY/MM/DD
- Cell Phone : 수신자 전화번호
장비를 잘 포장해서 AWS로 반송하면 AWS에서 1단계에 설정한 S3 bucket으로 데이터를 업로드
'Migration' 카테고리의 다른 글
[실습] AWS MPA (Migration Portfolio Assessment) 실습하기 (2) | 2023.04.17 |
---|