주:

OCI Full Stack Disaster Recovery를 통해 OCI Kubernetes Engine에 배포된 데모 애플리케이션의 스위치오버 및 페일오버 계획 자동화

소개

이 사용지침서에서는 Oracle Cloud Infrastructure Kubernetes Engine(OCI Kubernetes Engine 또는 OKE) 클러스터에 배포된 데모 전자 상거래 애플리케이션과 함께 Oracle Cloud Infrastructure Full Stack Disaster Recovery(OCI Full Stack DR) 사용 사례를 보여줍니다.

이 튜토리얼을 작성할 때 OCI Full Stack DR은 OKE에 대한 가용성이 제한적이라고 발표했습니다. 제한적 릴리스에서는 다양한 Oracle Cloud Infrastructure(OCI) 서비스를 하나의 애플리케이션으로 사용하는 마이크로서비스 기반 데모 애플리케이션인 MuShop와 같은 OKE 기반 애플리케이션에서 OCI Full Stack DR을 사용해 볼 수 있습니다.

더 빠른 DR 전환을 위해 대기 영역에 일부 또는 모든 애플리케이션 구성요소가 사전 배치되는 DR(재해 복구) 모델인 웜 대기 방식을 사용합니다. 이 모델은 높은 운영 비용을 포함하지만 RTO(복구 시간 목표)를 낮춥니다.

OCI Full Stack DR은 클릭 한 번으로 전 세계의 OCI 리전 간 컴퓨트, 데이터베이스, 애플리케이션 전환을 통합관리합니다. 고객은 전문화된 관리 또는 변환 서버 없이도 기존 인프라, 데이터베이스 또는 애플리케이션을 재설계하거나 재설계하지 않고도 하나 이상의 비즈니스 시스템을 복구하는 데 필요한 단계를 자동화할 수 있습니다.

배포 아키텍처

OKE 배치 구조

주: 기본 영역은 Sydney이고 DR 영역은 Melbourne입니다.

목표

필요 조건

작업 1: Oracle Autonomous Database 설치 및 설정

  1. 기본 Oracle Autonomous Database를 생성합니다.

    oci db autonomous-database create --compartment-id ${COMPARTMENT_ID} \
    --db-name ${DB_NAME} --admin-password ${DB_PASSWORD} --db-version 19c \
    --cpu-core-count 1 --data-storage-size-in-tbs 1 \
    --display-name ${DB_DISPLAY_NAME} --region ${PRIMARY_REGION}
    
  2. 기본 Oracle Autonomous Database OCID를 인출합니다.

    DB_ID=$(oci db autonomous-database list -c ${COMPARTMENT_ID} \
    --region ${PRIMARY_REGION} --display-name $DB_NAME \
    --query "data[?\"db-name\"=='${DB_NAME}'].id | [0]" --raw-output)
    
  3. 대기 DR을 생성하고 영역 간 Oracle Data Guard를 사용으로 설정합니다.

    oci db autonomous-database create-adb-cross-region-data-guard-details \
    --compartment-id ${COMPARTMENT_ID} --db-name ${DB_NAME} --source-id ${DB_ID} \
    --cpu-core-count 1 --data-storage-size-in-tbs 1 \
    --region ${FAILOVER_REGION} --db-version 19c
    
  4. 기본 Oracle Autonomous Database에서 자율운영 데이터베이스 전자 지갑을 다운로드하고 추출합니다.

    oci db autonomous-database generate-wallet --autonomous-database-id ${DB_ID}\
    --password ${WALLET_PW} --file ${WALLET_ZIP} --region $PRIMARY_REGION
    
  5. primary에서 전자 지갑의 압축을 풉니다.

    unzip ${WALLET_ZIP} -d /tmp/wallet_primary
    

    참고:

    • 나중에 OKE 암호로 추가해야 하므로 이 전자 지갑을 편리하게 유지하십시오.
    • tnsnames.ora DNS 항목이 서로 다르므로 기본 및 대기 영역에 대해 전자 지갑을 별도로 다운로드해야 합니다.
  6. 대기 Oracle Autonomous Database OCID를 인출합니다.

    STANDBY_DB_ID=$(oci db autonomous-database list -c ${COMPARTMENT_ID} \
    --region ${STANDBY_REGION} --display-name $STANDBY_DB_NAME \
    --query "data[?\"db-name\"=='${DB_NAME}'].id | [0]" --raw-output)
    
  7. 대기 Oracle Autonomous Database에서 자율운영 데이터베이스 전자 지갑을 다운로드하고 추출합니다.

    oci db autonomous-database generate-wallet --autonomous-database-id \
    ${STANDBY_DB_ID} --password ${WALLET_PW} \
    --file ${STANDBY_WALLET_ZIP} --region $STANDBY_REGION
    
  8. standby wallet의 압축을 풉니다.

    unzip ${STANDBY_WALLET_ZIP} -d /tmp/wallet_standby
    

작업 2: OKE 클러스터 만들기

기본 및 DR 사이트 모두에 OKE 클러스터를 만듭니다. 자세한 내용은 Oracle Cloud Infrastructure Container Engine for Kubernetes로 클러스터 생성을 참조하십시오.

빠른 생성 옵션을 사용하여 다음 정보로 클러스터를 생성했습니다.

클러스터에 액세스하려면 OCI 콘솔로 이동하여 개발자 서비스, 컨테이너 및 아티팩트로 이동하고 OKE(Kubernetes 클러스터)를 누릅니다.

또는

다음 명령을 실행하여 클러스터에 액세스합니다.

oci ce cluster create-kubeconfig --cluster-id <cluster-id> --file $HOME/.kube/config --region ap-sydney-1 --token-version 2.0.0  --kube-endpoint PUBLIC_ENDPOINT

작업 3: 기본 사이트에서 Kubernetes 암호 설정

  1. 이름 공간을 만듭니다.

    kubectl create ns mushop
    
  2. Oracle Autonomous Database 관리자 비밀번호 암호를 추가합니다.

    kubectl create secret generic oadb-admin \
          --namespace mushop \
          --from-literal=oadb_admin_pw=${DB_PASSWORD}
    
  3. Oracle Autonomous Database 접속 암호를 추가합니다.

    kubectl create secret generic oadb-connection \
          --namespace mushop \
          --from-literal=oadb_wallet_pw=${WALLET_PW} \
          --from-literal=oadb_service=${DB_SERVICE_NAME}
    
  4. 기본 전자 지갑 암호를 추가합니다.

    kubectl create secret generic oadb-wallet \
          --namespace mushop --from-file=/tmp/wallet_primary
    

작업 4: MuShop 응용 프로그램 설정

주: 응용 프로그램은 기본 영역(ap-sydney-1)에만 배치됩니다.

  1. Repository를 복제합니다.

    git clone git@github.com:naikvenu/fsdr-demo.git
    
  2. Chart 폴더로 이동합니다.

    cd fsdr-demo/helm-chart/
    
  3. 차트 종속성을 업데이트합니다.

    helm dependency update ./setup
    
  4. 차트를 설치 및 설정합니다.

    helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
    
  5. 수신 컨트롤러 EXTERNAL-IP 주소를 찾습니다.

    PRIMARY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  6. OKE 클러스터에 응용 프로그램을 설치합니다.

    helm upgrade --install -f ./mushop/values-dr.yaml \
       fsdrmushop mushop -n mushop
    
  7. 수신 IP를 사용하여 기본 MuShop 애플리케이션에 액세스합니다.

    kubectl get svc mushop-utils-ingress-nginx-controller \
       --namespace mushop-utilities
    
  8. 응용 프로그램을 확인하려면 http://<primary-site-ingress-ip-address>에 액세스하여 오류 없이 나열된 MuShop 카탈로그 제품이 모두 표시되는지 확인합니다.

작업 5: 대기 사이트에서 OKE 클러스터 설정

주: 웜 대기 접근 방식을 사용 중이므로 OKE 클러스터를 만들고 수신 컨트롤러와 같은 몇 가지 기본 사항을 실행해야 합니다. 다음 단계를 수행하면 도움이 됩니다.

  1. 대기 사이트에서 클러스터에 액세스하려면 OCI 콘솔로 이동하여 개발자 서비스, 컨테이너 및 아티팩트로 이동하고 OKE(Kubernetes 클러스터)를 누릅니다.

    또는

    다음 명령을 실행하여 standby site에서 클러스터에 액세스합니다.

    oci ce cluster create-kubeconfig --cluster-id <cluster-id> --file $HOME/.kube/config --region ap-sydney-1 --token-version 2.0.0  --kube-endpoint PUBLIC_ENDPOINT
    
  2. Repository를 복제합니다.

    git clone git@github.com:naikvenu/fsdr-demo.git
    

    또는

    git clone  https://github.com/naikvenu/fsdr-demo
    
  3. 차트 폴더로 이동합니다.

    cd fsdr-demo/helm-chart/
    
  4. 차트 종속성을 업데이트합니다.

    helm dependency update ./setup
    
  5. 차트를 설치 및 설정합니다. 애플리케이션에 액세스하기 위해 수신 컨트롤러(OCI 로드 밸런서)를 배치하는 데 필요합니다.

    주: 이 단계에서는 수신 컨트롤러(OCI 로드 밸런서)만 배치하고 전체 애플리케이션은 배치하지 않습니다.

    helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
    
  6. 수신 컨트롤러 EXTERNAL-IP 주소를 찾습니다.

    STANDBY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  7. MuShop 네임스페이스를 생성합니다.

    kubectl create namespace mushop
    
  8. 전자 지갑에 대한 암호를 생성합니다.

    kubectl create secret generic oadb-wallet \
          --namespace mushop --from-file=/tmp/wallet_standby
    

    주: 대기 전자 지갑을 사용하고 있습니다.

작업 6: DNS 영역 설정(선택사항)

기본 영역에서 OCI 콘솔로 이동하여 네트워킹, DNS 관리, 영역으로 이동하고 영역 생성을 누릅니다.

Configuration:
The Zone type : Primary
‘A’ record: “mushop”

영역 이름은 구매한 도메인 이름과 일치해야 합니다. 도메인에 추가할 이름 서버를 입력합니다.

애플리케이션은 https://mushop.<your-domain>.com에서 액세스할 수 있습니다.

작업 7: 건전성 검사 만들기(선택사항)

OCI DNS 트래픽 조정 정책을 설정하려면 건전성 검사가 필요합니다.

다음 명령을 실행하여 건전성 검사를 만듭니다.

oci health-checks http-monitor create --compartment-id ${COMPARTMENT_ID} --display-name fsdr-test --interval-in-seconds 30 --targets '[“${PRIMARY_EXTERNAL_IP}”]' --protocol http --path "/" --port 80

또는

OCI 콘솔로 이동하여 관찰 가능성 및 관리, 모니터링, 건전성 검사로 이동하고 건전성 검사 생성을 누른 후 다음 정보를 입력합니다.

작업 8: 트래픽 관리 조정 정책 구성(선택 사항)

OCI 콘솔로 이동하여 네트워킹, DNS 관리, 트래픽 관리 조정 정책으로 이동하고 트래픽 관리 조정 정책 생성을 누르고 다음 정보를 입력합니다.

작업 9: OCI Full Stack DR 설정

  1. 두 영역 모두에서 DRPG를 만듭니다. OCI 콘솔로 이동하여 이전 및 재해 복구로 이동하고 DR 보호 그룹을 누릅니다. primary-drpg-sydneystandby-drpg-melbourne를 예로 들 수 있습니다.

  2. DRPG를 연결합니다. OCI 콘솔로 이동하여 이전 및 재해 복구, DR 보호 그룹으로 이동하고 연관을 누릅니다.

  3. DRPG(시드니 지역)에 리소스를 추가합니다. OCI 콘솔로 이동하여 마이그레이션 및 재해 복구, DR 보호 그룹, 멤버로 이동하고 멤버 추가를 누릅니다.

  4. OKE 클러스터 및 Oracle Autonomous Database를 추가합니다.

    DRPG 회원

  5. DRPG(멜버른 지역)에 리소스 추가 - OKE 클러스터 및 Oracle Autonomous Database.

    DRPG 회원

  6. 대기 영역(멜버른)에서 DR 계획을 생성합니다. OCI 콘솔로 이동하여 이전 및 재해 복구, DR 보호 그룹, 계획으로 이동하고 계획 생성을 누릅니다.

    DRPG 회원

    다음 이미지는 OKE와 함께 다른 서비스를 포함할 수 있는 전체 응용 프로그램 스택에 대한 복구를 조정하는 DR 계획을 보여줍니다.

    이미지에서 볼 수 있듯이 OKE에 대한 단계가 내장되어 있습니다. OCI Full Stack DR 서비스는 내부적으로 개발된 백업 도구를 실행합니다. 이 도구는 배포, 복제 세트, Pod, CronJobs, 데몬 세트 등의 클러스터 백업을 주기적으로 수행합니다.

    백업은 멤버 속성에서 지정한 OCI Object Storage 버킷에 저장됩니다.

    • OKE - Stop Backup and Cleanup(기본): 백업을 중지하고 OKE 클러스터에서 언급된 모든 리소스를 종료합니다.

    • OKE - 복원(대기): 백업을 사용하여 DR OKE 클러스터의 최신 백업을 복원하므로 OKE 클러스터에 생성된 모든 리소스가 생성됩니다.

    • OKE - 역방향 백업 일정 잡기(대기): 스위치백 계획에 대한 역방향 백업을 설정합니다.

    PersistentVolume(PV) 및 PersistentVolumeClaim(PVC)를 사용 중인 경우 영역 간 볼륨 그룹(블록 스토리지) 및 영역 간 FSS 복제(파일 스토리지)를 구성하고 DRPG에서 멤버로 추가해야 합니다. 이렇게 하면 OKE 및 Oracle Autonomous Database와 같은 추가 계획 그룹이 생성됩니다.

  7. 전환을 수행합니다. 이 단계는 대기 사이트(멜버른)에서 수행해야 합니다.

    OCI 콘솔로 이동하여 마이그레이션 및 재해 복구, DR 보호 그룹으로 이동하고 DR 계획 실행을 누릅니다.

작업 10: 응용 프로그램 테스트 및 검증

대기 영역에서 애플리케이션에 액세스하여 모든 것이 작동하는지 확인합니다. 애플리케이션은 https://mushop.domain.com에서 액세스할 수 있거나 http://standbyloadbalancerIP.com 주소를 사용해야 합니다.

standby database가 완전히 작동 중임을 나타내는 카탈로그 항목에 액세스할 수 있는지 확인합니다.

DRPG 회원

참고: 이 자습서에서는 OCI 로드 밸런서 및 OCI 웹 애플리케이션 방화벽을 사용하는 SSL 인증서를 포함하는 단계를 제외했습니다. 이 두 구성 요소는 운용 환경에 추가할 수 있습니다.

다음 단계

OCI Kubernetes Engine에 배포된 마이크로서비스 기반의 전자 상거래 애플리케이션을 OCI Full Stack DR 서비스로 구성하여 웜 대기 모드에서 재해 복구를 가능하게 하는 방법을 확인했습니다. 이 애플리케이션이 수동 개입 없이 원활하게 페일오버될 수 있는 방법을 보여주었습니다. 자세한 내용은 관련 링크 섹션의 OCI Full Stack DR 설명서를 참조하십시오.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.