주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마칠 때는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Cloud Infrastructure Full Stack Disaster Recovery로 PostgreSQL Database에 대한 스위치오버 및 페일오버 자동화
소개
Oracle Cloud Infrastructure Full Stack Disaster Recovery(OCI Full Stack DR)는 클릭 한 번으로 전 세계 Oracle Cloud Infrastructure(OCI) 리전 간 컴퓨트, 데이터베이스 및 애플리케이션 전환을 통합관리합니다. 고객은 전문화된 관리 또는 변환 서버 없이도 기존 인프라, 데이터베이스 또는 애플리케이션을 재설계하거나 재설계하지 않고도 하나 이상의 비즈니스 시스템을 복구하는 데 필요한 단계를 자동화할 수 있습니다.
OCI Full Stack DR은 매우 유연한 서비스로, DR(재해 복구) 계획의 사용자 정의 계획 그룹을 활용하여 OCI Object Storage 버킷 DR 작업을 처리할 수 있습니다.
배포 아키텍처
주: 기본 영역은 프랑크푸르트이고 DR 영역은 런던입니다.
목표
- OCI Full Stack DR을 통해 PostgreSQL 데이터베이스에 대한 전환 및 복구를 자동화합니다.
필요 조건
-
OCI 전체 스택 DR에 대해 필요한 OCI IAM(Oracle Cloud Infrastructure Identity and Access Management) 정책을 관리자 권한 또는 구성합니다. 자세한 내용은 OCI 전체 스택 DR을 사용하도록 IAM(ID 및 액세스 관리) 정책 구성 및 OCI 전체 스택 DR 정책을 참조하십시오.
-
OCI 전체 스택 DR이
sudo
명령을 실행하여 스위치오버 중 명령을 마운트 및 마운트 해제하므로 기본 및 대기 모두에서 컴퓨트 인스턴스 실행 명령 플러그인을 사용으로 설정해야 합니다. OCI 컴퓨트 인스턴스의 실행 명령에 대한 자세한 내용은 OCI 컴퓨트 인스턴스에서 명령 실행을 참조하십시오. -
OCI Full Stack DR과 함께 실행 명령을 사용합니다. 자세한 내용은 Oracle Cloud Infrastructure Full Stack Disaster Recovery의 실행 명령을 사용하여 커스터마이징 스크립트 호출을 참조하십시오.
-
동일한 테넌시에 위치한 두 DRG(동적 경로 지정 게이트웨이) 간에 RPC(원격 피어링 접속)를 설정합니다. 자세한 내용은 업그레이드된 DRG를 통한 원격 VCN 피어링을 참조하십시오.
-
두 시스템이 데이터베이스 복제를 위해 PostgreSQL 포트
5432
에서 통신할 수 있는지 확인하고, 각 보안 목록 또는 네트워크 보안 그룹을 구성합니다. -
Bastion as a Service 또는 Bastion 호스트를 사용하여 PostegreSQL 서버에 연결합니다.
-
OCI Object Storage 버킷(각 지역에 하나씩)
작업 1: PostgreSQL 설치 및 구성
-
PostgreSQL를 설치하려면 즐겨찾는 SSH 클라이언트를 사용하여 호스트에 연결하고 다음 명령을 실행합니다.
sudo dnf install -y postgresql postgresql-server postgresql-contrib sudo /usr/bin/postgresql-setup initdb sudo systemctl enable postgresql sudo systemctl start postgresql
-
Linux 방화벽이 연결을 수신하도록 설정합니다.
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload
-
postgresql.conf
(xxxx에 있음) 파일을 편집하여 연결을 허용하고 다음과 같이wal
매개변수를 변경합니다.... listen_addresses = '*' ... wal_level = logical wal_log_hints = on ...
-
데이터베이스에 연결한 다음 복제 사용자를 만듭니다.
sudo su postgres psql
CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'YourUserPassword';
-
이 사용자를
pg_hba.conf
(xxxx 파일에 있음) 파일에 추가합니다.host all all all md5 host replication replica_user <IP Host 1> md5 host replication replica_user <IP Host 2> md5
-
PostgreSQL 데이터베이스를 다시 시작하여 변경 사항을 적용합니다.
sudo systemctl restart postgresql
-
두번째 서버에서 이 프로세스를 반복합니다.
작업 2: PostgreSQL 데이터베이스 복제
이 작업에서는 고유 PostgreSQL 데이터베이스 복제를 구성합니다.
-
기본 데이터베이스에 연결하고 복제본 슬롯을 만듭니다.
sudo su postgres psql
select pg_create_physical_replication_slot('replica_0');
-
보조 데이터베이스에 연결하고 다음 명령을 실행하여 복제를 만듭니다.
sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 1> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
-
기본 데이터베이스에서 복제가 진행 중인지 확인합니다.
select * from pg_stat_replication;
스트리밍 프로세스에서 한 줄을 볼 수 있어야 합니다.
작업 3: Switchover Plan 생성
작업 3.1: DRPG(재해 복구 보호 그룹) 만들기 및 연결
-
기본 영역(프랑크푸르트)에서 햄버거 메뉴를 누르고 마이그레이션 및 재해 복구, 재해 복구, 재해 복구 보호 그룹 및 재해 복구 보호 그룹 생성으로 이동합니다.
-
대기 영역(런던)에서 햄버거 메뉴를 누르고 마이그레이션 및 재해 복구, 재해 복구, 재해 복구 보호 그룹 및 재해 복구 보호 그룹 생성으로 이동합니다.
-
기본 영역(프랑크푸르트)에서 다음 정보를 입력하고 연관을 누릅니다.
- 역할:
Primary
. - 피어 영역:
UK South (London)
. - 피어 DR 보호 그룹:
postgresql-lon
.
- 역할:
작업 3.2: 기본 및 대기 DRPG에 멤버 추가
-
기본 DRPG(
postgresql-fra
)에서 멤버를 선택하고 컴퓨트 VM(postgresql01
)을 멤버로 추가합니다.주: 컴퓨트를 멤버로 추가하는 동안 PostgreSQL 데이터베이스에 대한 활성-수동 설정이 있으므로 컴퓨트 인스턴스 유형에서 비이동 인스턴스를 선택합니다.
-
대기 DRPG(
postgresql-lon
)에서 멤버를 선택하고 컴퓨트 VM(postgresql02
)을 멤버로 추가합니다.주: 컴퓨트를 멤버로 추가하는 동안 PostgreSQL 데이터베이스에 대한 활성-수동 설정이 있으므로 컴퓨트 인스턴스 유형에서 비이동 인스턴스를 선택합니다.
작업 3.3: Standby DRPG(런던)에서 Switchover 계획 생성
전환 계획: 기본 DRPG에서 대기 DRPG로 서비스의 계획된 전환을 수행하는 DR 계획의 한 유형입니다.
-
대기 DRPG
postgresql-lon
에서 전환 계획을 생성합니다. -
플랜을 선택하고 플랜 생성을 누릅니다.
-
이름을
postgresql-switchover-frankfurt-london
으로 입력하고 계획 유형을Switchover (planned)
로 선택합니다. -
Create를 누릅니다.
주: 대기 DRPG(런던)에서 전환 계획을 생성해야 합니다.
작업 3.4: 다양한 사용자 정의 계획 그룹을 사용하여 전환 계획 사용자 정의
컴퓨트(비이동 인스턴스)를 두 DR 보호 그룹의 멤버로 추가했습니다. 추가적인 사용자 정의 계획 그룹으로 전환 계획을 사용자정의해야 합니다. 또한 다음과 같은 bash 스크립트를 생성하여 OCI Object Storage에 업로드해야 하므로 switchover 중 해당 스크립트를 호출할 수 있습니다.
-
stop_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql
-
promote_postgresql.sh
.#!/bin/bash sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_1');"
-
change_replication_direction.sh
.#!/bin/bash sudo rm -rv /var/lib/pgsql/data/ sudo sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_1 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
참고: 이 스크립트는 런던 지역의 버킷에 업로드해야 합니다.
DR 전환에 대한 일반적인 워크플로우는 다음과 같습니다.
-
프랑크푸르트 지역에서 PostgreSQL 데이터베이스 정지: 계획 그룹에는 프랑크푸르트 지역에서 PostgreSQL 데이터베이스를 정지하는 단계가 있습니다.
-
런던 지역에서 PostgreSQL 데이터베이스 홍보: 플랜 그룹에는 런던 지역에서 PostgreSQL 데이터베이스를 홍보하는 단계가 있습니다.
-
PostgreSQL 데이터베이스 복제 방향 변경: 계획 그룹에는 PostgreSQL 데이터베이스 복제 방향(LON-FRA)을 변경하는 단계가 포함됩니다.
주: 단계가 동일한 순서로 실행되는지 확인하십시오.
다음 사용자 정의 계획 그룹을 생성합니다.
-
프랑크푸르트 지역에서 PostgreSQL 데이터베이스 정지 계획 그룹을 생성합니다.
-
계획 그룹에서 그룹 추가를 눌러 프랑크푸르트 영역에서 PostgreSQL 데이터베이스를 정지할 사용자정의 계획 그룹을 생성합니다. 그룹 이름을
Stop PostgreSQL Database at Frankfurt Region
으로 입력합니다. -
단계 추가를 누르고 다음 정보를 입력합니다. 계획 그룹에 하나의 단계가 추가됩니다.
-
영역을
Frankfurt
로 선택하고 대상 인스턴스를postgresql01
로 선택해야 합니다. 객체 스토리지 스크립트 실행을 선택하면 스크립트의 위치가 OCI Object Storage 버킷posgres-dr-lon
를 선택합니다. -
스크립트 위치와 함께 스크립트
stop_postgresql.sh
세부정보를 입력합니다. 이 스크립트는 FRA 영역에서 PostgreSQL 데이터베이스를 종료합니다. -
단계 추가를 누르고 추가된 단계를 확인합니다.
-
-
-
런던 지역에서 PostgreSQL 데이터베이스 홍보 계획 그룹을 생성합니다.
-
계획 그룹에서 그룹 추가를 눌러 런던에서 PostgreSQL 데이터베이스를 승격할 사용자정의 계획 그룹을 생성합니다. 그룹 이름을
Promote PostgreSQL Database at London Region
으로 입력합니다. -
단계 추가를 누르고 다음 세부정보를 입력합니다. 계획 그룹에 하나의 단계가 추가됩니다.
-
영역을
London
로, 대상 인스턴스를postgresql02
로 선택해야 합니다. 객체 스토리지 스크립트 실행을 선택하면 스크립트의 위치가 OCI Object Storage 버킷posgres-dr-lon
을 선택합니다. -
스크립트 위치와 함께 스크립트
promote_postgresql.sh
세부정보를 입력합니다. 이 스크립트는 FRA 영역에서 PostgreSQL 데이터베이스를 종료합니다. -
단계 추가를 누르고 추가된 단계를 확인합니다.
-
-
-
변경 PostgreSQL 데이터베이스 복제 방향 계획 그룹을 생성합니다.
-
계획 그룹에서 그룹 추가를 눌러 PostgreSQL 데이터베이스 복제 방향을 변경할 사용자정의 계획 그룹을 생성합니다. 그룹 이름을
Promote PostgreSQL Database at London Region
으로 입력합니다. -
단계 추가를 누르고 다음 정보를 입력합니다. 계획 그룹에 하나의 단계가 추가됩니다.
-
영역을
Frankfurt
로 선택하고 대상 인스턴스를postgresql01
로 선택해야 합니다. 객체 스토리지 스크립트 실행을 선택하고 스크립트 위치는 OCI Object Storage 버킷posgres-dr-lon
을 선택합니다. -
스크립트 위치와 함께 스크립트
change_replication_direction.sh
세부정보를 입력합니다. 이 스크립트는 FRA 영역에서 PostgreSQL 데이터베이스를 종료합니다. -
단계 추가를 누르고 추가된 단계를 확인합니다.
-
-
작업 4: 사전 검사 실행 및 전환 계획 실행
사전 검사 실행 옵션은 DR 계획의 모든 단계 및 해당 단계와 연관된 멤버에 대한 빠른 검증을 수행합니다.
-
전환 계획
postgresql-switchover-frankfurt-london
에서 사전 검사 실행을 눌러 사전 검사를 실행합니다.성공적으로 완료되었는지 확인합니다.
-
전환 계획
postgresql-switchover-frankfurt-london
에서 재해 복구 계획 실행을 눌러 계획을 실행합니다. -
계획의 상태를 확인하고 계획의 모든 단계가 성공했는지 확인합니다.
-
전환 계획은 모든 계획 그룹을 특정 순서로 수행합니다. 계획 실행이 성공하면 PostgreSQL 데이터베이스가 런던 지역의 마스터로 승격됩니다.
-
자동으로 역할이 DRPG에서 변경됩니다. 이제 런던은 기본이 될 것이며 프랑크푸르트는 대기 역할을 할 것입니다.
-
London에서 PostgreSQL 데이터베이스를 확인합니다.
작업 5: 대기 DRPG(프랑크푸르트)에서 스위치백으로 스위치오버 계획 생성
작업 5.1: 대기 DRPG에서 스위치오버 계획 만들기(런던)
-
대기 DRPG
postgresql-fran
에서 전환 계획을 생성합니다. -
플랜을 선택하고 플랜 생성을 누릅니다.
-
이름을
postgresql-switchover-london-frankfurt
으로 입력하고 계획 유형을Switchover (planned)
로 선택합니다. -
Create를 누릅니다.
주: 대기 DRPG(프랑크푸르트)에서 전환 계획을 생성해야 합니다.
작업 5.2: 다양한 사용자 정의 계획 그룹을 사용하여 전환 계획 사용자 정의
추가적인 사용자 정의 계획 그룹으로 전환 계획을 사용자정의해야 합니다. 또한 다음 Bash 스크립트를 생성하고 OCI Object Storage에 업로드해야 하므로 전환 중 해당 스크립트를 호출할 수 있습니다.
-
rewind_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo -u postgres pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -v -R -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
-
replicate_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
주: 이 스크립트는 프랑크푸르트 지역의 버킷에 업로드해야 합니다.
DR 전환에 대한 일반적인 워크플로우는 다음과 같습니다.
-
PostgreSQL 데이터베이스 되감기: 데이터베이스를 되감기할 계획 그룹입니다. 프랑크푸르트는 런던 데이터베이스의 콘텐츠를 동기화합니다.
-
PostgreSQL 데이터베이스 복제를 런던으로 재설정: 계획 그룹에는 프랑크푸르트에서 런던 지역으로 PostgreSQL 데이터베이스 복제를 시작하는 단계가 있습니다.
주: 단계가 동일한 순서로 실행되는지 확인하십시오.
다음 두 개의 사용자 정의 계획 그룹을 작성합니다.
-
PostgreSQL 데이터베이스 되감기 계획 그룹을 생성합니다.
-
계획 그룹에서 그룹 추가를 눌러 사용자 정의 계획 그룹을 생성하여 프랑크푸르트 영역에서 PostgreSQL 데이터베이스를 되감습니다. 그룹 이름을
Rewind PostgreSQL Databases at Frankfurt Region
으로 입력합니다. -
단계 추가를 누르고 다음 정보를 입력합니다. 하나의 단계가 계획 그룹에 추가됩니다.
-
영역을
Frankfurt
로 선택하고 대상 인스턴스를postgresql01
로 선택해야 합니다. 객체 스토리지 스크립트 실행을 선택하면 스크립트의 위치가 OCI Object Storage 버킷posgres-dr-lon
을 선택합니다. -
스크립트 위치와 함께 스크립트
rewind_postgresql.sh
세부정보를 입력합니다. 이 스크립트는 FRA 영역에서 PostgreSQL 데이터베이스를 종료합니다. -
단계 추가를 누르고 추가된 단계를 확인합니다.
-
-
-
런던에 대한 PostgreSQL 데이터베이스 복제 재설정 계획 그룹을 생성합니다.
-
계획 그룹에서 그룹 추가를 눌러 PostgreSQL 데이터베이스 복제를 런던으로 재설정할 사용자정의 계획 그룹을 생성합니다. 그룹 이름을
Promote PostgreSQL Database at London Region
으로 입력합니다. -
단계 추가를 누르고 다음 정보를 입력합니다. 계획 그룹에 하나의 단계가 추가됩니다.
-
영역을
London
로 선택하고 대상 인스턴스를postgresql02
로 선택해야 합니다. 객체 스토리지 스크립트 실행을 선택하면 스크립트의 위치가 OCI Object Storage 버킷posgres-dr-lon
를 선택합니다. -
스크립트 위치와 함께 스크립트
replicate_postgresql.sh
세부정보를 입력합니다. 이 스크립트는 FRA 영역에서 PostgreSQL 데이터베이스를 종료합니다. -
단계 추가를 누르고 추가된 단계를 확인합니다.
-
-
작업 6: 사전 검사 실행 및 전환 계획 실행
사전 검사 실행은 DR 계획의 모든 단계 및 해당 단계와 연관된 멤버에 대한 빠른 검증을 수행합니다.
-
전환 계획
postgresql-switchover-london-frankfurt
에서 사전 검사 실행을 눌러 사전 검사를 실행합니다.성공적으로 완료되었는지 확인합니다.
-
전환 계획
postgresql-switchover-london-frankfurt
에서 재해 복구 계획 실행을 눌러 계획을 실행합니다. -
계획의 상태를 확인하고 계획의 모든 단계가 성공했는지 확인합니다.
-
전환 계획은 모든 계획 그룹을 특정 순서로 수행합니다. 계획 실행이 성공하면 PostgreSQL 데이터베이스가 프랑크푸르트 지역의 마스터로 승격됩니다.
-
자동으로 역할이 DRPG에서 변경됩니다. 이제 프랑크푸르트는 주요 역할을 할 것이며 런던은 대기 역할을 할 것입니다.
-
Frankfurt에서 PostgreSQL 데이터베이스를 확인합니다.
다음 단계
OCI Full Stack DR을 사용하여 PostgreSQL 데이터베이스 전환을 자동으로 수행하고 재해 복구 작업을 다시 전환하는 방법을 배웠습니다. 자세한 내용은 관련 링크 섹션의 OCI 전체 스택 DR 설명서를 참조하십시오.
관련 링크
확인
-
작성자 - Raphael Teixeira(FSDR 기술 인력의 수석 멤버)
-
공헌자 - Ricardo Malhado(OCI 전문가를 위한 Hyperscaler), Suraj Ramesh(MAA의 수석 제품 관리자)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Automate Switchover and Failover for PostgreSQL Database with Oracle Cloud Infrastructure Full Stack Disaster Recovery
F96166-01
April 2024