SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SCVMM 2008 R2 の冗長構成を考える – データベースをミラーリング –

leave a comment

SCVMM 冗長構成第 2 弾としてデータベースの冗長化について。
クラスタは通常のインスタンスと変わらないので、今回はミラーリングされているデータベースを使用する実験を。

?

■使用した環境

今回は以下の構成を使用しています。

SCVMM サーバーは前回使用した SQL Server のクライアントコンポーネントをインストールした環境を。

データベースに関してはミラーリングした SQL Server 2008 R2 Nov CTP を 3 台用意して、自動フェールオーバーの
ミラーリングの設定をしています。

image

■接続設定の変更

SCVMM サーバーは前回の環境を使用しているので参照先データベースの設定が前回の状態となっています。
まずはデータベースの参照先の設定変更が必要となります。

SCVMM の管理コンソールに [データベース接続] という管理項目があるのですが、この項目で確認できるデータベースの
接続先の情報は読み取り専用のため、変更することができません。

image?
?
接続先データベースの変更はレジストリを修正する必要があります。
# データベースに接続できないと管理コンソール開けないはずですので、レジストリを修正する形になっているのかと。

レジストリの修正箇所に関しては前回の投稿で書いた場所になるのですが、試してみたところ少し情報が足りなさそうでしたので、
今回の投稿でまとめてみました。

TechNet では以下の情報でデータベースの変更について記載されています。
VMM 2008 用 SQL Server のリモート インスタンスの構成

コマンドラインからのセットアップの情報も参考になりそうです。
コマンド ラインからの VMM コンポーネントのインストール

データベースの接続関連の設定は以下のキーに格納されています。

レジストリのキー
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft System Center Virtual Machine Manager ServerSettingsSql

?

正式な情報が見つからなかったので、今回の検証の結果からの内容になりますが各設定項目は以下のようになっているようです。

名前 種類 設定値
ConnectionString REG_SZ SCVMM で使用するデータベースの接続文字列
CreateNewInstance REG_DWORD 0:既定のインスタンスを使用
1:SQL Server Express を使用してローカルにインスタンスを作成

セットアップ時の選択内容が設定されているようです。

DatabaseName REG_SZ 接続先のデータベース名
InstanceName REG_SZ 接続先のインスタンス名

ブランクの時は既定のインスタンスが使用されるようです。

MachineFQN REG_SZ 接続先のデータベースサーバーの FQN

ここに設定されている内容が SVMM の管理コンソール表示されます。
ロカールインスタンスを使用するようにセットアップをした場合は
この項目は存在しません。
接続で使用されるのは [ConnectionString] の設定なのでこの項目は
ラベル的な意味合いかもしれないです。

MachineName REG_SZ 接続先のデータベースサーバーのサーバー名

ロカールインスタンスを使用するようにセットアップをした場合は
この項目は存在しません。
接続で使用されるのは [ConnectionString] の設定なのでこの項目は
ラベル的な意味合いかもしれないです。

OnRemoteServer REG_SZ 0:ローカルインスタンスを使用
1:リモートインスタンスを使用

?

今回はミラーリング環境ですので、[ConnectionString] をミラーリング用に変更する必要があります。
接続先のサーバーを指定する部分を以下のように変更します。

[変更前]
Server=データベースサーバー名

[変更後]
Server=プリンシパルサーバー名;Failover Partner=ミラーサーバー名

[設定例]
Server=2008R2-DBM-01;Failover Partner=2008R2-DBM-02

今まで、ローカルサーバーを使用していた場合は、[OnRemoteServer] の値も [1] に変更しておきます。

?

■接続先のデータベースに必要となる権限

SCVMM サーバーはデータベースサーバーの [sysadmin] 権限が必要となます。

SCVMM サーバー → データベースサーバーの接続に使用されるログインアカウントですが、

  • [Virtual Machine Manager] サービスをローカルシステムアカウントで実行している場合
    コンピュータアカウントで接続
  • [Virtual Machine Manager] サービスを任意のユーザーアカウントで実行している場合
    サービスの起動アカウントで接続

となりますのでサービスの実行アカウントの設定状態によって変更する必要があります。

コンピュータアカウントを SQL Server のログインとして設定する場合ですが、SQL Server Management Studio (SSMS) の
GUI を使用して設定ができなかったので、SQL を実行してログインを追加する必要がありました。

SSMS からだとオブジェクトの種類で [コンピュータ] が選択できないんですよね。
$ 付きでコンピュータアカウントを指定しても検索ができなかったので SQL で追加してしまいました。
image

以下はコンピュータアカウントのログインを作成するための SQL の一例です。

USE [master]
GO
— コンピュータアカウントのログインを作成
CREATE LOGIN [<ドメイン名><SCVMM サーバー名>$] FROM WINDOWS
WITH
DEFAULT DATABASE = [<SCVMM で使用するデータベース名]
GO

— 作成したログインに [sysadmin] 権限を付与
EXEC [master]..[sp_addsrvrolemember]
@loginname=N’<ドメイン名><SCVMM サーバー名>$’,
@rolename = N’sysadmin’
GO

?

■設定の反映

これでミラーリングされたデータベースを使用する準備は完了です。

[Virtual Machine Manager] サービスを再起動し、設定内容を反映させます。
image

再起動後に開始できないようでしたらレジストリの設定値が間違っている可能性があります。
# データベースに接続ができなくてもサービスは起動します。
開始できない場合はスペルミスがないか見直した方がよいかと思います。

?

■テストの実施

プリンシパルサーバーのサービスの停止または、手動フェールオーバーでデータベースをプリンシパル → ミラーに
フェールオーバーさせてテストを実施します。
image?image
?

SCVMM サーバーのデータベースの参照状態に依存するとは思うのですが、フェールオーバー中に必ず切断されるということは
ありませんでした。
# フェールオーバー時の復旧に時間がかかると切断されてしまうことがありましたが。

100% 接続を維持できるということはミラーリングの使用上難しい (アプリケーション側の再接続のロジックとの兼ね合い) ですが、
フェールオーバークラスタより、フェールオーバー時の停止時間は短いと思います。

残るはセルフサービスポータルの冗長化ですね。
これは今から検証環境を準備して次回投稿したいと思います。
# 私が普段使っている検証環境にセルフサービスポータルが入っていないことに今気付きました…。

Share

Written by Masayuki.Ozawa

1月 23rd, 2010 at 2:08 am

Posted in System Center

Leave a Reply