RIOT 라이브 마이그레이션을 배포하여 Redis Enterprise Cloud로 마이그레이션

Last reviewed 2024-01-29 UTC

이 문서에서는 Redis Enterprise Cloud로 마이그레이션하기 위해 RIOT 라이브 마이그레이션을 배포하는 방법을 설명합니다. 데이터베이스 설계자, DevOps 및 SRE팀, 네트워크 관리자는 이 아키텍처를 사용하여 다운타임이 거의 없는 마이그레이션을 팀에 제공할 수 있습니다. 이 문서에서는 사용자가 Google Cloud CLI 및 Compute Engine을 사용하는 데 익숙하다고 가정합니다.

아키텍처

다음 다이어그램은 RIOT 라이브 마이그레이션 서비스를 사용해서 Redis 호환 소스를 Redis Enterprise Cloud로 마이그레이션하는 참조 아키텍처를 보여줍니다.

Redis 호환 소스는 RIOT를 통해 Redis Enterprise Cloud로 마이그레이션됩니다.

아키텍처에 대한 자세한 내용은 Redis Enterprise Cloud로 마이그레이션을 위한 RIOT 라이브 마이그레이션을 참조하세요.

이 문서의 샘플 배포는 소스가 Compute Engine VM의 Redis OSS인 다음 아키텍처를 사용합니다.

Redis OSS는 RIOT 및 VPC 피어링을 통해 Redis Enterprise Cloud로 마이그레이션됩니다.

다이어그램에서는 편의상 Redis OSS 인스턴스와 RIOT가 단일 Compute Engine VM으로 통합되었습니다. 프로덕션 환경에서는 더 나은 성능을 보장하기 위해 RIOT를 항상 자체 VM에서 실행하는 것이 좋습니다.

샘플 배포 아키텍처에는 다음 구성요소가 포함됩니다.

  • 소스: Compute Engine VM에서 실행되는 Redis OSS 인스턴스입니다.
  • 대상: Redis 관리 VPC에서 실행되는 Redis Enterprise Cloud입니다.
  • 마이그레이션 서비스: Redis OSS와 동일한 Compute Engine VM에서 실행되는 RIOT입니다.
  • 네트워크 설정: 관리형 VPC와 Redis 관리형 VPC 간의 VPC 피어링입니다.

RIOT 마이그레이션 도구의 다운타임이 거의 0입니다. Redis OSS(소스)에서 Redis Enterprise Cloud(대상)로 마이그레이션하는 동안 애플리케이션은 영향이나 서비스 중단 없이 Redis OSS에 계속 액세스할 수 있습니다. 마이그레이션 프로세스 중에 Redis OSS에서 데이터를 처음 로드한 후 RIOT 라이브 마이그레이션은 발생하는 변경사항을 Redis OSS에서 계속 마이그레이션합니다.

목표

  • 데이터를 만들고 로드하여 Redis OSS 소스를 설정합니다.
  • Redis Enterprise Cloud에서 마이그레이션 대상 클러스터를 설정합니다.
  • RIOT 라이브 마이그레이션을 사용하여 Redis OSS에서 Redis Enterprise Cloud로 데이터를 마이그레이션합니다.
  • 테스트, 컷오버, 대체 전략 이해

비용

이 아키텍처를 배포하면 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소가 사용됩니다.

시작하기 전에

다음 단계를 완료하여 마이그레이션 환경을 설정합니다.

  1. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  2. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  3. API BigQuery, Pub/Sub, Dataflow, and Compute Engine 사용 설정

    API 사용 설정

  4. 이 배포를 완료하는 데 필요한 권한을 얻으려면 관리자에게 조직의 결제 관리자(roles/billing.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

Redis OSS 인스턴스 설정

배포를 시작하려면 Compute Engine VM에 Redis OSS 인스턴스를 설치합니다. 인스턴스는 소스 인스턴스 역할을 합니다.

Redis OSS 인스턴스 설치

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. Cloud Shell에서 Ubuntu VM을 만듭니다.

    gcloud compute instances create redis-oss-riot-vm \
      --image-family=ubuntu-2004-lts \
        --image-project=ubuntu-os-cloud \
        --zone=us-central1-a \
        --machine-type=e2-medium \
        --network=VPC_NETWORK_NAME \
        --subnet=VPC_SUBNETWORK_NAME \
      --metadata=startup-script='#! /bin/bash
        apt-get update -y
        apt-get install redis-tools -y
        snap install redis'
    

    다음을 바꿉니다.

    • VPC_NETWORK_NAME: VPC 네트워크의 이름
    • VPC_SUBNETWORK_NAME: VPC 서브네트워크의 이름
  3. SSH 연결을 사용하여 Redis OSS 인스턴스를 실행하는 Compute Engine 인스턴스에 로그인합니다.

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    
    gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  4. RIOT에 필요한 라이브 마이그레이션에 키스페이스 알림을 사용 설정합니다.

    redis-cli config set notify-keyspace-events KEA
    

Redis OSS 인스턴스가 작동하는지 확인

  1. Cloud Shell에서 Redis CLI를 시작합니다.

    redis-cli
    
  2. 간단한 키-값 쌍을 설정하고 가져옵니다.

    set my_key my_value
    get my_key
    unlink my_key
    

    출력은 다음과 같습니다.

    OK
    "my_value"
    (integer) 1
    

    이제 Redis OSS 인스턴스를 만들고 액세스한 후 작동하는지 확인했습니다.

샘플 데이터 삽입

이 섹션에서는 Redis OSS 인스턴스에 샘플 데이터를 삽입하고 데이터가 성공적으로 삽입되었는지 확인합니다.

  1. Cloud Shell에서 Redis CLI를 시작합니다.

    redis-cli
    
  2. 다음 6개의 키-값 쌍을 초기 데이터 세트로 추가합니다. 각 명령어를 개별적으로 입력하고 출력 OK를 기다린 후 다음 키-값 쌍을 입력합니다.

    set tennis federer
    
    set soccer ronaldo
    
    set basketball curry
    
    set football montana
    
    set golf woods
    
    set swimmer phelps
    
  3. 6개의 키-값 쌍이 성공적으로 추가되었는지 확인합니다.

    SCAN 0
    

    출력은 다음과 같습니다.

    "swimmer"
    "soccer"
    "football"
    "golf"
    "tennis"
    "basketball"
    

RIOT 마이그레이션을 설정하고 시작하면 데이터가 대상 Redis Enterprise Cloud 인스턴스로 마이그레이션됩니다.

Redis OSS 인스턴스 VM에 RIOT 설치

RIOT를 실행하려면 Compute Engine VM의 크기가 적절한지 확인해야 합니다. 일반적으로 전송할 데이터 양과 업데이트 빈도에 따라 VM의 크기를 vCPU 8개 이상으로 지정하는 것이 좋습니다. 자세한 내용은 머신 계열 리소스 및 비교 가이드를 참조하세요.

  1. Cloud Shell에서 SSH 연결을 사용하여 Redis OSS 인스턴스를 실행하는 Compute Engine 인스턴스에 로그인합니다.

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    
    gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  2. RIOT용 JDK를 설치합니다.

    sudo apt install default-jre -y
    
  3. RIOT를 다운로드하고 설치합니다.

    sudo apt-get install unzip
    
    wget https://github.com/redis-developer/riot/releases/download/v2.19.0/riot-redis-2.19.0.zip
    
    unzip riot-redis-2.19.0.zip
    
  4. RIOT가 올바르게 설치되었는지 확인합니다.

    ./riot-redis-2.19.0/bin/riot-redis -V
    

    출력은 다음과 비슷하며 RIOT 로고와 버전 번호를 보여줍니다.

    RIOT 로고 및 버전 번호

이제 Redis OSS 인스턴스에 RIOT 마이그레이션 도구를 설치하고 작동하는지 확인했습니다.

Redis Enterprise Cloud 인스턴스 만들기

Redis Enterprise Cloud는 Cloud Marketplace를 통해 제공됩니다. 대상 Redis Enterprise 인스턴스로 Redis Enterprise 클러스터를 설정하지 않은 경우 이 섹션의 단계를 따르세요. 이미 Redis Enterprise 클러스터를 대상 데이터베이스로 설정한 경우 이 섹션을 건너뛰고 RIOT 라이브 마이그레이션 시작을 진행합니다.

  1. Cloud Marketplace에서 Redis Enterprise Cloud 가변형 - 사용한 만큼만 지불로 이동합니다.

    Marketplace에서 Redis Enterprise로 이동

    자세한 내용은 Redis 문서 Cloud Marketplace에서 가변형 구독의 안내를 참조하세요.

  2. Redis Enterprise Cloud Flexible을 구독할 때 제공한 Redis 계정 정보를 사용하여 Redis 콘솔에 로그인합니다.

  3. Redis 문서 가변형 구독 만들기의 안내에 따라 가변형 구독을 만듭니다. 클라우드 공급업체로 Google Cloud를 선택하고 모든 기본 설정으로 데이터베이스를 만듭니다.

  4. Redis 문서 VPC 피어링 사용 설정의 안내에 따라 Google Virtual Private Cloud와 Redis 관리형 VPC 간에 VPC 피어링을 만듭니다.

  5. Redis 콘솔에서 구독으로 이동한 다음 Redis Enterprise 데이터베이스 연결 문자열을 찾습니다.

    1. 비공개 엔드포인트 IP 및 포트를 다음 형식으로 기록해 둡니다.

      ENDPOINT_IP:ENDPOINT_PORT
      

      여기서 값은 다음을 나타냅니다.

      • ENDPOINT_IP: Redis Enterprise 데이터베이스의 비공개 엔드포인트 IP 주소
      • ENDPOINT_PORT: Redis Enterprise 데이터베이스의 비공개 엔드포인트 포트 번호입니다.
    2. 데이터베이스 비밀번호를 기록해 둡니다.

RIOT 라이브 마이그레이션 시작

Redis OSS(소스)에서 Redis Enterprise Cloud(대상) 인스턴스로 데이터를 마이그레이션하려면 다음을 수행합니다.

  1. Cloud Shell에서 SSH 연결을 사용하여 Redis OSS 인스턴스를 실행하는 Compute Engine 인스턴스에 로그인합니다.

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    
    gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  2. 소스와 대상 간에 라이브 마이그레이션을 시작합니다. Redis OSS 인스턴스가 Redis 7.2에 있는 경우 유형 기반 복제를 사용해야 합니다. --type 옵션 사용에 대한 자세한 내용은 Redis 문서 유형 기반 복제를 참조하세요.

    ./riot-redis-2.19.0/bin/riot-redis -u redis://localhost:6379 replicate  \
    -u redis://ENDPOINT_IP:ENDPOINT_PORT \
      -a REDIS_ENTERPRISE_DB_PASSWORD \
      --mode live
    

    다음을 이전 섹션에서 기록해 둔 값으로 바꿉니다.

    • ENDPOINT_IP: Redis Enterprise 클러스터 데이터베이스의 비공개 엔드포인트 IP 주소
    • ENDPOINT_PORT: Redis Enterprise 클러스터 데이터베이스의 비공개 엔드포인트 포트 번호
    • REDIS_ENTERPRISE_DB_PASSWORD: Redis Enterprise 클러스터 데이터베이스의 비밀번호

    출력은 다음과 비슷합니다.

    Listening  ? % ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━0/? (0:00:00 / ?) ?/s\
    Scanning 100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6/6 (0:00:00 / 0:00:00) ?/s
    

데이터베이스 마이그레이션 확인

데이터베이스 마이그레이션이 성공했는지 확인하려면 데이터베이스 마이그레이션 확인 전략을 설계하고 구현하는 것이 중요합니다. 사용하는 확인 전략은 구체적인 사용 사례에 따라 다르지만 모든 마이그레이션에서 다음 검사를 수행하는 것이 좋습니다.

  • 완료 확인: 초기 키-값 쌍이 Redis OSS에서 Redis Enterprise로 성공적으로 마이그레이션되었는지 확인합니다(초기 로드).
  • 동적 확인: 소스의 변경사항이 대상 인스턴스로 전송되고 있는지 확인합니다(진행 중인 마이그레이션).

초기 로드

  1. Cloud Shell에서 SSH 연결을 사용하여 Redis OSS 인스턴스를 실행하는 Compute Engine 인스턴스에 로그인합니다.

    PROJECT_ID=$(gcloud info --format='value(config.project)')
    $ gcloud compute ssh redis-oss-riot-vm --project $PROJECT_ID --zone us-central1-a
    
  2. Redis CLI를 실행합니다.

    redis-cli -u redis://ENDPOINT_IP:ENDPOINT_PORT \
    -a REDIS_ENTERPRISE_DB_PASSWORD
    
  3. 6개의 키-값 쌍이 Redis OSS에서 Redis Enterprise 인스턴스로 성공적으로 마이그레이션되었는지 확인합니다.

    SCAN 0
    

    출력은 다음과 같습니다.

    "swimmer"
    "soccer"
    "football"
    "golf"
    "tennis"
    "basketball"
    
  4. 테니스 키의 값을 가져옵니다.

    get tennis
    

    출력은 다음과 같습니다.

    [return federer]
    
  5. Redis CLI를 종료합니다.

    exit
    

진행 중인 마이그레이션

소스 Redis OSS에 진행 중인 변경사항이 대상 Redis Enterprise 인스턴스에 반영되는지 확인합니다.

  1. Cloud Shell에서 SSH 연결을 사용하여 Redis OSS VM에 로그인합니다.
  2. Redis CLI를 실행합니다.

    redis-cli
    
  3. 새 키-값 쌍을 추가합니다.

    1. runner bolt 쌍을 추가합니다.

      set runner bolt
      
    2. tennis alcaraz 쌍을 삽입/업데이트(upsert)합니다.

      set tennis alcaraz
      

    각 명령어의 출력은 다음과 같습니다.

    OK
    
  4. Redis Enterprise 인스턴스에서 새 키-값 쌍이 추가되었는지 확인합니다.

    get runner
    

    출력은 다음과 같습니다.

    [return bolt]
    
  5. 모든 키-값 쌍이 있는지 확인하려면 키 수를 확인합니다.

    redis-cli info keyspace and redis-cli -u <REMOTE> info keyspace
    

    출력은 다음과 같습니다.

    # Keyspace
    db0:keys=7,expires=0,avg_ttl=0
    

이제 RIOT Live Migration이 소스 Redis OSS 인스턴스의 모든 키-값 쌍을 자동으로 마이그레이션하고 소스에 대한 진행 중인 변경사항을 확인했습니다.

소스에서 대상으로 컷오버

데이터베이스 마이그레이션을 확인한 후에는 소스 Redis OSS 인스턴스에서 대상 Redis Enterprise 인스턴스로 컷오버를 수행할 수 있습니다.

  1. Redis 액세스 제어 목록(ACL)을 사용하여 소스 Redis OSS 인스턴스에 대한 클라이언트 쓰기 액세스를 정지합니다.
  2. 대체 전략을 위해 소스 데이터베이스를 보존해야 하는 경우가 아니라면 VM 인스턴스를 삭제하여 소스 Redis OSS를 사용 중단합니다.
  3. Redis Enterprise 데이터베이스 인스턴스와 동일한 리전으로 클라이언트를 마이그레이션합니다. 자세한 내용은 클라이언트 호스트 문서를 참조하세요.
  4. Redis 콘솔에서 Redis Enterprise 데이터베이스 인스턴스의 비공개 엔드포인트를 찾아 클라이언트의 Redis 연결을 비공개 엔드포인트로 업데이트합니다. 자세한 내용은 Redis 문서의 데이터베이스 보기 및 수정을 참조하세요.
  5. Cloud Shell에서 Ctrl+C를 눌러 RIOT 프로세스를 중지합니다.

대체 전략 준비

컷오버가 완료되면 대상 Redis Enterprise 인스턴스가 레코드 시스템입니다. 소스 Redis OSS 인스턴스가 오래되어 결국 삭제되었습니다. 그러나 새 대상 Redis Enterprise 인스턴스에 심각한 오류가 발생할 경우 소스 Redis OSS 인스턴스로 돌아가야 할 수 있습니다.

이러한 오류에 대응하려면 원본 소스 Redis OSS 인스턴스를 대상 데이터베이스 변경사항에 따라 최신 상태로 유지해야 할 수 있습니다. 새 대상 인스턴스를 신뢰할 수 있다고 확신하면 소스 인스턴스를 종료할 수 있습니다.

삭제

다음 섹션에서는 이 배포에서 사용한 Google Cloud 프로젝트 및 Redis 리소스에 향후 요금이 청구되지 않도록 방지하는 방법에 대해 설명합니다.

프로젝트 삭제

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

Redis Enterprise 데이터베이스 삭제

Redis Enterprise 데이터베이스를 삭제하려면 Redis 문서의 데이터베이스 삭제를 참조하세요.

다음 단계

참여자

저자:

기타 참여자: