最近はめっぽうMySQLなのですが、仕事で少し触る機会があったので、備忘も兼ねてメモしておきます。
基本的にはMSさんのよく出来た自習書を見ればいいのですが、1つ難点なのが重要前提手順となるWindows Server Failover Clustering(WSFC)の構成の詳細が書かれていないことです。
WSFCについては、やまさんノートが参考になります。
また、手順書では操作がコマンドラインだったり、GUIだったりするので、ここではGUIでのやり方に極力統一してみます。
##全体構成
1つの記事として書くには量が多いので、数回にわけました。
- その1:前提知識の整理と基礎環境構築編
- その2:WSFC(Window Server Failover Clustering)構築編
- その3:AlwaysOn構築編
- その4:接続確認編
- その5:テストしてみる
- その6:その他(可用性グループへのDB追加など)
必要に応じて追加していくつもりです。
##本シリーズの前提
###前提知識
ここでは、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の雑記が参考になります。
##本編での主な内容
本編では、前提知識整理とActiveDirecotryの構築くらいまでを書きます。
- 前提知識の整理
- ActiveDirecotryの設定
##AlwaysOnとは?
そもそもAlwaysOnは、SQL Server2012から搭載された冗長化のための機能で、複数のSQL Serverのグループ(可用性グループ)を仮想的に1台のSQL Serverのに見せ、グループのいずれか1台が正常に機能していれば、接続先からは正常に動いているように見せるという技術です。
いわゆるシェアードナッシングで構成できるため、非常にお手軽かつ強力なソリューションです。
説明すればきりがないので詳細な説明は他の記事に譲ります。
##AlwaysOnの登場要素
AlwaysOnの構成要素は広範囲に及ぶので、0から設定していると、今、自分が何を、何のために設定しているのかわからなくなります。ですので登場要素や意味を簡単におさらいしておきます。
AlwaysOnの要素に対する私の理解はおおよそ下記のような感じです。
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ドメインサービス」を追加します。
###ドメインコントローラーへの昇格(構成)
インストールするだけではためなので、インストール後、「このサーバーをドメインコントローラーに昇格する」で、ドメインコントローラーに昇格させます。昇格作業はウイザードにしたがって行っていきます。
テストなので、既存のフォレストやドメインは無いと思いますので、配置構成では「新しいフォレストを追加する」を選びます。
ルート/ドメインは、適当でいいですが、hoge.localとか分かりやすいものを登録しておきましょう(もちろん、本番なら、まじめに設定します)。
あとは基本デフォルトで進めていきます。
いくつかのアラートはあるものの、正常に構成されたメッセージがでればそれでOKです。
##ドメインへの参加
ADが構成されたので、SQL1とSQL2をセットアップし、ドメインに参加させましょう。
先述の通り、SQL1,SQL2はWidnwos Server 2012 R2 Stdがインストールされた状態(SQLは未インストール)として話を進めます。
ドメインを認識するためには、サーバの名前解決ができないといけないので、SQL1,SQL2のDNSとしてADマシンのIPを指定します。
その後、システムのプロパティからドメインに参加させます。
登録時にはアカウントとパスワードを聞いてきますので、それぞれadministratorとそのパスワードを入力して下さい。
SQL1,SQL2で同じ操作を行った後、各サーバを再起動します。
ADサーバの「ユーザーとコンピューター」にて、両サーバが認識されているか確認します。
認識されているようです。
ここまでの手順で次のWSFCの構築ステップにむけた基本的な準備が整いました。
その1は、ひとまずここまでとして、つづきはその2をどうぞ。