【Part1:環境準備編】Azure VM上のSQL ServerにAlways On可用性グループを構成してみた

こんにちは。GWを挟んでしばらく更新がストップしていましたが、また再開していきたいと思います。今日は、SQL ServerのAlwaysOn可用性グループをちゃんと理解したいなぁと思い、実際に構築してみましたので、備忘も兼ねてその手順を残しておこうと思います。

なお、オンプレのSQL Serverはもっていないので、AzureのSQL Server IaaSオプションであるSQL仮想マシン上でこの構成を実現してみました。

それではまいります。

Contents

AlwaysOn可用性グループとは?

そもそもAlwaysOn可用性グループってなんやねん、という方(はこの記事にたどり着いていない気がしますが笑)は、以下にまとめていますのでご参照ください。

今回目指す構成

今回構築する構成は以下の図の通りです。

2台のSQL ServerでAlwaysOn可用性グループを組む構成です。

こんな構成SQL Server初学者の自分が自力で構成しきれる気がしない・・と私も思いましたがご安心ください、以下に完全なチュートリアルがありますので、今回こちらに従って進めていきたいと思います。

チュートリアル:Azure Virtual Machines 上の SQL Server に可用性グループを作成するための前提条件

https://docs.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/availability-group-manually-configure-prerequisites-tutorial-single-subnet

以下は後編の記事で辿る内容になっています。この記事では上の記事の範囲を辿っています。

チュートリアル:可用性グループを手動で構成する (Azure VM 上の SQL Server)

https://docs.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/availability-group-manually-configure-tutorial-single-subnet?view=azuresql

環境構築ステップ

ここからの手順は、以下のドキュメントを参照して進めています。が価格を抑えたり、最新バージョンで構成を試してみるために、ところどころ変えています。

チュートリアル:Azure Virtual Machines 上の SQL Server に可用性グループを作成するための前提条件

https://docs.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/availability-group-manually-configure-prerequisites-tutorial-single-subnet

リソースグループの作成

ここはドキュメントの通り。

仮想ネットワークの作成

作成するリソース
  • 仮想ネットワーク x 1
  • 仮想ネットワークサブネット x 1

ここも基本はドキュメントの通り。サブネットアドレス範囲のプレフィックスは29とドキュメントには書いていますが、ここではポータル規定値の通り24でいきました。(手抜き)

可用性セットの作成

作成するリソース
  • 可用性セット x 2(ドメインコントローラー用、SQL Server用)

続いて可用性セットを作成します。可用性セット上にVMをデプロイすることで、ローカルの冗長性を高めることができます。可用性セットの詳細はこちら。

https://docs.microsoft.com/ja-jp/azure/virtual-machines/availability-set-overview

まずはドメインコントローラー用。

続いてSQL Server用。

ドメインコントローラ用VMの作成

作成するリソース
  • 仮想マシン x 2 (Primary、Secondary)

続けて、先ほど作成した仮想ネットワークサブネットに、ドメインコントローラー用のVMを作成します。こいつは後にDNSの役割を果たします。

以下の手順を、VM名以外は全く同じ手順でプライマリ、セカンダリ用に2回実行してVMを2つ作ります。

下のキャプチャは最初2022 Azure Editionで試したときのものですが、この場合なぜか後続ステップでActive Directory Domain Serviceのインストールができなかったので、注意・・・。構成のテストだけなら無難に手順の通りWindows Server 2016で作っておくとよさそうです。

仮想マシンスペックはケチらず・・

公式ドキュメントで指定されているスペックは月10000万円程度で個人がちょっと試してみるにはなかなかの負担です。

仮想マシンスペックを最安のB1s(月1000円ちょっと)で作ると、このあとのプロセス(ドメインコントローラーの構成ステップ)でメモリ不足で死にます笑

結局私はB2sで動かしました。

あとはディスクオプションをちょっとけちったり。

仮想ネットワーク設定以降はドキュメント通り。

これでドメインコントローラー用のVM作成は完了。

プライマリドメインコントローラーを構成する

続いてプライマリのドメインコントローラーの構成。ドキュメントのガイドの通り進めます。

具体的にはActive Directory Domain ServicesとDNS Serverの機能を追加します。

各機能のインストール後、ドメインの構成を行います。今回はテスト用のドメインとして、ドキュメントの通り「corp.conotoso.com」を利用します。

先ほど追加したAD DSから右上の”More”へ進み・・・

サーバーの昇格を選択し・・・

新しいフォレスト「corp.contoso.com」を追加します。

パスワードをドキュメントの通り設定し・・

検証にパスしたら、構成のインストールを実行します。

これでプライマリドメインコントローラーVMの設定はおしまい。

仮想ネットワークの DNSを構成する

次に最初に作成した仮想ネットワークのDNSに、先ほど構成したドメインコントローラーのプライベートIPを設定します。プライベートIPはVMの以下メニューから確認できます。

これで、この仮想ネットワーク内のDNSとして、先ほど構成したプライマリドメインコントローラーが使われるようになりました。

セカンダリのドメインコントローラーを構成する

続いてセカンダリの構成。

まずはこのVMの優先DNSをプライマリドメインコントローラーに変更します。

ネットワークと共有設定 > Ethernet > Properties > IPv4から・・・

優先DNSを、プライマリドメインコントローラーのプライベートIPで設定します。

そんでからプライマリと同じようにDNSとAD DS機能の追加。

追加できたらプライマリと同様に参加ドメインの設定。

ただし、既にドメインcorp.contoso.comは作成済のため、それに参加する形で構成します。違いはそれだけ。

ドメインに参加する際には、ドメインのパスワードなどが聞かれるので公式ドキュメントの通り入力。

検証にパスしたことを確認して構成のインストールを実行!

これでセカンダリドメインコントローラーVMの構成も完了。

ドメインコントローラーを冗長構成にする

次に、仮想ネットワークのDNSサーバー一覧に、上のステップで構成したセカンダリのドメインコントローラーのプライベートIPアドレスを追加してDNSの冗長化を実現します。

ドメイン内で使用するアカウントを作成する

作成するリソース
  • 3つのユーザー(Install、SQLSvc1、SQLSvc2)

続いて、ドメイン内で利用するアカウントの作成。これは、プライマリドメインコントローラーから作成します。

AD DS > corp (local) > Users > New > Userで、公式ドキュメントの通りの情報を入力して3アカウント作成します。

Installユーザに必要権限を付与

続いて、Installユーザに、必要な権限を付与します。このアカウントは、後程可用性グループを構成する際に利用するので、そこで必要な権限を追加しておくようですね。

AD DS > corp (local) > Users > Propertiesで・・・

Security設定のAdvanced Settingsに進み・・

Installユーザに対する新しい権限を作成し・・・

Read all propertiesとCreate Computer objects権限を少なくとも含めておきます。

クォーラム監視用VMとSQL Server VMを作成する

作成するリソース
  • VM x 3 (SQL Server プライマリ、SQL Server セカンダリ、可用性グループの監視用サーバー)

必要なアカウントの事前セットアップも完了したので、次はいよいよ可用性グループを構成する際の主役であるSQL Serverと監視サーバーを作成します。

公式ドキュメントの手順の通りですが、また私はVMやディスクのSKUをケチって作成しました。

あと、これらのVMは先ほどドメインコントローラをデプロイしたAdminサブネットとは異なるサブネット「sqlsubnet」に配置するため、そちらも併せて作成します。

VMをドメインへ参加させる

次に、作成した3つのVMをすべて「corp.contoso.com」ドメインに参加させます。

それぞれのVMで、Local Server > Workgroupから、参加ドメインの変更を行います。

各VMにユーザー”Install”を管理者として設定する

次に、先ほど事前に設定しておいたInstallユーザを各VMのAdministratorとして追加していきます。

3つのVMすべてで、Tools > Local Users and Groups > Groups > Administrators > Addから、CORP\Installユーザを追加していきます。

SQL Server VMに、ユーザー”Install”用のサインインを作成する

続いて、SQL Server VM 2台それぞれに、Installアカウント用のサインインを作成します。

CORP\DomainAdminではなく、DomainAdminでVMにログインし、SSMSを起動してSQL Serverに接続します。(CORP\DomainAdminでログインすると、SSMSからSQL Serverに接続できません)

Security > Loginsを右クリックして、Installアカウントのログインを作成します。

このとき、Sysadmin権限を付与することを忘れずに。

システムアカウントのアクセス許可を構成する

続いて、Systemアカウントのセットアップ。公式ドキュメントの通りのT-SQLを実行して必要な権限を付与します。これも各SQL Serverで実施する。

SQL Server サービスアカウントを変更する

次にSQL Serverサービスアカウントの設定。規定だとNT Service/MSSQLSERVERですが、これを各SQL Serverで、先ほど作成したSQLSvc1, SQLSvc2に変更する。

SQL Server VMにフェールオーバークラスター機能を追加する

前準備ももうすぐ終わりです。続いてSQL Server各VMにフェールオーバークラスター機能を追加します。

SQL Server VMのファイアウォールを構成する

最後にSQL Server各VMで、ファイアウォールの設定を追加します。

1443, 59999, 5022ポートを開けておきます。

以上、ここまでが前準備のステップでした。チュートリアルみながらだけど初学者には手順がややこしくだいぶ時間かかった汗

この記事はいったんここまでにして、次の記事ではこの構成をもとにAlwaysOn可用性グループの構成を進めていきたいと思います。

後編はこちら。

つづく

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。