카카오클라우드 리전 간 Object Storage 데이터 이관
클라우드 스토리지를 지원하는 오픈소스 커맨드라인 도구인 Rclone(Swift type)을 사용하여 kr-central-1 리전에서 kr-central-2 리전으로 Object Storage 데이터를 이관하는 방법을 설명합니다.
- 예상 소요 시간: 이관 데이터 용량에 따라 상이
- 사용자 환경
- 권장 운영 체제: Rocky, Ubuntu
- Region: kr-central-1, kr-central-2, kr-gov-central-1
- 권장 운영 체제: Rocky, Ubuntu
- 사전 준비 사항
- 카카오클라우드 Object Storage는 Swift API와 S3 API를 지원하며, 이 시나리오는 카카오클라우드 내 리전 간 데이터 이관 방법을 안내합니다.
- 카카오클라우드 공공 리전 Object Storage의 경우, 클래식 버킷에서 일반 버킷으로 데이터를 이관하는 데에 활용할 수 있습니다.
- Swift API와 S3 API를 지원하는 다른 스토리지 서비스를 사용 중인 경우에도, 이 시나리오는 카카오클라우드 Object Storage로 데이터를 이전하는 데 참고 자료가 될 수 있습니다.
시나리오 소개
이번 시나리오에서는 kr-cental-1(KR1) 리전의 Object Storage 데이터를 kr-cental-2(KR2) 리전 Object Storage로 이관하는 방법을 소개합니다. 데이터 이관 작업에는 다양한 클라우드 저장소 간 데이터 전송을 지원하는 Rclone을 사용합니다. 이 시나리오의 주요 내용은 다음과 같습니다.
- Rclone 패키지 설치
- kr-central-1 리전과 kr-central-2 리전 Object Storage 관리를 위한 Rclone 설정
- Object Storage 데이터 이관 후 정합성 검토
시나리오 아키텍처
- 데이터 이관은 모두 인터넷망을 통해 이루어지므로, 데이터 이관용 VM 인스턴스와 Object Storage 간의 인터넷 연결이 가능해야 합니다.
- 데이터 이관용 VM 인스턴스는 리전에 상관없이 원하는 리전에 생성하여 사용할 수 있습니다.
시작하기 전에
이 시나리오의 실습을 위해 데이터 이관을 위한 중계용 VM 인스턴스는 kr-central-1 리전에, 데이터를 저장할 목적지로 사용할 Object Storage 버킷은 kr-central-2 리전에 생성합니다.
- VM 인스턴스 생성 방법은 VM 인스턴스 생성하기 문서를 참고하세요.
- 버킷 생성 및 관리에 대한 자세한 내용은 Object Storage 버킷 생성 및 관리 문서를 확인하시기 바랍니다.
또한, 데이터 이관은 인터넷망을 통해 이루어지므로, VM 인스턴스와 Object Storage 간의 인터넷 연결이 원활히 이루어질 수 있도록 네트워크 환경을 적절히 설정해야 합니다.
시작하기
아래 단계에서는 리전 간 Object Storage 데이터를 이관하는 전체 과정을 안내합니다.
Step 1. 데이터 이관용 VM 인스턴스 접속
데이터 이관용 VM 인스턴스에 Rclone 패키지를 설치하기 위하여 SSH로 접근합니다.
chmod 400 ${PRIVATE_KEY}.pem # 읽기 권한 부여
ssh -i ${PRIVATE_KEY}.pem ubuntu@${VM_PUBLIC_IP}
환경변수 | 설명 |
---|---|
PRIVATE_KEY🖌︎ | 키 파일 이름 |
VM_PUBLIC_IP🖌︎ | Virtual Machine > 인스턴스 탭에서 퍼블릭 IP 확인 |
Step 2. Rclone 설치
데이터 이관을 위해 중계용 VM 인스턴스에 Rclone 패키지를 설치합니다. 자세한 설명은 Rclone Install 문서를 확인하시기 바랍니다.
## Rclone 설치
curl https://rclone.org/install.sh | sudo bash
## Rclone 설치 확인
rclone --version
Step 3. Rclone 설정
중계용 VM 인스턴스에서 Rclone으로 카카오클라우드 Object Storage를 관리할 수 있습니다. 이를 위해 Rclone 설정이 필요합니다. 자세한 설명은 Rclone config 문서를 확인하시기 바랍니다.
-
rclone.conf 파일에 각 리전의 Object Storage 설정 정보를 입력합니다.
cat <<EOL > ~/.config/rclone/rclone.conf
# kr1 Object Storage 설정 (Swift Type)
[kr1-obj]
type = swift
env_auth = true
user = ${USER_ID}
key = ${USER_PASSWORD}
auth = https://iam.kakaocloud.com/identity/v3
domain = ${DOMAIN_NAME}
tenant_domain = ${DOMAIN_ID}
tenant = ${PROJECT_NAME}
tenant_id = ${DOMAIN_ID}
region = kr-central-1
auth_version = 3
# kr2 Object Storage 설정 (S3 Type)
[kr2-obj]
type = s3
provider = Ceph
env_auth = True
access_key_id = ${CREDENTIAL_ACCESS_KEY}
secret_access_key = ${CREDENTIAL_SECRET_ACCESS_KEY}
region = kr-central-2
endpoint = https://objectstorage.kr-central-2.kakaocloud.com
EOL환경변수 설명 USER_ID🖌︎ 사용자 ID USER_PASSWORD🖌︎ 사용자 비밀번호 DOMAIN_NAME🖌︎ 도메인 이름 DOMAIN_ID🖌︎ 도메인 ID PROJECT_NAME🖌︎ 프로젝트 이름 CREDENTIAL_ACCESS_KEY🖌︎ S3 API 사용에 필요한 액세스 키 CREDENTIAL_SECRET_ACCESS_KEY🖌︎ S3 API 사용에 필요한 비밀 액세스 키 정보kr-central-2 리전의 Object Storage 설정값에는 S3 API 사용에 필요한 Credential 발급 정보를 발급받아야 합니다.
자세한 방법은 S3 API 사용에 필요한 Credential 발급 문서를 참고하시기 바랍니다. -
lsd
명령어를 사용하여 Object Storage의 모든 버킷을 나열합니다. 이를 통해 Rclone이 Object Storage와 정상적으로 연결되었는지 확인할 수 있습니다.Rclone과 Object Storage 연결 확인# kr1 Object Storage 연결 확인
rclone lsd kr1-obj:/
# kr2 Object Storage 연결 확인
rclone lsd kr2-obj:/
Step 4. 데이터 이관
sync
명령어를 사용하여 출발지와 목적지의 데이터를 동기화합니다. 이를 통해 KR1 Object Storage의 버킷 데이터를 KR2 Object Storage로 이관할 수 있습니다. 자세한 설명은 Rclone sync 문서를 참조하세요.
# 이관 전 테스트
rclone sync kr1-obj:/"${KR1_BUCKET}" kr2-obj:/"${KR2_BUCKET}" --progress -v \
--create-empty-src-dirs --metadata --log-file "${LOGFILE}" --log-format date,time,KST,longfile --fast-list --dry-run
# 이관
rclone sync kr1-obj:/"${KR1_BUCKET}" kr2-obj:/"${KR2_BUCKET}" --progress -v \
--create-empty-src-dirs --metadata --log-file "${LOGFILE}" --log-format date,time,KST,longfile --fast-list
환경변수 | 설명 |
---|---|
KR1_BUCKET🖌︎ | KR1 Bucket 이름 |
KR2_BUCKET🖌︎ | KR2 Bucket 이름 |
LOGFILE🖌︎ | 로그 파일명 |
sync
명령어를 사용하여 데이터 이관 시, 목적지의 데이터가 변경됩니다. 따라서 데이터 이관을 진행하기 전에 출발지와 목적지가 올바른지 반드시 확인해야 합니다. 출발지와 목적지가 뒤바뀔 경우, 데이터 손실이 발생할 수 있습니다.
- 출발지: KR1 Object Storage
- 목적지: KR2 Object Storage
위 sync
예제의 --metadata 옵션은 Rclone 1.66부터 지원됩니다.
Step 5. 데이터 이관 정합성 확인
데이터의 정합성을 검토하여 정상적으로 이관이 되었는지 확인할 수 있습니다.
# 데이터 정합성 확인
rclone check kr1-obj:/"${KR1_BUCKET}" kr2-obj:/"${KR2_BUCKET}" --progress -v
# 두 Object Storage의 Object 수와 용량 확인
rclone size kr1-obj:/"${KR1_BUCKET}"
rclone size kr2-obj:/"${KR2_BUCKET}"
환경변수 | 설명 |
---|---|
KR1_BUCKET🖌︎ | KR1 Bucket 이름 |
KR2_BUCKET🖌︎ | KR2 Bucket 이름 |
만약 데이터 정합성 확인 단계에서 문제가 발생할 경우, 헬프데스크로 문의해 주시기 바랍니다.