Skip to main content
NetApp database solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

AWS FSx ONTAP 에서 자동화된 Oracle HA/DR

기여자 kevin-hoke

NetApp 솔루션 엔지니어링 팀

이 솔루션은 AWS FSx ONTAP Oracle 데이터베이스 스토리지로, EC2 인스턴스를 AWS의 컴퓨팅 인스턴스로 사용하여 Oracle 데이터베이스 고가용성 및 재해 복구(HA/DR)를 구성하기 위한 Ansible 기반 자동화 툴킷을 제공합니다.

목적

이 툴킷은 FSx ONTAP 스토리지와 EC2 컴퓨팅 인스턴스를 사용하여 AWS 클라우드에 배포된 Oracle 데이터베이스를 위한 고가용성 및 재해 복구(HR/DR) 환경을 설정하고 관리하는 작업을 자동화합니다.

이 솔루션은 다음과 같은 사용 사례를 해결합니다.

  • HA/DR 대상 호스트 설정 - 커널 구성, Oracle 구성을 소스 서버 호스트와 일치시킵니다.

  • FSx ONTAP 설정 - 클러스터 피어링, vserver 피어링, 소스에서 타겟으로 Oracle 볼륨 스냅미러 관계 설정.

  • 스냅샷을 통해 Oracle 데이터베이스 데이터 백업 - crontab에서 실행

  • 스냅샷을 통해 Oracle 데이터베이스 아카이브 로그 백업 - crontab에서 실행

  • HA/DR 호스트에서 장애 조치 및 복구 실행 - HA/DR 환경 테스트 및 검증

  • 장애 조치 테스트 후 재동기화 실행 - HA/DR 모드에서 데이터베이스 볼륨 스냅미러 관계 재설정

대상

이 솔루션은 다음과 같은 사람들을 위해 만들어졌습니다.

  • 고가용성, 데이터 보호 및 재해 복구를 위해 AWS에 Oracle 데이터베이스를 설정한 DBA입니다.

  • AWS 클라우드에서 스토리지 수준 Oracle HA/DR 솔루션에 관심이 있는 데이터베이스 솔루션 아키텍트입니다.

  • Oracle 데이터베이스를 지원하는 AWS FSx ONTAP 스토리지를 관리하는 스토리지 관리자입니다.

  • AWS FSx/EC2 환경에서 HA/DR을 위해 Oracle 데이터베이스를 구축하고 싶어하는 애플리케이션 소유자입니다.

특허

이 GitHub 저장소의 콘텐츠에 액세스하거나 다운로드, 설치 또는 사용함으로써 귀하는 본 라이선스에 명시된 조건에 동의하는 것입니다."라이센스 파일" .

참고 이 GitHub 저장소의 콘텐츠를 사용하여 파생 작품을 제작 및/또는 공유하는 데에는 특정 제한이 있습니다. 콘텐츠를 사용하기 전에 라이선스 조건을 꼭 읽어보세요. 모든 약관에 동의하지 않을 경우, 이 저장소의 콘텐츠에 접근하거나 다운로드하거나 사용하지 마십시오.

솔루션 구축

배포를 위한 전제 조건

Details

배포에는 다음과 같은 전제 조건이 필요합니다.

Ansible v.2.10 and higher
ONTAP collection 21.19.1
Python 3
Python libraries:
  netapp-lib
  xmltodict
  jmespath
AWS FSx storage as is available
AWS EC2 Instance
  RHEL 7/8, Oracle Linux 7/8
  Network interfaces for NFS, public (internet) and optional management
  Existing Oracle environment on source, and the equivalent Linux operating system at the target

툴킷을 다운로드하세요

Details
git clone https://github.com/NetApp/na_ora_hadr_failover_resync.git

전역 변수 구성

Details

Ansible 플레이북은 변수 기반으로 운영됩니다. 일반적인 구성을 보여주기 위해 예제 전역 변수 파일 fsx_vars_example.yml이 포함되었습니다. 주요 고려 사항은 다음과 같습니다.

ONTAP - retrieve FSx storage parameters using AWS FSx console for both source and target FSx clusters.
  cluster name: source/destination
  cluster management IP: source/destination
  inter-cluster IP: source/destination
  vserver name: source/destination
  vserver management IP: source/destination
  NFS lifs: source/destination
  cluster credentials: fsxadmin and vsadmin pwd to be updated in roles/ontap_setup/defaults/main.yml file
Oracle database volumes - they should have been created from AWS FSx console, volume naming should follow strictly with following standard:
  Oracle binary: {{ host_name }}_bin, generally one lun/volume
  Oracle data: {{ host_name }}_data, can be multiple luns/volume, add additional line for each additional lun/volume in variable such as {{ host_name }}_data_01, {{ host_name }}_data_02 ...
  Oracle log: {{ host_name }}_log, can be multiple luns/volume, add additional line for each additional lun/volume in variable such as {{ host_name }}_log_01, {{ host_name }}_log_02 ...
  host_name: as defined in hosts file in root directory, the code is written to be specifically matched up with host name defined in host file.
Linux and DB specific global variables - keep it as is.
  Enter redhat subscription if you have one, otherwise leave it black.

호스트 변수 구성

Details

호스트 변수는 {{host_name}}.yml이라는 이름의 host_vars 디렉토리에 정의됩니다. 일반적인 구성을 보여주기 위해 호스트 변수 파일 host_name.yml의 예가 포함되어 있습니다. 주요 고려 사항은 다음과 같습니다.

Oracle - define host specific variables when deploying Oracle in multiple hosts concurrently
  ansible_host: IP address of database server host
  log_archive_mode: enable archive log archiving (true) or not (false)
  oracle_sid: Oracle instance identifier
  pdb: Oracle in a container configuration, name pdb_name string and number of pdbs (Oracle allows 3 pdbs free of multitenant license fee)
  listener_port: Oracle listener port, default 1521
  memory_limit: set Oracle SGA size, normally up to 75% RAM
  host_datastores_nfs: combining of all Oracle volumes (binary, data, and log) as defined in global vars file. If multi luns/volumes, keep exactly the same number of luns/volumes in host_var file
Linux - define host specific variables at Linux level
  hugepages_nr: set hugepage for large DB with large SGA for performance
  swap_blocks: add swap space to EC2 instance. If swap exist, it will be ignored.

DB 서버 호스트 파일 구성

Details

AWS EC2 인스턴스는 기본적으로 호스트 명명에 IP 주소를 사용합니다. Ansible의 호스트 파일에 다른 이름을 사용하는 경우, 소스 서버와 대상 서버 모두에 대해 /etc/hosts 파일에 호스트 이름 확인을 설정합니다. 다음은 예입니다.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.30.15.96 db1
172.30.15.107 db2

플레이북 실행 - 순서대로 실행

Details
  1. Ansible 컨트롤러를 설치하기 위한 전제 조건입니다.

    ansible-playbook -i hosts requirements.yml
    ansible-galaxy collection install -r collections/requirements.yml --force
  2. 대상 EC2 DB 인스턴스를 설정합니다.

    ansible-playbook -i hosts ora_dr_setup.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
  3. 소스 및 대상 데이터베이스 볼륨 간에 FSx ONTAP 스냅미러 관계를 설정합니다.

    ansible-playbook -i hosts ontap_setup.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
  4. crontab의 스냅샷을 통해 Oracle 데이터베이스 데이터 볼륨을 백업합니다.

    10 * * * * cd /home/admin/na_ora_hadr_failover_resync && /usr/bin/ansible-playbook -i hosts ora_replication_cg.yml -u ec2-user --private-key db1.pem -e @vars/fsx_vars.yml >> logs/snap_data_`date +"%Y-%m%d-%H%M%S"`.log 2>&1
  5. crontab의 스냅샷을 통해 Oracle 데이터베이스 아카이브 로그 볼륨을 백업합니다.

    0,20,30,40,50 * * * * cd /home/admin/na_ora_hadr_failover_resync && /usr/bin/ansible-playbook -i hosts ora_replication_logs.yml -u ec2-user --private-key db1.pem -e @vars/fsx_vars.yml >> logs/snap_log_`date +"%Y-%m%d-%H%M%S"`.log 2>&1
  6. 대상 EC2 DB 인스턴스에서 Oracle 데이터베이스를 장애 조치(failover)하고 복구합니다. HA/DR 구성을 테스트하고 검증합니다.

    ansible-playbook -i hosts ora_recovery.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
  7. 장애 조치 테스트 후 재동기화를 실행합니다. 복제 모드에서 데이터베이스 볼륨 스냅미러 관계를 다시 설정합니다.

    ansible-playbook -i hosts ontap_ora_resync.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml

추가 정보를 찾을 수 있는 곳

NetApp 솔루션 자동화에 대해 자세히 알아보려면 다음 웹사이트를 검토하세요."NetApp 솔루션 자동화"