ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を終える際は、これらの値をクラウド環境に固有の値に置き換えてください。
OCIへのHAおよびDR用のMicrosoft SQL Server Always On可用性グループのデプロイ
イントロダクション
Microsoft SQL Serverのデプロイメントは、Oracle Cloud Infrastructure (OCI)の一般的なユースケースです。OCIデプロイメントの場合によくあるように、お客様はビジネス継続性の要件に対応する弾力性の高いアーキテクチャを求めています。そのため、高可用性とディザスタ・リカバリのためにSQL Serverをデプロイする方法を理解することは、これらのお客様にとって不可欠です。
SQL Serverのビジネス継続性ソリューションがいくつかあります。このチュートリアルで説明するソリューションは、SQL Server管理者がAlways On可用性グループで広く採用されています。SQL Server Always On Failover Cluster Instances (FCI)などのソリューションは、OCIにデプロイすることもできますが、このチュートリアルからは除外されます。
このチュートリアルは、お客様のユース・ケースにインスパイアされ、OCIへのSQL Server Always On可用性グループ・デプロイメントの3つの主要要素を1つのドキュメントにまとめることで、自社を差別化します。
-
SQL Server Always On可用性グループのデプロイに必要なアーキテクチャ。SQL ServerをOCIにデプロイするには、SQL Server Always On可用性グループのデプロイメントが確実に成功するように、お客様が認識しておく必要がある点がいくつかあります。
-
SQL Server Always On可用性グループのデプロイに必要な前提条件。
-
2ノードのSQL Server Always On可用性グループをデプロイするためのステップバイステップの手順。これは、チュートリアルの大部分を構成します。同じ手順を、3つ以上のノードを使用するデプロイメントに使用できます。このチュートリアルでは、Windowsオペレーティング システムのグラフィカル インターフェイスを使用する手順について説明します。このインターフェイスにより、上級者以外のユーザーに適しています。上級ユーザーは、Windows PowerShellを使用して構成を実装できます。
アーキテクチャ
このチュートリアルでは、次のアーキテクチャを使用します。
-
単一リージョン:デプロイメントは、単一のOCIリージョンで構成されます。デプロイメントは、他のOCIリージョンに拡張できますが、このような構成はこのチュートリアルの範囲外です。
-
プライベート・サブネット: OCI Bastion仮想マシン(VM)を除き、すべてのリソースはプライベート・リージョナル・サブネットに配置されます。
-
複数のサブネット上のSQL Serverノード: SQL Serverデプロイメントの2つのノードはそれぞれ、Microsoftの推奨事項に従って異なるサブネットに配置されます。詳細は、複数のサブネット内の可用性グループの前提条件(Azure VM上のSQL Server)を参照してください。SQL Server Always On可用性グループは単一のサブネットにデプロイできますが、これはMicrosoftが推奨するアーキテクチャではありません。また、ロード・バランサとOCIでサポートされていない機能(ダイレクト・サーバー・リターン)を使用する必要があります。
-
Windows Serverフェイルオーバー・クラスタ・クォーラムの目撃情報: Always On可用性グループは、Windows Serverフェイルオーバー・クラスタ(WSFC)で実行されます。WSFCでは、いくつかのデプロイメント・オプションがあるクラスタ定足数証人を使用する必要があります。このチュートリアルでは、OCIデプロイメントに最適なファイル共有証人を使用します。これを実現するために、アーキテクチャー図に従って定足数証人 VMがプロビジョニングされます。
-
必要なSQL Server IP:プライマリ仮想ネットワーク・インタフェース・カード(VNIC)では、各SQL Server VMに次のIPが必要です。
- プライマリIP:オペレーティング・システム・アクセス(VMプロビジョニング時に自動的に作成されます)。
- セカンダリIP 1: Windows Serverフェイルオーバー・クラスタIP。このチュートリアルで作成します。
- セカンダリIP 2: SQL Server Always On可用性グループ・リスナー。このチュートリアルで作成します。
-
必要なアカウント
- ドメイン管理者:ドメイン管理者は、このチュートリアルのすべての構成タスクを実行します。また、このアカウントは、各SQL Server VMのローカル管理者として、および各SQL ServerインスタンスのSQL Server sysadmin固定サーバー・ロールのメンバーとして構成する必要があります。
- サービス・アカウント: SQL Serverサービスが両方のSQL Serverノードで動作するために使用されます。
目的
次を作成して構成します。
-
SQL Server Always On可用性グループに必要なユーザーおよびアカウント。
-
Always On可用性グループ用のWindows Serverフェイルオーバー・クラスタ。
-
SQL Server Always On可用性グループ。
前提条件
-
ネットワーキング
-
すべてのリソースを配置するためのOCIテナンシおよびコンパートメントへのアクセス。
-
アーキテクチャ図に従って構成されたネットワーク。
- 1 VCN。
- 1つのパブリック・サブネットと4つのプライベート・サブネット。
-
SQL Server Always On可用性グループの実装用に構成されたセキュリティ・リスト・ルール-
1433
および5022
ポートが開いています。 -
OCIのホワイト・ペーパー「OCIでのActive Directoryドメイン・サービスの作成」で説明されているように、OCIにActive Directoryを実装するために構成されたセキュリティ・リスト・ルール。
-
このチュートリアルに示されているクラスレス・ドメイン間ルーティング(CIDR)ブロックを使用するか、クラウド・ネットワーキング・チームのアドバイスに従ってCIDRブロックを選択できます。
-
-
サーバー
-
1パブリック・サブネット内の要塞VMで、プライベート・サブネットで実行されているVMに接続できることを確認します。
-
プライベート・サブネット内の1つのドメイン・コントローラVM。
-
プライベート・サブネット内の1つの定足数VM。
-
それぞれ異なるプライベート・サブネットにある2つのSQL Server VM。
-
OCIでSQL Serverを実行するには、OCIマーケットプレイス・イメージと独自のMicrosoftライセンスの持込み(BYOL)の2つの方法があります。どちらでも使用できます。このチュートリアルでは、SQL Serverのデフォルトのインスタンス・インストール(VMごとに1つのSQL Serverインストール)があることを前提としています。
-
OCI Marketplaceイメージを使用する場合、プロビジョニング・プロセスでは、opcユーザーとともにSQL Serverがインストールされます。各ノードをドメインに結合する場合、ドメイン管理者がローカル管理者に属していることを確認して、SQL Server Management Studio上の各SQL Serverデータベース・インスタンスに接続できるようにする必要があります。
-
SQL Server Management StudioをSQL ServerノードのVMにインストールします。
-
-
Active Directoryドメインの前提条件
-
ドメイン・コントローラVMに追加されたドメイン・コントローラ機能およびロール。
-
OS管理者が構成したドメイン。このチュートリアルのドメイン・コントローラには、ルート・ドメイン名
mssql.acme
があります。選択したルート・ドメイン名でドメインを構成できます。 -
OCIでのActive Directoryドメイン・サービスの作成に関するOCIホワイト・ペーパーを参照できます。
-
ドメインに追加されたSQL Server VMsおよびQuorum VM。
-
このチュートリアルの除外
-
マルチ・リージョン:マルチ・リージョン・デプロイメントは可能ですが、このチュートリアルの範囲外です。詳細は、Azureリージョン間のマルチサブネット可用性グループの構成- Azure VM上のSQL Serverを参照してください。
-
ストレージ:このチュートリアルでは、各VMのブート・ボリュームが、データベース、バックアップおよびログのSQL Serverリポジトリとして使用されます(これらはすべて
C:\
ドライブにマップされます)。要件に応じて、データベース、バックアップおよびログ用に個別のボリュームを使用および構成する必要がある場合があります。WSFCは、内部通信に169.254.\*
アドレス空間のIPを使用することに留意する必要があります。これは、iSCSIブロック・デバイスを公開するためのOCIアドレス空間と重複しています。これは、各SQL ServerノードVMのiSCSIターゲットポータルを公開するために、静的IPルートを作成する必要があります。このような構成は、このチュートリアルの範囲外です。詳細は、Failover Clustering Networking Basics and Fundamentalsを参照してください。 -
高可用性目撃者ファイル共有:このチュートリアルでは、定足数証人ファイル共有に単一の VMを使用します。高可用性の証人ファイル共有は、このチュートリアルの範囲外です。デプロイ方法の詳細は、高可用性Windowsファイル・サーバーのOCIへのデプロイを参照してください。
タスク1: セカンダリIPの構成
SQL ServerノードVMごとに、Windows Serverフェイルオーバー・クラスタおよびAlways On可用性グループ・リスナーに必要なセカンダリIPを作成します。
-
OCIコンソールで、SQL Serverノード1 VMに移動し、「リソース」メニューで「アタッチされたVNIC」を選択します。
-
プライマリVNICを選択し、「リソース」メニューで「IPv4アドレス」を選択します。
-
「セカンダリ・プライベートIPアドレスの追加」を選択し、新しいプライベートIPをVNICに追加するための詳細を入力します。「作成」をクリックすると、このVNICに関連付けられた新しいセカンダリIPが表示されます。これがWSFC IPです。
-
Always On可用性グループ・リスナーに別のセカンダリIPを作成するために、同じVNICでステップ1から3を繰り返します。
-
他のSQL ServerノードVMに対してステップ1から4を繰り返します。
タスク2: SQL Serverサービス・アカウントの作成
SQL Serverは専用ドメイン・アカウントを使用する必要があります。このタスクでは、このアカウントを作成します。チュートリアルの後半で、このアカウントを使用して、各ノードでSQL Serverサービスを構成します。
-
ドメイン管理者アカウントを使用してドメインコントローラにログインし、Active Directoryユーザーとコンピュータに移動します。
-
このチュートリアル用に構成したドメインを展開します。
-
「ユーザー」を右クリックし、「新規ユーザー」を選択して、新規ユーザーを作成します。
-
次の詳細を入力し、「次へ」をクリックします。
-
このドメイン・アカウントのパスワードを入力し、「次へ」をクリックします。
-
詳細を確認して、「終了」をクリックします。
タスク3: 目撃者ファイル共有の構成
前述のとおり、このチュートリアルのアーキテクチャでは、ファイル共有証人を使用して定足数証人を実装します。このタスクでは、共有フォルダを作成します。後続のタスクでは、この共有フォルダを使用して Windows Serverフェイルオーバークラスタを構成します。
-
ドメイン管理者アカウントを使用して定足数 VMにログインし、証人フォルダを作成します。
-
作成したフォルダを右クリックし、「プロパティ」を選択します。「共有」タブで、「共有」をクリックし、「全員」を選択してフォルダを共有します。より厳密にしたい場合は、タスク2で作成したSQL Serverサービス アカウントを選択します。
-
フォルダが共有されていることを確認し、「完了」をクリックします。
タスク4: Windows Serverフェイルオーバー・クラスタの構成
SQL Server Always On可用性グループは、Windows Serverフェイルオーバー・クラスタ(WSFC)テクノロジで実行されます。このタスクでは、次のことを行います。
-
SQL Server VMsにWSFCロールを追加します。
-
タスク1で作成したセカンダリIPと、タスク3で作成した定足数ファイル共有証人を使用して、クラスタを作成および構成します。このクラスタは、Always On可用性グループ機能によって後続のタスクで使用されます。
タスク4.1: SQL Server VMsへのWSFCロールの追加
-
ドメイン管理者を使用してSQL Serverノード1 VMにログインし、Server Managerを開き、「ダッシュボード」で「ロールおよび機能の追加」をクリックします。
-
「次へ」をクリックして「インストール・タイプ」に進みます。
-
「Role-based or feature-based installation」を選択し、「Next」をクリックします。
-
「宛先サーバーの選択」で、「サーバー・プールからサーバー」およびSQL Serverノード1を選択し、「次へ」をクリックして続行します。
-
「機能」で、「フェイルオーバー・クラスタリング」を選択します。これを行うと、ウィンドウが表示され、「機能の追加」をクリックします。
-
「インストールの選択の確認」で、詳細を確認し、「インストール」をクリックしてインストールを確認します。
-
インストールが完了したら、ウィザードを閉じます。
-
インストールを確認するには、検索バーに Failover Cluster Managerと入力します。これを開いて、まだクラスタが含まれていないことを確認できます。
-
他のSQL ServerノードVMでステップ1から8を繰り返します。
タスク4.2: クラスタの作成
-
ドメイン管理者アカウントを使用してSQL Serverノード1 VMにログインし、フェールオーバー クラスター マネージャを開きます。実行中のクラスタがないことがわかります。
-
[フェールオーバー クラスター マネージャ]を右クリックし、[クラスタの作成...]を選択します。これにより、[クラスタの作成ウィザード]が開きます。
-
クラスタの作成ウィザードが開いたら、「次へ」をクリックして続行します。
-
「参照」をクリックし、SQL Serverノード1およびSQL Serverノード2 VMを選択します。
-
適切なノードを選択してから、「Next」をクリックします。
-
「Yes、 When I click Next、 run the configuration tests、 and then return to the process of creating the cluster」を選択して、「Next」をクリックします。
-
「すべてのテストを実行」を選択し、「次へ」をクリックします。
-
「確認」ウィンドウで、「次へ」をクリックします。
すべてのテストが終了するまで待ちます。
-
「終了」をクリックします。
-
「クラスタ名」を入力し、NetBIOS制約を考慮します。
-
作成する前にクラスタを確認し、「次へ」をクリックします。
-
クラスタが正常に作成されたら、「終了」をクリックします。
-
フェールオーバー クラスター マネージャを開くと、新しく作成されたクラスタが表示されます。
-
「クラスタ・コア・リソース」セクションのクラスタのステータスが「オフライン」であることに注意してください。リソースを展開し、まだ構成されていないクラスタIPアドレスを見つけます。これから数ステップで実施します。
タスク4.3: クラスタの構成
-
クラスタIPを設定する前に、定足数証人を構成します。クラスタ名を右クリックし、「その他のアクション」および「クラスタ定足数設定の構成...」を選択します。これにより、構成ウィザードが開きます。
-
「クラスタ定足数の構成ウィザード」ウィンドウで、「次へ」をクリックして続行します。
-
「定足数監視の選択」を選択し、「次へ」をクリックします。
-
「ファイル共有証人の構成」を選択し、「次へ」をクリックします。
-
タスク3で構成されたファイル共有パスを入力し、「次へ」をクリックします。
-
定足数構成設定を確認し、「次へ」をクリックします。
-
定足数証人が構成されます。構成が正常に完了したら、「終了」をクリックしてウィザードを閉じます。
-
タスク1で作成したIPをクラスタに関連付けます。これにより、クラスタが起動し、動作可能になります。フェールオーバー クラスター マネージャで、クラスタ コア リソースを展開し、[失敗]ステータスのIPアドレスを右クリックして、[プロパティ]をクリックします。
-
「一般」タブで、タスク1でこのノード用に構成された静的IPアドレスを指定し、「適用」をクリックします。
-
もう一方のIPに対して手順8と9を繰り返します。クラスタを正しく設定します。クラスタ名リソースがオンラインになると、ドメインコントローラサーバーが新しい Active Directoryコンピュータオブジェクトで更新されます。これで、Always On可用性グループ構成に移行する準備ができました。
タスク5: サンプル・データベースのAlways On可用性グループの構成
このタスクでは、次のことを行います。
-
クラスタによってドメイン内に作成された仮想コンピュータ・オブジェクト・アカウントに適切な権限を付与します。これにより、クラスタはAlways On可用性グループに必要なリソースを作成できます。
-
ノードでAlways On可用性グループ機能を有効にします。
-
サンプル・データベースのAlways On可用性グループを構成します。
-
Always On可用性グループのリスナーを作成します。
タスク5.1: クラスタ・ドメイン・コンピュータ・オブジェクトへの権限の付与
-
ドメイン管理者アカウントを使用してドメインコントローラにログインし、Active Directoryユーザーとコンピュータを開きます。
-
「表示」をクリックし、「拡張機能」を選択して、拡張機能を表示します。
-
「コンピュータ」を右クリックし、「プロパティ」を選択します。
-
「セキュリティー」タブに移動し、「追加」をクリックします。
-
ユーザー、コンピュータ、サービス・アカウントまたはグループ・ウィザードで、「オブジェクト・タイプ...」をクリックします。
-
「コンピュータ」を選択し、「OK」をクリックします。
-
クラスタの名前を入力し、「OK」をクリックします。これで、グループまたはユーザー名のリストにクラスタ・コンピュータ・オブジェクトが表示されます。
-
クラスタ・コンピュータ・オブジェクトを選択し、「詳細」をクリックして権限を構成します。
-
「権限」タブで、クラスタ・コンピュータ・オブジェクトを選択し、「編集」をクリックします。
-
「コンピュータ・オブジェクトの作成」権限エントリを選択し、「OK」をクリックします。
-
これで、コンピュータの拡張セキュリティ設定に戻り、「適用」、「OK」の順にクリックします。これにより、クラスタのコンピュータ・アカウントには、Always On可用性グループが機能するために必要な権限があります。
タスク5.2: ノードでのAlways On可用性グループの有効化
-
ドメイン管理者アカウントを使用してSQL Serverノード1 VMにログインし、SQL Server Configuration Managerを開きます。
-
「SQL Serverサービス」をクリックし、「SQL Server (MSSQL SERVER)」を右クリックして「プロパティ」を選択します。
-
「Always On可用性グループ」タブで、「Always On可用性グループの有効化」を選択します。タスク4.2ですでに作成されているクラスタの名前であるWindows Serverフェイルオーバー・クラスタに注目し、「適用」をクリックします。サービスを再起動するための警告メッセージが表示されます。「OK」をクリックして変更を適用します。サービスが再開されます。
-
SQL Serverサービスが自動的に再起動されない場合は、手動で再起動し、SQL Serverサービスを右クリックして「再起動」をクリックします。
-
SQL Serverサービスを右クリックして、「プロパティ」を選択し、「ログオン」タブに移動します。「このアカウント」を選択し、タスク2で作成したSQL Serverアカウントの詳細を入力します。「適用」、「OK」の順にクリックします。
-
SQL Serverノード2 VMに対してステップ1から5を繰り返します。
タスク5.3: Always On可用性グループのサンプル・データベースの作成およびバックアップ
-
ドメイン管理者アカウントを使用してSQL Serverノード1 VMにログインし、SQL Server Management Studioを開き、そのノードのSQL Serverインスタンスに接続します。
-
次の図に示すように、「NEW問合せ」を選択し、データベースの作成問合せを使用してサンプル・データベースを作成します。
-
オブジェクト・エクスプローラで「データベース」を展開すると、ステップ2で作成したサンプル・データベースが表示されます。右クリックして「タスク」をクリックし、「バックアップ...」をクリックします。
-
「バックアップ・タイプ」として「全体」を選択します。バックアップの保存先を確認して確認し、「OK」をクリックします。
-
バックアップが正常に完了したことを示すメッセージが表示されます。「OK」をクリックします。
タスク5.4: サンプル・データベースの可用性グループの作成
-
バックアップが作成され、可用性グループの構成を開始する準備ができました。「Always On High Availability」を右クリックし、「New Availability Group Wizard...」を選択します。
-
「新しい可用性グループの作成」で、「次へ」をクリックして続行します。
-
可用性グループ名を入力し、「クラスタ・タイプ」として「Windows Serverフェイルオーバー・クラスタ」を選択し、「次へ」をクリックします。
-
タスク5.3で作成したサンプル・データベースを選択し、「次へ」をクリックします。
-
「レプリカの指定」ウィンドウで、「レプリカの指定」および「レプリカの追加...」をクリックして、ノード2のレプリカを選択します。ウィンドウで、ノード2サーバーVMの名前を入力し、「接続」をクリックします。
-
これで、プライマリ・ロールを持つレプリカと、セカンダリ・ロールを持つレプリカの両方が表示されます。可用性モードは要件に応じて変更できます。「次へ」をクリックすると、「リスナー」タブが表示されます。現時点ではスキップします。このチュートリアルの後半で、リスナーを構成します。
-
「データ同期の選択」で、「自動シード」を選択し、「次へ」をクリックします。
-
構成の検証が実行されます。リスナー構成以外のすべての検証結果が成功していることがわかります。「次」をクリックします。
-
「サマリー」で、「終了」をクリックして、可用性グループの作成と構成を完了します。
-
「結果」に、可用性グループ構成が正常に完了したことを通知するメッセージが表示されます。「閉じる」をクリックします。
可用性グループが作成され、オブジェクト・エクスプローラでその詳細を確認できます。
タスク5.5: 可用性グループ・リスナーの作成
このタスクでは、タスク5.4で作成した可用性グループのリスナーを作成します。リスナーは、Always On可用性グループ構成上のデータベースへの接続を提供する仮想ネットワーク名です。これにより、クライアントはSQL Serverの物理インスタンス名を知らなくてもレプリカに接続できます。リスナーはトラフィックをルーティングするため、フェイルオーバーの発生後にクライアント接続文字列を変更する必要はありません。
-
オブジェクト・エクスプローラで、「可用性グループ」とタスク5.4で作成した可用性グループを展開し、「可用性グループ・リスナー」を右クリックして「リスナーの追加...」を選択します。
-
リスナーのリスナーDNS名を入力し、ネットワーク・モードでポート
1433
および静的IPを指定します。「追加」をクリックして、タスク1で作成したリスナーIPを追加します。 -
接続先のノードのサブネットが選択したサブネットであることを確認し、タスク1でリスナー用に作成されたセカンダリIPとともにIPv4アドレスを入力し、「OK」をクリックします。
-
2番目のIPを追加するには、「追加...」を再度クリックします。選択したサブネットがもう一方のノードのサブネットであることを確認し、タスク1で他方のノード用に作成されたセカンダリIPのIPアドレスを入力します。「OK」をクリックします。
-
構成された両方のIPが表示されることを確認し、「OK」をクリックしてリスナーの作成を終了します。
-
オブジェクト・エクスプローラに移動し、「可用性グループ・リスナー」フォルダにリスナーが表示されることを確認します。
SQL Server Management Studioでは、任意のSQL Serverノードと同様にリスナーに接続できるようになりました。Always On可用性グループの構成が終了し、アプリケーションの接続を容易にするためのリスナーがあります。これで、デプロイメントはフェイルオーバーの準備ができ、手動で実行できます。
関連リンク
確認
- 著者 - Ricardo Malhado (プリンシパル・クラウド・ソリューション・アーキテクト)、Raphael Teixeira (プリンシパル・クラウド・ソリューション・アーキテクト)
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Deploy Microsoft SQL Server Always On Availability Groups for HA and DR on OCI
F92895-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.