본문 바로가기
2. 기본 인프라 IaaS

Full Stack Disaster Recovery (FSDR)를 사용하여 자동화된 DR 파이프라인 구성하기 - 5편, DR Execution

by 아재핑 2024. 3. 11.

OCI FSDR 구성 1편
OCI FSDR 구성 2편
OCI FSDR 구성 3편
OCI FSDR 구성 4편
OCI FSDR 구성 5편
OCI FSDR 구성 6편
 
이전편에서는 리전별로 DRPG에 DR Member를 등록하는 방법에 대해 알아봤습니다.
 
5편에서는 DR Execute Plan 을 생성하는 법을 알아보도록 하겠습니다.
 
DRPG에서 Execute Plan는 DR 전환을 위한 파이프라인 순서 구성을 의미합니다.
 
마찬가지로 본편에 사용되는 용어들은 2편을 참고해주시기 바랍니다.
 

1. 춘천 리전 (Standby) DRPG에 Plan 추가하기

DR Plan 은  Switchover 와 Failover 로 분류됩니다. 

  • Switchover : 유지보수나 장애복구 훈련같은 계획된 DR 상황
  • Failover :  실제 장애 상황

두 개의 플랜은 DR 전환이라는 동일한 기능을 수행하나,  내부 수행 프로세스에 차이가 있습니다.
 
Failover 같은 경우 Primary 리전이 불능인 상황을 가정하기 때문에, Primary 측에서 동작하는 별도의 프로세스 없이 수행됩니다.
 
기존 인스턴스를 중지시키는 것 처럼, Primary  리전 장애상황 시 수행되기 어려운 동작들이 그 예입니다.

Switchover Plan

 

Failover Plan

 
DR Plan은 Standby 리전에 생성되어야 합니다.  최악의 경우, 리전 장애로 인하여 FSDR 서비스 외에 Primary 리전에 접근이 불가 할 수 있기 때문입니다.

  • 춘천 리전 > 三 메뉴 > Migration & Disaster Recovery > DR Protection Group > Plans > Create Plan

  • 1분 이내로 생성되며, 생성된 Switchover Plan은 다음과 같이 확인됩니다.

 

  • Built-in Prechecks - 앱, DB, 볼륨 그룹 및 로드 밸런서 전환에 대한 사전 확인입니다.
  • Update Source Load Balancers' Backend Sets - Primary 리전의 로드 밸런서 백엔드 세트에서 백엔드 서버를 제거합니다.
  • Stop Compute Instances - Primary 리전의 앱 가상 머신을 중지합니다.
  • Switchover Volume Groups - Stanby 지역의 Volume Group으로 Switchover 합니다.
  • Switchover Autonomous Databases - Primary 리전의 ATP DB를 Standby 리전으로 Switchover 합니다.
  • Launch Compute Instances - Standby 리전에 가상 머신을 생성합니다.
  • Reverse Volume Groups' Replication - 전환된 Primary 리전 (춘천) 에서 Standby 리전 (서울)으로 역방향 볼륨 그룹 복제를 설정합니다
  • Terminate Compute Instances -  기존 Primary 리전의 컴퓨팅 인스턴스를 종료합니다. 기본적으로는 비활성화되어 있으며필요에 따라 활성화할 수 있습니다.
  • Remove Compute Instances - 기존 Primary 리전의DRPG에서 컴퓨팅 인스턴스를 제거합니다.
  • Terminate Volume Groups - 기존 Primary 리전의 볼륨 그룹을 종료합니다. 기본적으로 계획 그룹은 비활성화되어 있으며 요구 사항에 따라 활성화할 수 있습니다
  • Remove Volume Groups From DR Protection Group - 기존 Primary 리전의 DRPG에서 볼륨 그룹 제거
  • Update Destination Load Balancers' Backend Sets - 전환된 Primary 리전(춘천) 지역의 로드 밸런서 백엔드 세트에 백엔드 서버를 추가합니다. 백엔드 서버 IP는 전환된 Primary 리전(춘천)에서 시작된 VM을 기반으로 매핑됩니다.

 

2.  사용자 정의 그룹 계획 추가

Switchover 가 동작하는 과정에서 실행되는 User Defined Plan을 추가합니다.
필수요소는 아니지만 Switchover 전환시 편의를 올려주는 Optional한 기능입니다.
본 핸즈온에서는 DR과정에서 DB Wallet 복원과 Application 재설정 과정이 필요한 것을 가정하에 작성하였습니다.
 
사용자 정의 그룹을 추가하기 전에 생성된 Switchover Plan의 수행순서를 조정하도록 하겠습니다.

2.1  데이터베이스 지갑 복원

mushop Application의 데이터베이스는 ATP를 사용하고 있으므로,  DB Connection을 위해 Wallet이 필요합니다.
 
Switchover로 생성된 VM에서도 춘천리전의 ATP와 Connection 을 위해 Wallet 복원이 필요합니다.
 
VM 내 /home/opc/fsdrsscripts/ 경로에 ATP 지갑 복원을 위한  mushop_db_wallet_restore.sh 를 생성하였습니다.

#!/bin/bash -x

if [ $# != 1 ]
then
  echo "Usage :"
  echo $0 "<newregion>"
  exit 1
else
  current_time=$(date "+%Y%m%d%H%M%S")
  current_db_wallet_dir=/usr/lib/oracle/19.10/client64/lib/network/admin
  backup_db_wallet_dir=${current_db_wallet_dir}.backup.${current_time}
  new_db_wallet_contents=/home/opc/atpwallet_$1/*

  echo "Saving original db wallet directory \"${current_db_wallet_dir}\" to \"${backup_db_wallet_dir}\"..."
  cp -a $current_db_wallet_dir $backup_db_wallet_dir
  echo "Overwriting original db wallet directory \"${current_db_wallet_dir}\" with contents from \"${new_db_wallet_contents}\"..."
  cp $new_db_wallet_contents $current_db_wallet_dir
fi

 

  • 춘천 리전 > 三 메뉴 > Migration & Disaster Recovery > DR Protection Group > Plans > Plan Groups > Add Group

  • Group Name 설정 , Add after, Group :Update Destination Load Balancer's Backends Set, Add Step

* Add after , Group 명을 지정하는 것은 지정한 Group 뒤에 수행되도록 순서를 설정하는 역할을 합니다.

  • Add Step 후 다음과 같이 설정해줍니다. mushop VM 1,2 서버에 적용될 수 있도록 Step을 각각 추가 해야합니다.
  • VM 내 로컬에서 스크립트를 실행할 수 있도록 경로를 입력해줍니다. 해당스크립트는 전환될 리전의 리전명을 변수로 받습니다.
/usr/bin/sudo /home/opc/fsdrsscripts/mushop_db_wallet_restore.sh chuncheon

2.2  어플리케이션 재설정 

어플리케이션 내 설정파일에서 리전 변수명들을 수정하는 스크립트입니다. Switchover 과정에서 내부 어플리케이션 설정 내 리전과 관련된 변수들이 변경됩니다.
 
VM 내 /home/opc/fsdrsscripts/ 경로에 Mushop App 설정변경을 위한  mushop_reconfigure.sh 를 생성하였습니다.

#!/bin/bash -x

if [ $# != 2 ]
then
  echo "Usage :"
  echo $0 "<oldregion> <newregion>"
  exit 1
else

  old_region=$1
  new_region=$2

  current_time=$(date "+%Y%m%d%H%M%S")
  current_env_file=/root/mushop.env
  backup_current_env_file=${current_env_file}.backup.${current_time}
  new_env_file=/root/mushop.new.env

  echo "Backing up original env file \"${current_env_file}\" to \"${backup_current_env_file}\"..."
  cp $current_env_file $backup_current_env_file

  sed -i "s/${old_region}-1/${new_region}-1/g" $new_env_file

  echo "Overwriting original env file \"${current_env_file}\" with new env file \"${new_env_file}\"..."
  cp $new_env_file $current_env_file

  echo "Stopping MuShop services ...."
  systemctl stop mushop_api
  systemctl stop mushop_catalogue

  echo "Starting and enabling MuShop services ...."
  systemctl start mushop_api
  systemctl enable mushop_api
  systemctl start mushop_catalogue
  systemctl enable mushop_catalogue
  • 춘천 리전 > 三 메뉴 > Migration & Disaster Recovery > DR Protection Group > Plans > Plan Groups > Add GroupGroup Name 설정 , Add after, Group :Restore Databaase Wallet, Add Step

* Add after , Group 명을 지정하는 것은 지정한 Group 뒤에 수행되도록 순서를 설정하는 역할을 합니다.
 

  • mushop_reconfigure.sh가 실행될 수 있도록 스크립트 커맨드를 입력합니다. 해당스크립트 실행을 위해  현재리전 변경될 리전을 변수로 명시해주어야 합니다.
/usr/bin/sudo /home/opc/fsdrsscripts/mushop_reconfigure.sh seoul chuncheon

  • 이전 그룹과 마찬가지로 mushop vm 1,2 번에 적용될 수 있도록 각각 추가해줍니다.

 

3.  계획 그룹 확인

  • Primary DRPG와 Standby DRPG에 추가한 멤버를 기반으로 Switchover 계획을 생성하여 11개의 Built-in 계획 그룹이 기본으로 생성되었습니다.
  • Mushop 애플리케이션 전환 요구 사항 (DB Wallet 복원, 어플리케이션 설정 변경)에 따라 두 개의 User Defined 계획 그룹을 수동으로 생성했습니다 .
  •  아래와 같은 순서대로 Switchover Plan 이 수행됩니다. 계획 순서 변경이 필요하실 경우 Actions > Reorder Groups에서 순서 변경이 가능합니다.

 

4.  Switchover 실행 계획 확인

Run Prechecks(사전 확인 실행)는 Plan Group 1번의 모든 Built-in Precheck을 병렬로 실행합니다 .

 
Prechecks  은 실제 Switchover 실행이 아닌 사전 확인만 수행합니다 .실제 전환 계획을 실행하기 위해 사전 점검을 통해 검증하는 것은 필수입니다.

  • 춘천 리전 > 三 메뉴 > Migration & Disaster Recovery > DR Protection Group > Plans >  Run Precheks

  • Plan execution name 은 Optional 입니다. 아래와 같이 임의로 설정한 후 Run Precheks를 수행합니다.

 
Plan excution group의 상태가 Queued > In Progress 로 변경됩니다. 아래와 같이 최종적으로 모든 Status가 Succeded로 변경된다면 Prechecks가 완벽하게 수행된 것입니다.
아래와 같이 Built-in Plan 뿐만 아니라, 추가한 User Defined Plan 까지 모두 성공한 것을 확인하였습니다. 
 

 
다음 포스팅에서 마지막 단계인 Switchvover를 실행하여 리전 간 DR 전환을 수행해보도록 하겠습니다.
 

작성자: 최동혁 / Oracle Cloud Architect

개인 시간을 투자하여 작성된 글로서, 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

댓글