Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

AWS FSx ONTAPでのOracle HA / DRの自動化

共同作成者

NetAppソリューションエンジニアリングチーム

この解決策にはAnsibleベースの自動化ツールキットが用意されており、AWS FSx ONTAPをOracleデータベースストレージとして、EC2インスタンスをAWSのコンピューティングインスタンスとして使用して、Oracleデータベースの高可用性とディザスタリカバリ(HA / DR)を構成できます。

目的

このツールキットを使用すると、AWSクラウドに導入されたOracleデータベース(FSx ONTAPストレージとEC2コンピューティングインスタンス)に対して、高可用性とディザスタリカバリ(HR/DR)環境のセットアップと管理のタスクが自動化されます。

この解決策 は、次のユースケースに対応します。

  • ソースサーバホストと一致するように、HA/DRターゲットホスト-カーネル構成とOracle構成をセットアップします。

  • FSx ONTAP -クラスタピアリング、SVMピアリング、OracleボリュームSnapMirror関係をソースからターゲットに設定します。

  • スナップショットによるOracleデータベースデータのバックアップ- crontabの実行

  • SnapshotによるOracleデータベースアーカイブログのバックアップ- execute off crontab

  • HA / DRホストでフェイルオーバーとリカバリを実行- HA / DR環境をテストして検証

  • フェイルオーバーテスト後に再同期を実行-データベースボリュームの再確立HA / DRモードでのSnapMirror関係

対象者

この解決策 は、次のユーザーを対象としています。

  • 高可用性、データ保護、ディザスタリカバリを実現するために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のhostsファイルに異なる名前を使用する場合は、ソースサーバとターゲットサーバの両方について、/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

Playbookの実行-順番に実行

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 SnapMirror関係を設定します。

    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のSnapshotを使用して、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データベースをリカバリします。テストを行い、HA / DR構成を検証します。

    ansible-playbook -i hosts ora_recovery.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
  7. フェイルオーバーテスト後に再同期を実行し、レプリケーションモードでデータベースボリュームのSnapMirror関係を再確立します。

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

追加情報の参照先

NetApp 解決策 自動化の詳細については、次のWebサイトを参照してください。 "NetApp 解決策の自動化"