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
-
Ansibleコントローラの前提条件をインストールします。
ansible-playbook -i hosts requirements.yml
ansible-galaxy collection install -r collections/requirements.yml --force
-
ターゲットEC2 DBインスタンスをセットアップします。
ansible-playbook -i hosts ora_dr_setup.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
-
ソースデータベースボリュームとターゲットデータベースボリューム間にFSx ONTAP SnapMirror関係を設定します。
ansible-playbook -i hosts ontap_setup.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
-
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
-
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
-
フェイルオーバーを実行し、ターゲットEC2 DBインスタンスでOracleデータベースをリカバリします。テストを行い、HA / DR構成を検証します。
ansible-playbook -i hosts ora_recovery.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
-
フェイルオーバーテスト後に再同期を実行し、レプリケーションモードでデータベースボリュームのSnapMirror関係を再確立します。
ansible-playbook -i hosts ontap_ora_resync.yml -u ec2-user --private-key db2.pem -e @vars/fsx_vars.yml
追加情報の参照先
NetApp 解決策 自動化の詳細については、次のWebサイトを参照してください。 "NetApp 解決策の自動化"