주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
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 리전 간 컴퓨트, 데이터베이스, 애플리케이션 전환을 통합관리합니다. 고객은 전문화된 관리 또는 변환 서버 없이도 기존 인프라, 데이터베이스 또는 애플리케이션을 재설계하거나 재설계하지 않고도 하나 이상의 비즈니스 시스템을 복구하는 데 필요한 단계를 자동화할 수 있습니다.
배포 아키텍처
주: 기본 영역은 Sydney이고 DR 영역은 Melbourne입니다.
목표
-
아키텍처에 따라 주 시드니 지역에
Mushop-Syd
라는 DRPG(DR 보호 그룹)를 만듭니다. -
기본 DRPG에는 애플리케이션을 구성하는 다양한 OCI 리소스 모음이 포함되어 있으며, DR 작업을 수행할 때 결합 그룹으로 처리되어야 합니다. 기본 DRPG에 OKE 및 Oracle Autonomous Database Serverless(Autonomous Database Serverless)를 추가했습니다. 이 사용지침서에서는 MuShop 애플리케이션 및 배치에 필요한 기타 모든 리소스를 배치하는 단계도 제공합니다.
-
유사한 DRPG가 대기 멜버른 지역에서 생성됩니다. OKE 및 Autonomous Database Serverless(대기 모드)가 DRPG에 추가됩니다. 로드 밸런서는 DRPG의 일부가 아니지만 Deployment Architecture에 강조 표시된 대로 두 사이트 모두에서 독립적으로 실행됩니다.
-
두 DRPG 간에 연관이 형성됩니다.
-
대기 DRPG(멜버른)에서 DR 계획이 생성됩니다. 이 계획은 DR 워크플로우(단계 순서)를 나타냅니다.
-
DR 계획을 실행합니다. 기본 DRPG에서 대기 DRPG로의 서비스 전환을 계획하는 스위치오버가 실행됩니다. Switchover 계획은 기본 영역에서 응용 프로그램 스택을 종료한 다음 standby 영역에서 해당 스택을 불러오는 방식으로 정상적인 전환을 수행합니다. 따라서 전환 계획을 사용하려면 애플리케이션 스택 구성요소 및 기타 필수 OCI 서비스를 두 지역에서 모두 사용할 수 있어야 합니다.
필요 조건
-
관리자 권한을 부여하거나 OCI Full Stack DR에 필요한 OCI IAM(Oracle Cloud Infrastructure Identity and Access Management) 정책을 구성합니다. 자세한 내용은 OCI Full Stack DR을 사용하기 위한 IAM(ID 및 액세스 관리) 정책 구성 및 OCI Full Stack DR 정책을 참고하세요.
-
환경 설정:
export COMPARTMENT_ID=ocid1.compartment.oc1.. export DB_NAME=fsdrdemoadb export DB_DISPLAY_NAME=fsdrdemoadb export DB_PASSWORD=<Your DB Password> export WALLET_PW=<Your DB Password> export DB_SERVICE_NAME=${DB_NAME}_tp export WALLET_ZIP=/tmp/Wallet_${DB_NAME}.zip export STANDBY_WALLET_ZIP=/tmp/Wallet_${DB_NAME}_Standby.zip export PRIMARY_REGION=ap-sydney-1 export STANDBY_REGION=ap-melbourne-1 export STANDBY_DB_NAME=${DB_NAME}_remote
env
라는 파일에 다음 행을 추가하고 소스를 지정합니다.source env
참고:
- Autonomous Database Serverless의 비밀번호 기준에 대한 자세한 내용은 About User Passwords on Autonomous Database를 참조하십시오.
- Autonomous Database Serverless 이름에는 영숫자만 포함될 수 있습니다.
- 위의 환경 변수에서
DB_PASSWORD
및WALLET_PW
를 바꿉니다.
작업 1: Oracle Autonomous Database 설치 및 설정
-
기본 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}
-
기본 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)
-
대기 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
-
기본 Oracle Autonomous Database에서 자율운영 데이터베이스 전자 지갑을 다운로드하고 추출합니다.
oci db autonomous-database generate-wallet --autonomous-database-id ${DB_ID}\ --password ${WALLET_PW} --file ${WALLET_ZIP} --region $PRIMARY_REGION
-
primary에서 전자 지갑의 압축을 풉니다.
unzip ${WALLET_ZIP} -d /tmp/wallet_primary
참고:
- 나중에 OKE 암호로 추가해야 하므로 이 전자 지갑을 편리하게 유지하십시오.
tnsnames.ora
DNS 항목이 서로 다르므로 기본 및 대기 영역에 대해 전자 지갑을 별도로 다운로드해야 합니다.
-
대기 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)
-
대기 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
-
standby wallet의 압축을 풉니다.
unzip ${STANDBY_WALLET_ZIP} -d /tmp/wallet_standby
작업 2: OKE 클러스터 만들기
기본 및 DR 사이트 모두에 OKE 클러스터를 만듭니다. 자세한 내용은 Oracle Cloud Infrastructure Container Engine for Kubernetes로 클러스터 생성을 참조하십시오.
빠른 생성 옵션을 사용하여 다음 정보로 클러스터를 생성했습니다.
- 클러스터 이름:
primary-syd-oke-demo-cluster
(시드니) 및standby-mel-oke-demo-cluster
(멜버른)을 입력합니다. - Kubernetes API 끝점: 공용을 선택합니다.
- 노드 유형: 관리됨을 선택합니다.
- 비공개 근로자를 선택합니다.
- 구성: VM Standard E3 Flex (4 OCPU, 64GB Memory)를 선택합니다.
- Oracle Linux 8을 선택합니다.
클러스터에 액세스하려면 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 암호 설정
-
이름 공간을 만듭니다.
kubectl create ns mushop
-
Oracle Autonomous Database 관리자 비밀번호 암호를 추가합니다.
kubectl create secret generic oadb-admin \ --namespace mushop \ --from-literal=oadb_admin_pw=${DB_PASSWORD}
-
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}
-
기본 전자 지갑 암호를 추가합니다.
kubectl create secret generic oadb-wallet \ --namespace mushop --from-file=/tmp/wallet_primary
작업 4: MuShop 응용 프로그램 설정
주: 응용 프로그램은 기본 영역(
ap-sydney-1
)에만 배치됩니다.
-
Repository를 복제합니다.
git clone git@github.com:naikvenu/fsdr-demo.git
-
Chart 폴더로 이동합니다.
cd fsdr-demo/helm-chart/
-
차트 종속성을 업데이트합니다.
helm dependency update ./setup
-
차트를 설치 및 설정합니다.
helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
-
수신 컨트롤러
EXTERNAL-IP
주소를 찾습니다.PRIMARY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
-
OKE 클러스터에 응용 프로그램을 설치합니다.
helm upgrade --install -f ./mushop/values-dr.yaml \ fsdrmushop mushop -n mushop
-
수신 IP를 사용하여 기본 MuShop 애플리케이션에 액세스합니다.
kubectl get svc mushop-utils-ingress-nginx-controller \ --namespace mushop-utilities
-
응용 프로그램을 확인하려면
http://<primary-site-ingress-ip-address>
에 액세스하여 오류 없이 나열된 MuShop 카탈로그 제품이 모두 표시되는지 확인합니다.
작업 5: 대기 사이트에서 OKE 클러스터 설정
주: 웜 대기 접근 방식을 사용 중이므로 OKE 클러스터를 만들고 수신 컨트롤러와 같은 몇 가지 기본 사항을 실행해야 합니다. 다음 단계를 수행하면 도움이 됩니다.
-
대기 사이트에서 클러스터에 액세스하려면 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
-
Repository를 복제합니다.
git clone git@github.com:naikvenu/fsdr-demo.git
또는
git clone https://github.com/naikvenu/fsdr-demo
-
차트 폴더로 이동합니다.
cd fsdr-demo/helm-chart/
-
차트 종속성을 업데이트합니다.
helm dependency update ./setup
-
차트를 설치 및 설정합니다. 애플리케이션에 액세스하기 위해 수신 컨트롤러(OCI 로드 밸런서)를 배치하는 데 필요합니다.
주: 이 단계에서는 수신 컨트롤러(OCI 로드 밸런서)만 배치하고 전체 애플리케이션은 배치하지 않습니다.
helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
-
수신 컨트롤러
EXTERNAL-IP
주소를 찾습니다.STANDBY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
-
MuShop 네임스페이스를 생성합니다.
kubectl create namespace mushop
-
전자 지갑에 대한 암호를 생성합니다.
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 콘솔로 이동하여 관찰 가능성 및 관리, 모니터링, 건전성 검사로 이동하고 건전성 검사 생성을 누른 후 다음 정보를 입력합니다.
- 이름:
FSDR-APP-HEALTHCHECK
를 입력합니다. - 대상: 기본 및 대기 로드 밸런서의 IP를 입력합니다.
- 프로토콜: http를 선택합니다.
- 포트: 80을 입력합니다.
- 대상 경로:
/
를 입력합니다. - 메소드: GET을 선택합니다.
- 시간 초과: 30을 입력합니다.
- 간격: 30초를 입력합니다.
작업 8: 트래픽 관리 조정 정책 구성(선택 사항)
OCI 콘솔로 이동하여 네트워킹, DNS 관리, 트래픽 관리 조정 정책으로 이동하고 트래픽 관리 조정 정책 생성을 누르고 다음 정보를 입력합니다.
- 이름:
FSDR-POLICY
을 입력합니다. - TTL: 60초를 입력합니다.
- Pool 1:
- 이름:
Primary
를 입력합니다. - 유형: A를 선택합니다.
- 데이터: 기본 로드 밸런서의 IP를 입력합니다.
- 이름:
- Pool 2:
- 이름:
Standby
을 입력합니다. - 유형: A를 선택합니다.
- Rdata: 대기 로드 밸런서의 IP를 입력합니다.
- 이름:
- 풀 우선순위 선택:
- Pool1
- Pool2
- 작업 7에서 생성된 건전성 검사를 연결합니다.
작업 9: OCI Full Stack DR 설정
-
두 영역 모두에서 DRPG를 만듭니다. OCI 콘솔로 이동하여 이전 및 재해 복구로 이동하고 DR 보호 그룹을 누릅니다.
primary-drpg-sydney
및standby-drpg-melbourne
를 예로 들 수 있습니다. -
DRPG를 연결합니다. OCI 콘솔로 이동하여 이전 및 재해 복구, DR 보호 그룹으로 이동하고 연관을 누릅니다.
-
DRPG(시드니 지역)에 리소스를 추가합니다. OCI 콘솔로 이동하여 마이그레이션 및 재해 복구, DR 보호 그룹, 멤버로 이동하고 멤버 추가를 누릅니다.
-
OKE 클러스터 및 Oracle Autonomous Database를 추가합니다.
-
DRPG(멜버른 지역)에 리소스 추가 - OKE 클러스터 및 Oracle Autonomous Database.
-
대기 영역(멜버른)에서 DR 계획을 생성합니다. OCI 콘솔로 이동하여 이전 및 재해 복구, DR 보호 그룹, 계획으로 이동하고 계획 생성을 누릅니다.
다음 이미지는 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와 같은 추가 계획 그룹이 생성됩니다.
-
-
전환을 수행합니다. 이 단계는 대기 사이트(멜버른)에서 수행해야 합니다.
OCI 콘솔로 이동하여 마이그레이션 및 재해 복구, DR 보호 그룹으로 이동하고 DR 계획 실행을 누릅니다.
작업 10: 응용 프로그램 테스트 및 검증
대기 영역에서 애플리케이션에 액세스하여 모든 것이 작동하는지 확인합니다. 애플리케이션은 https://mushop.domain.com
에서 액세스할 수 있거나 http://standbyloadbalancerIP.com
주소를 사용해야 합니다.
standby database가 완전히 작동 중임을 나타내는 카탈로그 항목에 액세스할 수 있는지 확인합니다.
참고: 이 자습서에서는 OCI 로드 밸런서 및 OCI 웹 애플리케이션 방화벽을 사용하는 SSL 인증서를 포함하는 단계를 제외했습니다. 이 두 구성 요소는 운용 환경에 추가할 수 있습니다.
다음 단계
OCI Kubernetes Engine에 배포된 마이크로서비스 기반의 전자 상거래 애플리케이션을 OCI Full Stack DR 서비스로 구성하여 웜 대기 모드에서 재해 복구를 가능하게 하는 방법을 확인했습니다. 이 애플리케이션이 수동 개입 없이 원활하게 페일오버될 수 있는 방법을 보여주었습니다. 자세한 내용은 관련 링크 섹션의 OCI Full Stack DR 설명서를 참조하십시오.
관련 링크
확인
-
작성자 - Venugopal Naik(Principal Cloud Architect)
-
제공자 - Raphael Teixeira(FSDR 기술 직원 수석 멤버), Suraj Ramesh(MAA 수석 제품 관리자)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Automate a Switchover and Failover Plan for a Demo Application Deployed on OCI Kubernetes Engine with OCI Full Stack Disaster Recovery
G23617-01
December 2024