ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
リスナーおよびロード・バランサを使用したOCIでのMicrosoft SQL Server Always On可用性グループの構成
イントロダクション
Oracle Cloud Infrastructure(OCI)にMicrosoft SQL Serverをデプロイすると、企業は高可用性とビジネス継続性の目標を達成するための強力なプラットフォームが提供されます。Microsoft SQL Serverの高可用性に対する最も効果的なアプローチの1つは、Always On可用性グループ機能です。Microsoft SQL Server Always On可用性グループは、複数のSQL Serverインスタンス間でシームレスなフェイルオーバーおよびデータ・レプリケーションを可能にする高可用性および障害時リカバリ・ソリューションを提供します。
Microsoft SQL Server可用性グループを設定するには、様々な方法があります。1つのアプローチは、SQL Server仮想マシンを同じ仮想ネットワーク内の別々のサブネットに配置することです。マルチサブネット・アーキテクチャを使用してSQL Server可用性グループをデプロイするには、Always On可用性グループを使用した高可用性Microsoft SQL ServerデータベースのOCIへのデプロイおよびOCIへのHAおよびDR用のMicrosoft SQL Server Always On可用性グループのデプロイを参照してください。
このチュートリアルに従うことで、1つのサブネット内の仮想マシンを使用して、OCIにSQL Server Always On可用性グループをデプロイおよび構成します。この構成には、リスナーとして機能するプライベートOCIロード・バランサが含まれ、シームレスなクライアント接続と高可用性を実現します。このアプローチは、シンプルさと信頼性が重要であり、自動フェイルオーバー、データ冗長性、およびSQL Serverデータベースへの中断のないアクセスを提供する環境に最適です。この設定により、インフラストラクチャは、堅牢なビジネス継続性を持つミッションクリティカルなワークロードをサポートするための適切な位置に配置されます。本番デプロイメントでは、この高可用性構成を補完するために、強化された監視、ロギング、セキュリティ強化およびバックアップ計画を実装することを検討してください。
1つのサブネット内にAlways On可用性グループをデプロイする場合、このチュートリアルでは、OCI仮想マシンとOCIロード・バランサを使用して設定するためのステップバイステップのガイダンスを提供します。このチュートリアルでは、OCIロード・バランサを使用して、単一のサブネットの仮想マシンを使用して、OCIで2ノードのAlways On可用性グループを設定する手順について説明します。
アーキテクチャ
次の図は、ソリューションの高レベル・アーキテクチャのサンプルを示しています。
このチュートリアルの除外
-
OCI上のActive Directoryドメイン・サービスの構成。詳細は、Oracle Cloud InfrastructureでのActive Directoryドメイン・サービスの作成を参照してください。
-
OCIに関するSQL Serverのインストールおよび構成。詳細は、Oracle Cloud Infrastructure上のMicrosoft SQL Serverを参照してください。
-
Windowsフェイルオーバークラスタの構成。詳細は、クラスタの作成を参照してください。
-
ファイル共有目撃情報の構成。詳細は、Add a file share for a cluster quorumを参照してください。
目的
- 単一のサブネット内の仮想マシンを使用して、OCIにSQL Server Always On可用性グループをデプロイおよび構成します。SQL Server 2022 Always On可用性グループの設定と、シームレスなクライアント接続を実現するリスナーによる高可用性および自動フェイルオーバーを可能にするOCIロード・バランサについて説明します。
前提条件
-
SQL Server Always On可用性グループの基本的な理解をお薦めします。
-
関連するすべてのリソースをホストするためのコンパートメントが定義されたOCIテナンシへのアクセス。
-
少なくとも1つのプライベート・サブネットを持つ構成済Virtual Cloud Network (VCN)。
-
このチュートリアルでは、少なくとも6つのプライベートIPアドレスが必要です。
- ドメインコントローラ用に1つ
- 2つのSQL Serverノード用
- 1: Windows Serverフェイルオーバー・クラスタIP用
- SQL Server Always On可用性グループ・リスナーIPの場合は1
- OCIロード・バランサに1つ
OCIフローティングIPアドレスはサポートされていないため、SQL可用性グループ(AG)リスナーとOCIロード・バランサ用のIPアドレスは異なります。
-
SQL Server Always On可用性グループの実装用に構成されたセキュリティ・リスト・ルール-
1433
および5022
ポートがオープンします。 -
3つのWindows Server 2022 OCI仮想マシン・インスタンス。
- Active Directoryドメインコントローラとして構成された1つの VM。
- SQL Server 2022およびSQL Server Management Studio (SSMS)がインストールされた2つのVM。
-
定足数構成をサポートするには、ファイル共有証人が必要です。
- わかりやすくするために、このチュートリアルでは、ドメイン・コントローラの共有フォルダを使用して、ファイル共有証人をホストします。
- 本番環境では、より堅牢な定足数モデルを実装することを検討してください。
-
Windowsフェイルオーバー・クラスタは、2つのSQL Server VM間で構成する必要があります。
タスク1: SQL Server Always On可用性グループの構成
タスク1.1: SQL Serverノード(DevSQL1
およびDevSQL2
)での可用性グループの有効化
-
DevSQL1
ノードで、「スタート」に移動し、SQL Server 2022 Configuration Managerを検索して開きます。 -
「SQL Server Services」を選択し、「SQL Server (MSSQLSERVER)」サービスを右クリックして「Properties」を選択します。名前付きインスタンスを使用している場合は、SQL Server (
INSTANCENAME
)になります。 -
「Always On Availability Groups」をクリックし、「Enable Always On Availability Groups」を選択します。
-
「適用」を選択し、「OK」をクリックします。
-
SQL Serverサービスを再起動します。
-
他のノード(
DevSQL2
)でステップ1から5を繰り返します。
タスク1.2: 最初のSQL Serverノード(DevSQL1
)でのデータベースの作成と完全バックアップの実行
-
DevSQL1
ノードで、「スタート」に移動し、SSMSを検索してSQL Server Management Studio (SSMS)を開きます。 -
プライマリSQL Serverに接続します。このチュートリアルでは、
DevSQL1
です。 -
「オブジェクト・エクスプローラ」で、「データベース」を右クリックし、「新規データベース」をクリックします。
-
「一般」で「データベース名」を入力し、「オプション」で「リカバリ・モデル」として「完全」を選択します。
-
「OK」をクリックします。
-
全体バックアップを作成するには、「データベース"AdventureWorks2022"」、「タスク」を右クリックし、「バックアップ」をクリックします。
-
「一般」で、「バックアップ・タイプ」が「完全」であることを確認し、「宛先」で「ディスク」を「バックアップ先」として選択し、「追加」をクリックして、完全バックアップの場所とファイル名を入力します。
-
「OK」をクリックします。
Transact-SQLを使用してバックアップを作成することもできます。たとえば次のようにします。
トランザクションSQL:
BACKUP DATABASE [AdventureWorks2022] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\AdventuresWork2022.bak' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2022-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
タスク1.3: 可用性グループの作成
-
SQL Server Management Studioを開き、
DevSQL1
に接続します。「オブジェクト・エクスプローラ」で、「常に高可用性」を右クリックし、「新規可用性グループ・ウィザード」をクリックします。これにより、「新規可用性グループ」ページが開きます。「次」をクリックします。
-
「オプションの指定」で、「可用性グループ名」に
DevAG
と入力し、「クラスタ・タイプ」に「Windows Serverフェイルオーバー・クラスタ」と入力して「次へ」をクリックします。 -
「データベースの選択」で、この可用性グループに追加するデータベースを選択します。「ステータス」に、データベースを可用性グループに追加できる前提条件を満たすと表示されます。問題がある場合は、その理由が示され、前提条件を満たすために必要なアクションを実行する必要があります。たとえば、データベース全体のバックアップが保留になっている場合があります。
-
「レプリカの指定」で、レプリカを追加します。「レプリカ」をクリックして、両方のノードが「可用性レプリカ」の下に追加されていることを確認し、「可用性モード」を「同期コミット」に変更します。要件に応じて異なる可用性モードを設定できます。
-
「エンドポイント」をクリックして、両方のエンドポイントが同じポートを使用し、これらのポートがファイアウォールとセキュリティ・リストで開いていることを確認します。デフォルトでは、これはポート
5022
です。ノート:このチュートリアルでは、他のすべてのオプションをデフォルトとして保持します。現在はリスナーを作成しないでください。
-
次に、データ同期を選択する必要があります。「自動シード」を選択し、「次へ」をクリックします。
-
「検証」で、検証が「成功」であることを確認し、失敗を修正します。後でリスナーを作成するため、警告のリスナー構成の確認は無視できます。「次へ」をクリックし、可用性グループを作成したら、「閉じる」を選択してウィザードを閉じます。
-
オブジェクト・エクスプローラで、「常に高可用性」を展開し、「可用性グループ」を展開します。これで、このコンテナに新しい可用性グループが表示されます。可用性グループを右クリックし、「ダッシュボードの表示」を選択します。
-
フェイルオーバー・クラスタ・マネージャを開き、「起動」に移動して「フェイルオーバー・クラスタ・マネージャ」を検索して開きます。クラスタに接続し、「ロール」をクリックします。
使用した可用性グループ名はクラスタ上のロールであり、リスナーを構成しなかったため、その可用性グループにはクライアント接続用のIPアドレスがありません。OCIロード・バランサの作成後にリスナーを構成します。
この段階では、可用性グループは2つのSQL Serverレプリカで正常に構成されており、インスタンス間のフェイルオーバーが可能です。ただし、リスナーが設定されていないため、リスナーを使用したクライアント接続はまだできません。
タスク2: OCIロード・バランサの作成および可用性グループ・リスナーの構成
マルチサブネット設定の使用、各仮想マシンへのセカンダリIPアドレスの割当てなど、OCIでSQL Server Always On可用性グループ・リスナーを構成する方法はいくつかあります。これらのメソッドは有効ですが、多くの場合、フェイルオーバー・イベント中にIP移動を管理するために追加の構成またはカスタム・スクリプトが必要です。
Always On可用性グループを単一のサブネット環境にデプロイし、カスタム・スクリプト化を回避する場合、プライベートOCIロード・バランサを使用すると、合理化され信頼性の高いソリューションが提供されます。この項では、Always On可用性グループのリスナーとして機能するようにOCIロード・バランサを構成し、単一のサブネット内でのシームレスな接続およびフェイルオーバー処理を可能にします。
タスク2.1: SQL Server Always On可用性グループ・リスナーの静的プライベートIPアドレスの予約
OCIで静的プライベートIPを予約します。このIPは、後でWindowsフェイルオーバー・クラスタのSQL Server Always On可用性グループ・リスナーIPに割り当てられます。このIPアドレスは、他のサービスや仮想マシンにOCIでこのIPアドレスが割り当てられていないことを確認するために予約されています。このIPアドレスは、クライアントが接続に使用することはありませんが、可用性グループのフェイルオーバーに役立ち、OCIロード・バランサが正しいプライマリ・サーバーに接続をルーティングしていることを確認します。
-
OCIコンソールに移動し、「ネットワーキング」に移動して「Virtual Cloudネットワーク」をクリックします。
-
SQL Serverノードに使用しているVCNに移動します。
-
「サブネット」をクリックし、SQL Serverノードに使用されているサブネットに移動します。
-
「リソース」で、IPv4アドレスをクリックします。
-
「予約済IPv4アドレスの追加」をクリックします。
-
SQL Server Always On可用性グループ・リスナーに割り当てるIPアドレスを入力します。これは未使用のIPアドレスにできます。クライアントは、このIPアドレスを使用してリモートで接続できないことに注意してください。これは、Windowsフェイルオーバー・クラスタでSQL Server Always On可用性グループ・リスナーに割り当てるダミーIPです。このチュートリアルでは、
10.0.0.148
を使用しました。
タスク2.2: プライベートOCIロード・バランサの作成
ノート:ここに記載されていないフィールドは、デフォルトとして保持されます。
-
OCIコンソールに移動し、「ネットワーキング」および「ロード・バランサ」に移動します。
-
「ロード・バランサ」および「ロード・バランサの作成」をクリックします。
-
ロード・バランサ名を入力し、「可視性タイプ」として「プライベート」を選択します。
-
「ネットワーキングの選択」で、このロード・バランサに使用されるVCNおよびサブネットのコンパートメント名を選択します。SQL Serverノードに使用したものと同じVCNおよびサブネットを使用します。
-
「管理」で、このロード・バランサを作成するコンパートメントを選択します。ロード・バランサ、リスナーおよびバックエンドがまだアクティブなときに削除を防止して、意図しないサービスの中断を回避し、「次へ」をクリックします。
-
「バックエンド」で、ロード・バランシング・ポリシーを重み付けラウンド・ロビンとして指定します。
-
「バックエンド・サーバーの選択」で、SQL Serverノード(
DevSQL1
とDevSQL2
)を追加します。ポート番号を1433
に変更します。SQL Serverに別のポートを使用している場合は、それぞれのポート番号を入力します。 -
「ヘルス・チェック・ポリシーの指定」で、ポート番号が
59999
のTCPプロトコルを使用します。使用されていない任意のポートを使用できます。 -
その他すべての設定を「デフォルト」のままにし、選択したVCNのセキュリティ・リストを使用します。「次」をクリックします。
-
「リスナーの構成」で、「リスナー名」、「TCP」トラフィックおよび「ポート」番号を
1433
と入力します。残りすべての設定をデフォルトのままにします。 -
「次へ」をクリックし、構成を確認して「送信」をクリックします。
-
OCIロード・バランサがプロビジョニングされたら、「ネットワーキング」、「ロード・バランサ」に移動して「ロード・バランサ」をクリックすると、OCIロード・バランサのプライベートIPアドレスをノートにとることができます。
このチュートリアルでは、ロード・バランサのIPアドレスは10.0.0.149
です。これは、クライアントがSQL Server Always On可用性グループ・リスナーへの接続に使用するIPアドレスです。
タスク2.3: SQL Server Always On可用性グループ・リスナーの構成
-
プライマリ・レプリカをホストしているVMへのRemote Desktop Protocol (RDP)。このチュートリアルでは、
DevSQL1
です。これを確認するには、Windowsフェイルオーバー・クラスタ・マネージャ、ロールを開き、SQL可用性グループ・ロールの場合は、「所有者ノード」列を参照して、プライマリ・レプリカであるノードを確認します。 -
「ネットワーク」に移動し、ネットワーク「名前」を
$ClusterNetworkName
変数としてノートにとります。 -
クライアント・アクセス・ポイントを追加します。クライアント・アクセス・ポイントは、アプリケーションが可用性グループ内のデータベースに接続するために使用するネットワーク名です。
-
「フェイルオーバー・クラスタ・マネージャ」で、クラスタ名を開き、「ロール」を選択します。
-
「ロール」をクリックし、可用性グループ名を右クリックして「リソースの追加」を選択し、「クライアント・アクセス・ポイント」をクリックします。
-
「名前」で、この新しいリスナーの名前を作成します。新しいリスナーの名前は、アプリケーションがSQL Server可用性グループのデータベースに接続するために使用するネットワーク名です。
-
「次へ」を2回クリックし、「終了」を選択します。この時点でリスナーまたはリソースをオンラインにしないでください。
-
-
可用性グループのクラスタ・ロールをオフラインにします。「フェイルオーバー・クラスタ・マネージャ」で、「ロール」をクリックし、ロールを右クリックして「ロールの停止」を選択します。
-
可用性グループのIPリソースを構成します。
-
「リソース」をクリックし、作成したクライアント・アクセス・ポイントを展開します。クライアント・アクセス・ポイントがオフラインです。
-
IPリソースを右クリックし、「プロパティ」を選択します。IPアドレスの名前を
$IPResourceName
変数としてメモします。このチュートリアルでは、名前はIP Address 10.0.0.0
です。 -
「IPアドレス」をクリックし、「静的IPアドレス」を選択します。IPアドレスをタスク2.1で予約したIPアドレスとして設定します。このチュートリアルでは、
10.0.0.148
です。
-
-
SQL Server可用性グループをクライアント・アクセス・ポイントに依存させます。
-
フェイルオーバー・クラスタ・マネージャで、「ロール」をクリックし、可用性グループを選択します。
-
「リソース」をクリックし、「その他のリソース」の下にある可用性グループ・リソースを右クリックして、「プロパティ」をクリックします。
-
「依存性」をクリックし、クライアント・アクセス・ポイント(リスナー)の名前を追加します。
-
「OK」をクリックします。
-
-
クライアント・アクセス・ポイントをIPアドレスに依存させます。
-
フェイルオーバー・クラスタ・マネージャで、「ロール」をクリックし、可用性グループを選択します。
-
「リソース」をクリックし、「サーバー名」の下のクライアント・アクセス・ポイントを右クリックし、「プロパティ」をクリックします。
-
「依存関係」をクリックし、IPアドレスが依存関係であることを確認します。そうでない場合は、IPアドレスへの依存関係を設定します。複数のリソースが一覧表示されている場合は、IPアドレスにANDではなく ORの依存関係があることを確認し、「OK」をクリックします。
-
-
WindowsのPowerShellでクラスタ・パラメータを設定します。
-
次のPowerShellスクリプトをSQL Serverインスタンスのいずれかにコピーします。環境の変数を更新します。
-
「ネットワーク」を選択して「フェイルオーバー・クラスタ・マネージャ」で
$ClusterNetworkName
名を検索し、ネットワークを右クリックして「プロパティ」を選択します。$ClusterNetworkName
は、「一般」タブの「名前」の下にあります。 -
$IPResourceName
は、フェイルオーバー・クラスタ・マネージャのIPアドレス・リソースに指定された名前です。これは、「フェイルオーバー・クラスタ・マネージャ」で「ロール」を選択し、SQL Server可用性グループまたはFCI名を選択して、「サーバー名」の下の「リソース」を選択し、IPアドレス・リソースを右クリックして「プロパティ」をクリックすることで確認できます。正しい値は、「一般」タブの「名前」の下にあります。 -
$ListenerILBIP
は、可用性グループ・リスナー用にAzureロード・バランサで作成したIPアドレスです。SQL Server AG/FCIリスナー・リソース名と同じプロパティ・ページで、フェイルオーバー・クラスタ・マネージャで$ListenerILBIP
を検索します。 -
$ListenerProbePort
は、可用性グループ・リスナー用にAzureロード・バランサで構成したポート(59999
など)です。未使用のTCPポートはすべて有効です。
$ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name. $IPResourceName = "<IPResourceName>" # The IP address resource name. $ListenerILBIP = "<n.n.n.n>" # The IP address that we reserved in Task 2.1. This is the static IP address for the SQL Server AG Listener that you reserved in OCI Console. [int]$ListenerProbePort = <nnnnn> Import-Module FailoverClusters Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
このチュートリアルでは、次のものを使用しました。
$ClusterNetworkName = "Cluster Network 1" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name. $IPResourceName = "IP Address 10.0.0.0" # The IP address resource name. $ListenerILBIP = "10.0.0.148" # The IP address of the internal load balancer. This is the static IP address for the load balancer that you configured in the Azure portal. [int]$ListenerProbePort = 59999 Import-Module FailoverClusters Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
-
-
クラスタ・ノードの1つでPowerShellスクリプトを実行して、クラスタ・パラメータを設定します。
-
-
除外を追加すると、他のシステム・プロセスが同じポートに動的に割り当てられなくなります。このシナリオでは、すべてのクラスタ・ノードで次の除外を構成します。
netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent
-
可用性グループのクラスタ・ロールをオンラインにします。「フェイルオーバー・クラスタ・マネージャ」で、「ロール」をクリックし、ロールを右クリックして「ロールの開始」を選択します。
-
SQL Server Management Studioで、リスナー・ポートを設定します。
-
SQL Server Management Studioを開き、プライマリ・レプリカに接続します。
-
「Always On High Availability」の「可用性グループ」に移動し、「可用性グループ・リスナー」をクリックします。
-
タスク2.2で作成したリスナー名を右クリックし、「プロパティ」をクリックします。
-
「ポート」で、可用性グループ・リスナーのポート番号を指定し、「OK」をクリックします。デフォルト値は
1433
です。
-
-
DNSサーバーで、SQL可用性グループ・リスナー名を指すプライベートOCIロード・バランサIPアドレスのホストAレコードがあることを確認します。SQLリスナー・コンピュータ・オブジェクトがDNSレコードを更新できないことを確認します。これは、フェイルオーバー後に、DNSエントリがWindowsフェイルオーバー・クラスタで使用されているIPアドレスに更新されないようにするためです。
このチュートリアルでは、SQL可用性グループ・リスナーのホストAレコードを
10.0.0.148
ではなくIPアドレス10.0.0.149
で更新し、セキュリティを更新して、SQLAGL$
コンピュータ・オブジェクトがこのレコードを更新できず、読取りしかできないようにします。
これを実現する方法は他にもありますが、独自のソリューションを実装できます。目標は、OCIロード・バランサのIPアドレスを持つSQL Server可用性グループ・リスナーのDNSレコードを持つことです。
これで、SSMSまたは他のクライアント・ツールからSQL Server可用性グループ・リスナーへの接続をテストできます。
関連リンク
承認
- 著者 - Deviprasad Moolya (プリンシパル・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Configure Microsoft SQL Server Always On Availability Group on OCI with Listener and Load Balancer
G33425-01
Copyright ©2025, Oracle and/or its affiliates.