Amazon Web Services ブログ

[SAP on AWS] 可用性と信頼性を実現する仕組み

アマゾンのCEOであるアンディ・ジャシーの言葉を借りれば、『経験のための圧縮アルゴリズムは存在しません』ということになります。5000を超えるSAPのお客様がAWSを利用されていることにより、AWSはSAPワークロードの革新のためのプラットフォームとなっています。AWSはお客様起点の行動指針に基づくというリーダーシップ・プリンシプルに基づき、SAPのお客様が世界中のAWSリージョン内で堅牢性と信頼性の高い且つスケーラブルなSAPシステムを構築できるよう、多様なツールやサービスを提供しております。このブログでは、AWSプラットフォーム上に信頼性の高いSAPシステムを構築するための複数のAWSサービスについて紹介します。

健全なバックアップポリシーは企業の事業継続と災害復旧(DR)戦略の中心となります。AWSに移行する際、お客様はAWSで利用できる新しいツールやサービスを採用することで、様々な障害からSAPアプリケーションを復旧するステップを簡素化することができます。

アプリケーションのバックアップポリシーを計画する際には、目標復旧時間(RTO)を最小限に抑えるために、ファイルバックアップとストレージスナップショットの組み合わせを検討すべきです。ミッションクリティカルなアプリケーションに対して、AWSのアベイラビリティーゾーン(Availability Zone, AZ)内で発生する障害だけでなく、リージョン全体に影響を与える障害からの保護が必要です。今回のブログにはこのトピックも展開しますが、深堀する前に、技術文書「Architecture Guidance for Availability and Reliability of SAP on AWS」に記載されたAWS上でのSAPシステムの設計原則を理解するのが重要です。

AWS上でバックアップポリシーを構築する

以下は、SAPアプリケーションとデータベースのバックアップポリシーを構築するために使用できる重要なサービスと機能の一部です。

SAP HANAデータベースのバックアップ

AWS Backint Agent for SAP HANAは、SAP HANAデータベースをAmazon Simple Storage Service(S3)バケットへの直接バックアップとSAP HANA CockpitなどのSAP管理ツールでのリストアのために使用されます。オプションとして、SAP Note 2935898の通り、SAP Backint Agent for Amazon S3を使用することもできます。また、SAP HANAデータベースのバックアップポリシーに、ストレージスナップショットベースのバックアップとリカバリーのプロシージャを追加することも可能です。AWS Launch Wizard for SAPを使用してSAP HANAをデプロイする際に、Amazon S3サービスとバックアップを統合するためのAWS Backint Agentのインストールを選択することができます。

AnyDBデータベースのバックアップ

SAPが稼働するAnyDB(非SAP HANA)データベースは、バックアップファイルを格納するために、Amazon Elastic Block Store(EBS)ボリュームにバックアップすることができます。バックアップが完了したら、AWS CLIでファイルをAmazon S3にアップロードできます。このプロセスはAWS Systems Manager(SSM)の機能を使用して自動化できます。

SAP HANA以外のデータベースをバックアップする場合、データベースとAWSのネイティブ機能を使った別のアプローチとして、以下のものがあります。

Oracleデータベース:

AWS上でOracle DBを使用してSAPを運用しているお客様は、Oracle Secure Backup(OSB) Cloud Moduleを使用して、OracleのバックアップをAmazon S3サービスに統合することができます。この機能はDatabase 9i Release 2以降で利用可能です。RMAN を使用する場合、複数のバックアップチャネルを使用してパフォーマンスを向上させることができます。

SAPワークロードをOracle DBで実行しているお客様は、AWSネイティブな機能であるAmazon EBS マルチボリュームのクラッシュ整合性のあるスナップショットを活用して、Oracle データベースのバックアップとリカバリーを実行することもできます。この手順では、スナップショットが増分であるため、ストレージコストを節約できます。Amazon EBS 高速スナップショット復元はリストア時間を改善します。このアプローチの利点については、Kellogg社様の事例をご覧ください。

SAP ASE データベース:

SAP ASE(Adaptive Server Enterprise)データベースでSAPワークロードを実行しているお客様は、Amazon S3をバックアップ・ストレージとして使用しています。このソリューションには、HTTPS 接続で Amazon S3 にデータを非同期に転送するために使用される AWS File Gateway が必要です。SAP はこのアプローチについて詳細な分析を行い、構成手順を含むソリューションを共有しています。

他のデータベースと同様に、SAP ASE データベースはバックアップとリストア操作に Amazon EBS スナップショットを活用するオプションを提供します。Amazon EBS スナップショットを使用して SAP ASE データベースのバックアップとリストア操作を実行および自動化するための詳細な手順については、このブログをご参照ください。

Microsoft SQL Server データベース:

Microsoft Windows上で動作するMS SQL Serverは、VSS (Volume Shadow Copy Service)機能を使用して一貫したDBバックアップを実行できます。VSSはAWS Backupと統合されており、バックアップとリストア操作の管理が容易になります。詳細な設定とテスト手順については、このブログをご参照ください。

サードパーティツールでバックアップ

多くのサードパーティ製エンタープライズバックアップツールは、Amazon S3へバックアップを読み書きすることができます。また、SAP backintインターフェイスと統合するのもサポートされているバックアップ方法です。既にご利用中のツールをAWSで利用し続けたい場合は、Amazon S3との統合についてベンダーにご確認ください。また、Linke Emory Cloud Backupのようなパートナーが提供するソリューションもあり、SAP HANA、Oracle、SAP ASEデータベースのバックアップをAmazon S3で直接保存とリカバリーすることができます。また、Commvault、Veritas、N2WS、Actifioなどのようなパートナーは、SAP HANAとAnyDBのデータベースバックアップをAmazon S3のバケットに直接書き込むことができます。これらのISVが提供するソリューションは、重複排除、暗号化、圧縮などの追加機能を提供し、EBSストレージの必要性を削減または取り除くことで、コストの節約を実現する可能性があります。

Amazon S3レプリケーション

Amazon S3レプリケーションは、ディザスタリカバリー(Disaster Recovery, DR)などの代替リカバリー目的で、Amazon S3バケットに保存されている SAP データベースバックアップのすべてまたはサブセットを、別のAmazon S3バケットにレプリケートするために使用できる機能です。Amazon S3クロスリージョンレプリケーションという機能は、ディザスタリカバリーの目的で、これらのファイルを別のAWSリージョンにレプリケートすることも実現可能です。また、Amazon S3レプリケーション時間制御機能により、AWSのサービスレベルアグリーメントに基づいて、予測可能な時間枠でAmazon S3オブジェクトをレプリケーションすることができます。Amazon S3のバックアップファイルをDRリージョンにレプリケートする際、DRリージョンでS3 標準 – 低頻度アクセス(S3 標準 – IA)クラスを選択することで、DRリージョンにバックアップを低コストで保存することができます。

AWS Backup

AWS Backupは、Amazon EBS、Amazon EFS、Amazon EC2、Amazon DynamoDB、Amazon Aurora、AWS Storage Gatewayなどのサービスのバックアップを管理するコントロールプレーンを提供します。また、ディザスタリカバリーのために、AWS Backupのバックアッププランはバックアップを別のリージョンにコピーすることもできます。SAPアプリケーションはAmazon EBS、Amazon EFS、Amazon EC2などのサービスを使用することが多く、AWS Backupでバックアップすることができます。

Amazon Elastic Block Store (EBS)スナップショットによるデータベースのバックアップ

データベースはスナップショットを使用してバックアップすることができます。スナップショットは増分方式で、デバイス上のブロックは最新のスナップショットの後に変更された分のみが保存されます。スナップショットは、/usr/sap/*や/sapmnt/*などのSAPファイルシステムをバックアップするのに適しています。EBSスナップショットを使用してデータベースをバックアップする場合は、データベースが「バックアップモード」になっていることを確認するか、一貫性のためにスナップショットが起動する前にデータベースをシャットダウンしてください。

データベースの「バックアップモード」は、アプリケーションの一貫性のあるスナップショットのために、ストレージエリアへのI/O操作を一時停止するために起動されます。SAP HANAを含め、最近のほとんどのデータベースは「バックアップモード」オプションを提供しています。LVMストライピングボリュームでデータベースを実行する場合、ボリュームグループ内のすべてのEBSボリュームでスナップショットが開始されることをご確認ください。AWS Backupを使用して、Amazon EBSスナップショットの取得をスケジュールすることができます。

Amazon Elastic File System(EFS)バックアップ

Amazon EFSファイルシステムはsaptransとsapglobalファイルをホストするために使用されます。これらのファイルはSAPを実行している複数のEC2インスタンスの間で共有されます。AWS Backupを使用して、Amazon EFSをスケジュールまたはオンデマンドでバックアップすることができます。DR要件を満たすために、AWS Backupを使用して、リージョン間でバックアップを複製することもできます。さらに、SAPのお客様はAWS DataSyncを使用して、Amazon EFSをDRリージョンにレプリケーションすることもできます。

Amazon AMIバックアップ

AMI (Amazonマシンイメージ)バックアップは、すべてのEBSボリュームを含むEC2インスタンス全体の完全復旧可能なコピーを提供します。データベースやアプリケーション全体に与えられた変更を素早くロールバックしたい場合、この機能が利用できます。例えば、OS、データベース、またはアプリケーションのパッチを適用する際に、AMIバックアップは障害から復旧するための強固なロールバックオプションを提供します。AWS Backupを使用して、AMIバックアップをスケジュールするまたはオンデマンドでバックアップを作成することができます。

CloudEndure Disaster Recovery

CloudEndure Disaster Recoveryはお客様のマシン(OS、システム状態の構成、データベース、アプリケーション、ファイルを含む)を、対象となるAWSアカウントと希望のリージョンにある低コストのステージングエリアに継続的に複製します。これにより、サポートされているOS上で動作するすべてのアプリケーションとデータベースに対して、最短のRPO(Recovery Point Objective, 復旧ポイント目標)を実現します。リージョン間でSAPアプリケーションをレプリケーションするのにも、CloudEndure Disaster Recoveryがよく採用されています。

EC2 Auto Recovery

Amazon CloudWatchラームを使用して、復旧アクションを実行し、障害のあるインスタンスを自動的に復旧させることができます。EC2 Auto Recovery機能で、SAPアプリケーションを実行するEC2インスタンスは、アベイラビリティーゾーン内で高可用性を確保することができます。RTOを削減するために、AWSはこの機能を有効にすることを推奨しています。

AWS上で信頼性の高いSAPソリューションを構築するために、ここまで説明してきた複数のAWSサービスがどのように利用できるかについて、以下のアーキテクチャを見てみましょう。

1. AWS Backint AgentがSAP HANAデータベースをRegion1にあるAmazon S3バケットにバックアップする
2. Amazon S3クロスリージョンレプリケーション機能を使用して、バックアップバケットAが別リージョンにレプリケーションされる
3. AmazonサービスであるAmazon EC2 (AMI)、Amazon EBS、Amazon EFSのスナップショットがリージョン間でレプリケーションされる
4. CloudEndure Disaster RecoveryがSAPアプリケーションサーバーを別リージョンにレプリケーションする
5. ログレプリケーションを使用して、データベースをDRリージョンにレプリケーションする
6. コンポーネント障害からの保護のために、Amazon CloudWatchアラームによるAuto Recoveryをすべてのホストに有効化する
7. アベイラビリティーゾーンをまたがるデータベースの高可用性クラスタ
8. アベイラビリティーゾーンをまたがるアプリケーション高可用性クラスタ

バックアップポリシーを使用して障害から復旧

信頼性の高いバックアップポリシーを構築するための上記のツールをご理解いただきましたので、これから、それぞれのサービス障害および復旧方法を見てみましょう。

シナリオ1: Amazon EC2の障害

ネットワーク、電力、ハイパーバイザー層のソフトウェアバグなどの一般的な問題に起因する、AWSアベイラビリティーゾーン内の障害と考えられるシナリオです。EC2 Auto Recoveryはこのような障害から復旧するための強固なソリューションを提供します。SAP HANAデータベースには自動再起動機能があり、ホストの意図的/非意図的な再起動時にデータベースを簡単に起動することができます。この機能を提供していないアプリケーションやデータベースでは、シェルで書かれたスクリプトによるブートストラップに頼らざるを得ないかもしれません。

Auto Recoveryは様々な障害から素早く復旧する手段を提供しますが、SAP S/4HANAのような特定のアプリケーションでは、目標復旧時間(RTO)をほぼゼロにして運用する必要があります。このような場合、SUSEまたはRed Hatが提供するPacemakerソリューション、およびその他のサードパーティプロバイダのクラスタリングソフトウェアを使用して、SAPネイティブの高可用性構成を実現することができます。

シナリオ2: Amazon EBSの障害
シナリオ2a: 独立または単一のAmazon EBS ボリュームの障害

SAPデータベース:Amazon EBSボリュームはそのボリュームの EBS スナップショットから復旧できます。データベースがバックアップモードで保持された後にスナップショットが呼び出された場合にのみ、この復旧は一貫性があります。ただし、既知のデータベースチェックポイントから作業することになりますので、バックアップモードを起動せずに取得されたスナップショットから復旧する場合は、データベースログファイルを適用することで一貫性を確保することができます。この方法の一例は、AWS for SAPのブログ記事「スナップショットを使用したSAP HANA データベースの自動化された回復手順を作成する方法」で紹介されています。

SAPアプリケーション:Amazon EBSスナップショットはSAPアプリケーションサーバのRPO要件を満たすためによく使用される方法です。アプリケーションサーバは長期的な永続性を必要とするデータを保存しませんので、障害が発生したボリュームは、アプリケーションサーバのEBSボリュームから作成されたEBSスナップショットから復旧することができます。

シナリオ2b: ボリュームグループ内のAmazon EBSボリュームの障害

多くの場合、SAP データベースはオペレーティングシステムの論理ボリュームマネージャ (LVM) を使用してボリュームグループにインストールされ、パフォーマンスのために複数のボリュームにまたがってストライプ化されます。ボリュームグループ内のAmazon EBSボリュームで障害が発生した場合、ボリュームグループを再構築し、ロールフォワードリカバリアプローチを使用する必要があります。これを実施するために、既知の良好なバックアップからデータベースを復元し、データベースログを適用して、データベースを障害が発生する前の希望する時点に戻します。

もう一つのアプローチとして、シナリオ2aの手順に従い、EBSスナップショットを使用してデータベースデータのバックアップとリストアを行うことも考えられます。

シナリオ3: アベイラビリティーゾーンの障害

本番環境

アベイラビリティーゾーンの障害はSAPアプリケーションとデータベースに影響を与える可能性があります。ミッションクリティカルな本番環境のSAPアプリケーションとデータベースは、AWSアベイラビリティーゾーン内の障害対策のために、AZ間の高可用性アーキテクチャで展開されます。サードパーティ製品を使用してAZ間でSAPアプリケーションをクラスタリングすることで、RTOをさらに下げることができます。

非本番環境

非本番環境のSAPインスタンスはよく単一のAZにデプロイされます。このようなアプリケーションはAmazon AMIバックアップ、ファイルバックアップ、EBSスナップショットに依存します。AWSアベイラビリティーゾーン内の障害が発生する際に、障害になったEC2インスタンスを最新のAMIから復旧し、リージョン内の利用可能なAZの1つで、データベースを既知の良好なポイントに戻すことができます。

シナリオ4: リージョンの障害

Amazon AMI、Amazon EBSスナップショット、データベースのバックアップファイルのあるAmazon S3バケット、Amazon EFSファイルシステムは、ディザスタリカバリのためにリージョン間でレプリケーションすることができます。CloudEndure Disaster Recoveryなどのツールを使用して、EC2インスタンスまたはオンプレミスベースのサーバーをリージョン間でレプリケーションすることができますので、信頼性の高いDR戦略を低コストで構築するには役立ちます。お客様はシミュレーションの形でDRテストを実施して、障害に対する準備状況を確認し、DR戦略を常に更新しています。

データベース

リージョンの障害からデータベースを復旧するには、データベースインスタンスの最新AMIを使用してEC2インスタンスを起動し、そのバックアップを使用してデータベースを復旧します。そのためには、通常の運用時にAMIやデータベースのバックアップがリージョン間でコピーされるようにする必要があります。Amazon S3レプリケーション、AWS DataSync、AWS Backupなどの機能を使用することで、リージョン間でのデータのレプリケーションを実現できます。

RTO/RPO (Recovery Time/Point Objective)が短い場合、データベースはネイティブのデータベースレプリケーション技術を使ってリージョン間でデータを複製することができます。リージョンの障害が発生した際に、DRリージョンにあるレプリケーションされたデータベースがプライマリとして引き継ぐことができます。このアプローチにより、可能な限り低い RPO を実現できます。

スナップショットは信頼性を高めるための第二の安全対策となります。ポイントインタイムのスナップショットを取得することで、Amazon EBSボリューム上のデータをバックアップすることができます。

アプリケーション

SAPアプリケーションサーバーはAMIを使ってバックアップすることができます。AWSバックアップまたはAMIコピー機能を使用して、これらのAMIをさらにDR用に指定されたリージョンにコピーすることができます。DRによる切替発生時に、最新のAMIコピーを使用してアプリケーションサーバーのEC2インスタンスを起動します。AMIコピーに基づくDR戦略は、低コストのDRアプローチを提供します。

また、CloudEndure Disaster Recoveryを使用して、SAPアプリケーションサーバーをリージョン間で複製することもできます。このアプローチでは、レプリケーションされたVMのオペレーティングシステムパッチ、構成、SAPカーネルのバージョンなどの点が現行と一緒であることが確保されますので、すぐに稼働できる状態になります。

まとめ

このブログでは、AWS上のSAPリソースをバックアップするために利用できる複数のツールについて説明しました。また、可用性に関する障害と、それぞれの障害からの復旧方法についても見てきました。このブログは、AWS上で実行されるSAPワークロードに向けて、回復力のあるビジネス継続性とディザスタリカバリ戦略の策定に役立つことを願っております。フィードバックを大切にしておりますので、ご意見またはご質問がございましたら、ぜひお聞かせください

翻訳はSpecialist SA アッシュが担当しました。原文はこちらです。