Amazon Web Services ブログ
SAP on AWSにおけるMicrosoft SQL ServerのHAの設計と構成
AWSプロフェッショナルサービスのSAPグローバルスペシャリティプラクティスの一員として過ごす間、私が気づいたお客様の求めている重要なことの一つに、ビジネス/ミッションクリティカルなSAPアプリケーションの高可用性 (HA)の実装があります。このブログ記事では、WindowsとMicrosoft SQL Server上でSAPワークロードを稼働するお客様向けにHAの設計と構成の選択肢をご紹介します。
Windows オペレーティングシステムは、Microsoft SQL Server上で稼働するSAPワークロードのデータベース層としてHAを構成するために使用できるクラスタリング機能を提供しています。この機能により、お客様はSAP NetWeaverベースのアプリケーションに対してリージョン内のAWSアベイラビリティーゾーン (AZs)をまたがったHAクラスタを展開できます。
前提条件
- 3つのノードがHAを構成するために必要です
- 2つのノードはプライマリーとセカンダリーのデータベースノードとして機能します
- 3つ目のノードは高可用性クラスターのクォーラムを維持するためのウィットネスサーバーとして機能します
- 3つのノードすべてがActive Directoryに接続されており、同じActive Directoryドメインの一部です
- 各ノードでWindowsフェイルオーバークラスタリング機能が有効になっています
- 3つのノードすべての間で1つの共有ディレクトリーがあります
- このディレクトリーは、データベースノードのステータス情報を保持するためにウィットネスノードが使用します
- Microsoft SQL Serverノードとウィットネスサーバーを2つのAZsで展開する計画の場合、Amazon FSxを使用してクラスターノード間のディレクトリーを共有できます
- WindowsクラスターとSQL Serverリスナーに追加のIPを4つ割り当てます
- これらのIPは、プライマリーDBとセカンダリーDBが展開される異なるAZのプライマリーおよびセカンダリーと同じプライベートサブネットの一部である必要があります
- この追加のIPは、セカンダリーIPとしてプライマリーおよびセカンダリーのDBノードに割り当てる必要があります
必要なIPのリスト
サーバー | IPアドレス |
データベースプライマリーサーバー | プライベートIP 1 (AZ1-プライベートサブネット) |
Windowsクラスターのプライマリー | プライマリーDB プライベートIP 2 |
SQL Serverリスナーのプライマリー | プライマリーDB プライベートIP 3 |
データベースセカンダリーサーバー | プライベートIP 2 (AZ2-プライベートサブネット) |
Windowsクラスターのセカンダリー | セカンダリーDB プライベートIP 2 |
SQL Serverリスナーのセカンダリー | セカンダリーDB プライベートIP 3 |
ウィットネスサーバー | プライベートIP 3 (AZ3-プライベートサブネット) |
高可用性設計
SQL ServerデータベースノードのHAを構成するために、複数のAWSアベイラビリティーゾーンを使用しましょう。AWSアベイラビリティーゾーンは、他のアベイラビリティーゾーンから意味のある距離、数キロメートル単位で物理的に離れています。しかし、すべてが互いに100 km (60マイル)以内にあります。アベイラビリティーゾーンは、低遅延リンクを持ち、HA要件に関するお客様の要望を満たしています。
クラスターの構成
最初に、Windowsクラスターセットアップを構成する必要があります。これらの手順は、プライマリーデータベース、あるいはセカンダリーデータベースで実行できます。Windowsフェイルオーバークラスターマネージャー機能 (Windows標準ドキュメントに従ってください)を使用して、Windowsクラスタリングの構成を完了します。Windowsクラスタリングを構成したら、プライマリーノードとセカンダリーノードの両方が使用可能になります。
注: Windowsクォーラムの構成も完了する必要があります。クォーラムは、スプリットブレインシナリオでクラスターの整合性を維持するのに役立ちます。ファイル共有ウィットネスのクォーラムは、クラスターのクォーラムを維持するために、プライマリー、セカンダリー、ウィットネスノード間でディレクトリーを共有することで使用できます。
SQL Server AlwaysOnの構成
Microsoft SQL Serverは、プライマリーデータベースとセカンダリーデータベース間でデータを複製するためのネイティブメカニズムを提供しています。 アベイラビリティーゾーン間でDBノードを同期するためにこの機能を使用し、アベイラビリティーゾーンが使用不可になったときにプライマリーノードとセカンダリーノード間でデータベースを自動フェイルオーバーするためにWindowsクラスター機能を使用します。
まず、Microsoft SQL ServerのネイティブツールであるSQL Server Management Studioを使用して、AlwaysOnの構成を完了する必要があります。
AlwaysOnの構成が完了したら、クラスター構成に追加された両方のノードとそれらデータベースの同期ステータスが表示されます。
フェイルオーバーのテスト
Microsoft SQL Serverは、SQL Server AlwaysOn 可用性グループのフェイルオーバーをテストするためにネイティブツールであるSQL Server Management Studio (SSMS)を提供しています。
SSMSのフェイルオーバーウィザードを使用してフェイルオーバーのテストを実行してください。
SAPNODE2の役割がセカンダリーからプライマリーに変更されたことが分かります。これにより、フェイルオーバークラスターのテストが成功したことを確認できます。
計画外停止の動作をテストするには、挙動とフェイルオーバーのタイミングを記録するために、アベイラビリティーゾーンでEC2インスタンスをシャットダウンします。ここで説明したアプローチにより、4時間以内の工数でお客様の重要なSQL Serverで稼働するSAPワークロードのHA可用性構成を実装でき、フェイルオーバー/フェイルバックの体験もエンドユーザーを中断することなくスムーズでした。
結論
このブログでは、AWS上のSAPアプリケーション向けに可用性グループとWindows クラスターソフトウェアを使用してMicrosoft SQL Serverデータベースを高可用に構成する方法を紹介しました。また、Windowsのネイティブクラスタリング機能を使って高可用性を提供するマルチAZのアーキテクチャを備えたAWS上のSAPアプリケーションの設計にも役立ちます。
AWS上でMicrosoft SQL Serverデータベースを稼働しているお客様は、高可用性を構成するためにSQL Server AlwaysOn FCIを使用することもできます。
ご意見やご質問がありましたら、お気軽にお問い合わせください。フィードバックをお待ちしています。
翻訳はPartner SA 河原が担当しました。原文はこちらです。