본문으로 건너뛰기

카카오클라우드 리전 간 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
  • 사전 준비 사항
튜토리얼의 활용
  • 카카오클라우드 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 데이터 이관 후 정합성 검토

alt text 시나리오 아키텍처

주의
  • 데이터 이관은 모두 인터넷망을 통해 이루어지므로, 데이터 이관용 VM 인스턴스와 Object Storage 간의 인터넷 연결이 가능해야 합니다.
  • 데이터 이관용 VM 인스턴스는 리전에 상관없이 원하는 리전에 생성하여 사용할 수 있습니다.

시작하기 전에

이 시나리오의 실습을 위해 데이터 이관을 위한 중계용 VM 인스턴스는 kr-central-1 리전에, 데이터를 저장할 목적지로 사용할 Object Storage 버킷은 kr-central-2 리전에 생성합니다.

또한, 데이터 이관은 인터넷망을 통해 이루어지므로, 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 설치
## Rclone 설치 
curl https://rclone.org/install.sh | sudo bash
## Rclone 설치 확인
rclone --version

Step 3. Rclone 설정

중계용 VM 인스턴스에서 Rclone으로 카카오클라우드 Object Storage를 관리할 수 있습니다. 이를 위해 Rclone 설정이 필요합니다. 자세한 설명은 Rclone config 문서를 확인하시기 바랍니다.

  1. 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 발급 문서를 참고하시기 바랍니다.

  2. 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 이름
정보

만약 데이터 정합성 확인 단계에서 문제가 발생할 경우, 헬프데스크로 문의해 주시기 바랍니다.