SQL Server AlwaysOn 構築メモ（その１）


最近はめっぽうMySQLなのですが、仕事で少し触る機会があったので、備忘も兼ねてメモしておきます。

基本的にはMSさんのよく出来た[自習書](http://www.microsoft.com/ja-jp/server-cloud/local/sqlserver/2012/technology/self-learning.aspx)を見ればいいのですが、1つ難点なのが重要前提手順となるWindows Server Failover Clustering(WSFC)の構成の詳細が書かれていないことです。

WSFCについては、[やまさんノート](http://yama30501.blog137.fc2.com/blog-entry-30.html)が参考になります。

また、手順書では操作がコマンドラインだったり、GUIだったりするので、ここではGUIでのやり方に極力統一してみます。

##全体構成

１つの記事として書くには量が多いので、数回にわけました。

* その１：[前提知識の整理と基礎環境構築編](http://qiita.com/zaburo/private/5ca86becda6023b90f7e)
* その２：[WSFC(Window Server Failover Clustering)構築編](http://qiita.com/zaburo/private/cb8f82ebbe553ccbb6fe)
* その３：[AlwaysOn構築編](http://qiita.com/zaburo/private/3468af8cd7d89b4c8bd5)
* その４：[接続確認編](http://qiita.com/zaburo/private/055542f1f1b36668b87f)
* その５：[テストしてみる](http://qiita.com/zaburo/private/b25794fa2b05bcf331e7)
* その６：[その他（可用性グループへのDB追加など）](http://qiita.com/zaburo/private/3c3d17051bb612828fda)

必要に応じて追加していくつもりです。

##本シリーズの前提

###前提知識

ここでは、Windows Serverや、SQL Serverのインストール経験があることを前提にしていますので、Windows ServerやSQL Serverのインストールの詳細は説明していません。

###前提環境

* OS : Windows Server 2012 R2 Standard
* SQL : SQL Server 2014 (Enterprise or Developer)

となります。SQL Serverは2012でも手順はほぼ変わりません。

###その他

私は、Mac上のVMWare Fusionでテストしましたが、もちろん、実サーバ、クラウドでも何でもかまいません。
Azure上での構築は[SEの雑記](http://blog.engineer-memo.com/2013/05/08/alwayson-%E3%82%92-azure-%E4%B8%8A%E3%81%AB%E6%A7%8B%E7%AF%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B-wsfc-%E3%81%AE%E6%A7%8B%E7%AF%89%E7%B7%A8/)が参考になります。

##本編での主な内容

本編では、前提知識整理とActiveDirecotryの構築くらいまでを書きます。

* 前提知識の整理
* ActiveDirecotryの設定

##AlwaysOnとは？

そもそもAlwaysOnは、SQL Server2012から搭載された冗長化のための機能で、複数のSQL Serverのグループ（可用性グループ）を仮想的に1台のSQL Serverのに見せ、グループのいずれか1台が正常に機能していれば、接続先からは正常に動いているように見せるという技術です。

いわゆるシェアードナッシングで構成できるため、非常にお手軽かつ強力なソリューションです。

説明すればきりがないので詳細な説明は他の記事に譲ります。

##AlwaysOnの登場要素

AlwaysOnの構成要素は広範囲に及ぶので、０から設定していると、今、自分が何を、何のために設定しているのかわからなくなります。ですので登場要素や意味を簡単におさらいしておきます。

AlwaysOnの要素に対する私の理解はおおよそ下記のような感じです。

![ao](http://www.bluecode.jp/qiita/ao001.png)

2台のSQLサーバがリスナーを介して利用者からは1台に見えます。
通常はプライマリ(SQL1)が動いていますが、SQL1がダウンした際には、SQL2がプライマリになります。
リスナーや障害検知等、冗長化機能のベースはWSFC(Windows Server Failover Clustering)が提供しており、WSFC含め、全体の制御基盤をAD(ActiveDirectory)が提供しているという感じです。

>alwaysOnは可用性向上のソリューションであって、基本、負荷分散はできません。ただ、SQL2はReadOnly用のDBとしては使えるのでMySQLのレプリケーションのように、用途がマッチすれば参照系の分散はできます。

つまり、0ベースからAlwaysOnを利用するためには、

* ADの構築
* WSFCの構築（SQL Serverをホストする各サーバにおいて）
* SQL Serverの設定

を行う必要があるということです。

##構築の前提

では、具体的な設定を見ていきたいと思います。
ここでは、Windows Server 2012 R2のインストールを完了し、かつ、Windows Updateを適用した3台のサーバが存在することを前提に話を進めます。構築に利用する各サーバは、

* WS2012R2-AD (略AD)
* WS2012R2-SQL1 (略SQL1)
* WS2012R2-SQL2 (略SQL2)

という名前にします。
IPアドレス等は上記の図の通りとします。IPベースで言えば、実サーバの3つに加え、リスナー用に1つ。クラスター（管理）用に1つの、合わせて5つのIPを仕様することになります。

作業の大きな流れとしては、

* ADの構築
* SQL1,SQL2をドメインに参加させる
* SQL1,SQL2上でWSFCを構成
* SQL1,SQL2にSQL Serverをインストール
* SQL1,SQL2をAlwaysOnできるよう構成
* AlwaysOn（可用性グループ）の設定

という感じになります。

##ActiveDirectoryの設定

ADにActiveDirectoryを構成します。
ADの設定は多くの情報があるので、詳細は他に譲ります。ここでは主要部分だけ抜粋して紹介します。

###ActiveDirecotryのインストール

サーバの役割の追加から「ActiveDirecotryドメインサービス」を追加します。

![ao](http://www.bluecode.jp/qiita/ao002.png)

###ドメインコントローラーへの昇格（構成）

インストールするだけではためなので、インストール後、「このサーバーをドメインコントローラーに昇格する」で、ドメインコントローラーに昇格させます。昇格作業はウイザードにしたがって行っていきます。

![ao](http://www.bluecode.jp/qiita/ao003.png)

テストなので、既存のフォレストやドメインは無いと思いますので、配置構成では「新しいフォレストを追加する」を選びます。
ルート/ドメインは、適当でいいですが、hoge.localとか分かりやすいものを登録しておきましょう（もちろん、本番なら、まじめに設定します）。

![ao](http://www.bluecode.jp/qiita/ao004.png)

あとは基本デフォルトで進めていきます。

![ao](http://www.bluecode.jp/qiita/ao006.png)

いくつかのアラートはあるものの、正常に構成されたメッセージがでればそれでOKです。

##ドメインへの参加

ADが構成されたので、SQL1とSQL2をセットアップし、ドメインに参加させましょう。
先述の通り、SQL1,SQL2はWidnwos Server 2012 R2 Stdがインストールされた状態（SQLは未インストール）として話を進めます。

ドメインを認識するためには、サーバの名前解決ができないといけないので、SQL1,SQL2のDNSとしてADマシンのIPを指定します。

![ao](http://www.bluecode.jp/qiita/ao007.png)

その後、システムのプロパティからドメインに参加させます。

![ao](http://www.bluecode.jp/qiita/ao008.png)

登録時にはアカウントとパスワードを聞いてきますので、それぞれadministratorとそのパスワードを入力して下さい。
SQL1,SQL2で同じ操作を行った後、各サーバを再起動します。

ADサーバの「ユーザーとコンピューター」にて、両サーバが認識されているか確認します。
認識されているようです。

![ao](http://www.bluecode.jp/qiita/ao009.png)

ここまでの手順で次のWSFCの構築ステップにむけた基本的な準備が整いました。
その１は、ひとまずここまでとして、つづきは[その２](http://qiita.com/zaburo/private/cb8f82ebbe553ccbb6fe)をどうぞ。