SQL Server FCIをFSx for Windowsを使って構築する(Windows内部編)

SQL Server FCIをFSx for Windowsを使って構築する(Windows内部編)

RDS for SQL Serverは利用できないが、SQL Server on EC2をマルチAZで動かしたい場合の選択肢となる、 SQL Server Always OnのFCIを構築する機会があったので構築手順を紹介します。
Clock Icon2021.03.15 13:13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSでSQL Serverを利用する場合、マネージドなRDS for SQL Serverを利用することをオススメします。

しかし、さまざまな理由によってRDS for SQL Serverを採用できず、EC2上でSQL Serverを利用することもあります。

今回はそんなケースで、RDS for SQL Serverは利用できないが、SQL Server on EC2をマルチAZで動かしたい場合の選択肢となる、 SQL Server Always OnのFCI(フェールオーバークラスタインスタンス)を構築する機会があったので構築手順を紹介します。

先日、SQL Server FCIをFSx for Windowsを使って構築するブログのAWSリソース編を書きました。

本ブログはこのブログの続編です。 AWSリソースはこのブログのとおり構築されていることを前提に、Windows内部の構築をやっていきます。

参考サイト

このAWSブログを参考にSQL Server FCI環境を作ります。

本ブログではWindows Serverにリモートデスクトップへログインして、Windows内部の環境構築をスクリーンショット付きで紹介していきます。

構成図

AWSの構成は次のような感じです。

それではさっそく構築していきます。

Windowsファイアウォールの無効化

まず最初に外部からSQL Serverへアクセスしたときにブロックされないよう、Windowsファイアウォールを無効化しておきます。

コントロールパネルからWindowsファイアウォールを開いて、「Windowsファイアウォールの有効化または無効化」をクリックします。

すべてWindowsファイアウォールを無効にしてOKします。

この作業をSQL Server Node用の2つのEC2に対して行います。

Windowsのネットワーク設定

このドキュメントを参考にWindowsのネットワークを設定します。

次のように、Windowsインスタンスで静的IPアドレスが 10.22.10.11 (もう一つのEC2は 10.22.11.11 )で指定して設定できていればOKです。

この作業をSQL Server Node用の2つのEC2に対して行います。

Windowsクラスターの構築

次に、Windowsクラスターを構築するためフェールオーバークラスタリングのインストールをします。

SQL Server Node用のEC2へリモートデスクトップでログインして、サーバーマネージャーを開きます。 「管理>役割と機能の追加」をクリックします。

役割と機能追加ウィザードが始まるので、次へ進みます。

次へ進みます。

次へ進みます。

次へ進みます。

「フェールオーバークラスタリング」にチェックを入れます。

機能の追加をクリックします。

次へ進みます。

「必要に応じて対象サーバーを自動的に再起動する」にチェックを入れます。 インストールをクリックします。

インストールにしばらく時間がかかるので待ちます。 インストールが終わると、Windowsが再起動されます。

同様に、別AZのSQL Server Node用EC2にも「フェールオーバークラスタリング」をインストール します。

両方のEC2にフェールオーバークラスタリングのインストールが終わったら、 再度SQL Server Node用のEC2にリモートデスクトップでログインしてサーバーマネージャーを開きます。

「ツール>フェールオーバークラスターマネージャー」をクリックします。

フェールオーバークラスターマネージャーが起動するので、「構成の検証」をクリックします。

次へ進みます。

「参照」ボタンをクリックします。

「ec2」と入力して、「名前の確認」をクリックします。

SQL Server Node用のEC2のホスト名を選択して、OKボタンをクリックします。

もう一度「ec2」と入力して、「名前の確認」をクリックします。

別AZのSQL Server Node用のEC2のホスト名を選択して、OKボタンをクリックします。

OKボタンをクリックします。

次へ進みます。

次へ進みます。

次へ進みます。

「検証されたノードを使用してクラスターを今すぐ作成する」にチェックを入れて、完了ボタンをクリックします。

そうすると、今度はクラスターの作成ウィザードが始まるのでそれを進めます。

次へ進みます。

クラスター名を適当に入力します。今回は TEST-CLUSTER という名前にします。 住所(IPアドレス)はクラスター用IPとして使用予定の 10.22.10.1210.22.11.12 を入力して、次へ進みます。

次へ進みます。

クラスターの作成ができたら、完了ボタンをクリックして終了します。

次にクラスタークォーラムの設定をします。 フェールオーバークラスターマネージャーで、TESUT-CLUSTERを選択して、 「他のアクション>クラスタークォーラム設定の構成」をクリックします。

次へ進みます。

「クォーラム監視を選択する」を選択して、次へ進みます。

「ファイル共有監視を構成する」を選択して、次へ進みます。

ファイル共有パスに、クォーラム用に作成したFSx for Windowsのドメイン名と共有フォルダ名を入力して、次へ進みます。

次へ進みます。

クラスターのクォーラム設定が正常に構成できたら完了します。

最後にTEST-CLUSTERがSQL Server FCIのもろもろのコンポーネントを作成できるようにフルコントロールの権限を付与します。 私はこの権限付与を忘れていて、SQL Serverインストール時にエラーが出てハマりました。

ADツールが必要なので、まずはサーバーマネージャーの役割と機能の追加から、「AD DSおよびAD LDSツール」にチェックを入れてインストールします。

インストールができたらサーバーマネージャを開き、 「ツール>Active Dirctoryユーザーとコンピューター」を開きます。

「表示>拡張機能」にチェックを入れます。

「example.local>example>Computers」を右クリックして、プロパティをクリックします。

セキュリティタブをクリックして、追加ボタンをクリックします。

オブジェクトの種類をクリックします。

「コンピューター」にチェックを入れて、OKボタンをクリックします。

オブジェクト名に「TEST-CLUSTER(クラスター名)」を入力して、OKボタンを押します。

詳細設定ボタンをクリックします。

「TEST-CLUSTER」を選択して、編集ボタンをクリックします。

「フルコントロール」にチェックを入れて、OKボタンをクリックします。

OKボタンをクリックします。これでWindowsクラスターの構築は完了です。

SQL Server FCIのインストール

次にSQL Serverのインストールをします。今回は検証目的ですので、評価版をこちらからダウンロードしてインストールします。 SQL Serverのライセンスの取り扱いについては、Microsoftの規約にしたがってください。

ダウンロードしたexeを起動するとこんな画面が表示されるので、「カスタム」を選択します。

インストールボタンをクリックします。

インストールのパッケージダウンロードに時間がかかるのでしばらく待ちます。

ダウンロードが終わるとSQL Serverインストールセンターが起動するので、 「インストール>SQL Serverフェールオーバークラスターの新規インストール」をクリックします。

次へ進みます。

ライセンス条項をよく読んでください。 ライセンス条項に同意できたらチェックを入れて次へ進みます。

次へ進みます。

次へ進みます。

「データベースエンジンサービス」にチェックを入れて、次へ進みます。

SQL Serverのネットワーク名を適当に入力します。今回は TEST-SQLSERVER という名前にしています。 名前付きインスタンスを「MSSQLSERVER」と入力して、次へ進みます。

次へ進みます。

次へ進みます。

アドレスにSQL Serverリスナー用IPとして使用予定の 10.22.10.13 を入力して、次へ進みます。

SQL ServerエージェントとSQL Serverデータベースエンジンに、example.localドメインのAdminユーザーとパスワードを設定します。 今回は検証用なのでAdminユーザーを使用していますが、必要に応じてSQL Server用のユーザーを作成してください。

「現在のユーザーの追加」ボタンをクリックして、example.localドメインのAdminユーザーでログインできるようにしておきます。 今回は検証用なのでAdminユーザーを使用していますが、必要に応じてSQL Serverログイン用のユーザーを作成してください。 クリックしたら、データディレクトリタブに移動します。

「データルートディレクトリ」にデータ用に作成したFSx for Windowsのドメイン名と共有フォルダ名を入力して、次へ進みます。

設定に問題がなければ、インストールボタンをクリックしてインストールを開始します。

インストールにしばらく時間がかかるので待ちます。

インストールが問題なく完了したら閉じます。

SQL Serverのインストールは各ノードに必要です。別AZのSQL Server Node用のEC2にもインストールします。

同様にSQL Server評価版をダウンロードして、SQL Serverインストールセンターを立ち上げて、 「インストール>SQL Serverフェールオーバークラスターにノードを追加」をクリックします。

次へ進みます。

アドレスにSQL Serverリスナー用IPとして使用予定の 10.22.11.13 を入力して、次へ進みます。

SQL ServerエージェントとSQL Serverデータベースエンジンにパスワードを入力して、次へ進みます。

設定に問題がなければ、インストールボタンをクリックしてインストールを開始します。

インストールにしばらく時間がかかるので待ちます。

インストールが問題なく完了したら閉じます。

インストールが終わったあと、フェールオーバークラスターマネージャの「役割>リソース」をクリックして確認すると、 SQL Serverの役割で2つのEC2のSQL Serverリスナー用IP( 10.22.10.13 , 10.22.10.13 )がFCI(フェールオーバークラスターインスタンス)として設定されているのがわかります。

これでSQL Server FCIのインストールは完了です。

SQL Server FCIへ接続してみる

SQL Server FCIが構築できたので、SSMS(SQL Server Management Studio)を使ってSQL Serverへ接続してみます。

あらかじめBastionサーバーにSSMSをダウンロードしてインストールしておきます。

SSMSを起動すると接続ダイアログが表示されるので、Server nameに TEST-SQLSERVER(SQL Serverのネットワーク名) を入力します。 インストール時にexample.localドメインのAdminユーザーでログインできるように設定しておいたので、AuthenticationはWindows Authenticationをそのまま使います。

接続できたら、新しいデータベースを作ってみます。 「Database」を右クリックして、「New Database」をクリックします。

適当なデータベース名を入力して、OKします。今回は TESTDB という名前にしています。

次のSQLを実行して、 TESTS テーブルを作成します。

CREATE TABLE TESTS (
    ID    INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    NAME  NVARCHAR(20) NOT NULL
);

INSERT文を実行して、TESTSテーブルにデータを追加します。

INSERT INTO TESTS (name) 
  values ('TEST');

次のSELECT文を実行して、TESTSテーブルに追加したデータを確認できます。

SELECT * FROM TESTS;

結果、SQL Serverは問題なく使用できていそうです。

SQL Server FCIをフェールオーバーさせてみる

最後に、実際にサーバーをダウンさせてSQL Serverがフェールオーバーするか動作確認してみます。

フェールオーバークラスターマネージャーを確認すると、現在SQL Serverは 10.22.10.13 (ap-northeast-1a)の方で動いていそうです。

ですので、ap-northeast-1aの方のSQL Server Node用EC2をシャットダウンしてみます。

その後、フェールオーバークラスターマネージャーを確認すると、10.22.10.13 (ap-northeast-1a)はオフラインになり、SQL Serverが 10.22.11.13(ap-northeast-1c)の方に切り替わっていることがわかります。

再度SSMSでSQL Serverに接続してみて、さきほど作成したテーブルとデータが存在するか確認してみます。 SSMSを起動して、 TEST-SQLSERVER を入力して接続します。

同じ様にSELECT文を実行してみると、先程のTESTSテーブルに追加されたデータが確認でき、無事フェールオーバーできていることが確認できました。

終わりに

これでFSx for Windowsを利用したSQL Server FCIの構築ができました。

Windowsにあまり詳しくないので、Windowsでエラーが発生したときの原因調査に絶賛苦労中です。

このブログがどなたかの役に立てば幸いです。

参考

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.