チュートリアル : スケールアウト配置
このシナリオは、Notification Services のインスタンスを複数のサーバーに配置する方法を示します。このシナリオでは、データベースをリモート サーバーに置き、エンジン コンポーネントを 3 つのサーバーにスケールアウトします。この配置シナリオは、多数の通知を効率的に書式設定して配信するために複数のサーバーを必要とする、大規模なアプリケーションを対象としています。
メモ : |
---|
Notification Services の配置はすべて、それぞれが異なります。このトピックの手順は、独自の配置手順を開発およびテストするためのガイドラインとして使用してください。 |
以下の図に、この配置シナリオのハードウェア構成を示します。このシナリオでは 4 台のサーバー (NS1、NS2、NS3、SQL1) を使用します。Notification Services エンジンは、NS1、NS2、NS3 の各サーバーで実行されます。NS1 ではイベント プロバイダとジェネレータが実行され、NS2 と NS3 ではディストリビュータが実行されます。SQL1 は、インスタンス データベースおよびアプリケーション データベースをホストします。
NS1、NS2、NS3 のディスク ドライブは 1 つまたは 2 つで構成できます。これらのサーバーではドライブの数は重要ではありません。ただし、SQL1 には、データベース エンジン、データ ファイル、ログ ファイル、および tempdb のそれぞれに 1 つずつ、複数のディスク ドライブがあります。これは、データベースのパフォーマンスを向上させるためです。
前提条件
Notification Services のインスタンスを配置する前に、以下のすべての前提条件が満たされていることを確認します。
- NS1、NS2、NS3 には既にオペレーティング システムがインストールされており、必要な Service Pack と更新プログラムがすべて適用されていること。
- SQL1 には既に Microsoft Windows と Microsoft SQL Server 2005 データベース エンジン がインストールされており、必要な Service Pack と更新プログラムがすべて適用されていること。
- サーバーの管理特権を持ち、SQL Server の sysadmin 固定サーバー ロールのメンバとなっているアカウントを使用して手順を実行していること。
- Notification Services Windows サービスのアカウントがドメイン管理者などによって作成されていること。このチュートリアルの場合、必要なアカウントは、サーバー NS1 (ホストされるイベント プロバイダとジェネレータを実行) の DOMAIN\NSEPGen アカウントと、サーバー NS2 およびサーバー NS3 (ディストリビュータを実行) の DOMAIN\NSDist アカウントです。個別のアカウントを作成することにより、さらに権限を制御できます。
- イベントと通知データのために必要なファイル共有を作成し、それらのファイルにアクセスするために必要な権限を自分のアカウント、DOMAIN\NSEPGen アカウント (イベントのピックアップのため)、および DOMAIN\NSDist アカウント (通知の配信のため) に許可していること。
- データベース エンジン で TCP/IP または名前付きパイプのネットワーク プロトコルが有効になっていること。SQL Server 2005 では、これらのネットワーク プロトコルが既定で無効になっています。詳細については、「SQL Server セキュリティ構成」を参照してください。
配置の概要
この配置チュートリアルでは、NS1 (Notification Services エンジンを実行するサーバー) で次の作業を実行します。
- Notification Services をインストールします。
- NSEPGen アカウントに Windows 権限を許可します。
- Notification Services のインスタンスを作成し、有効にします。
- Notification Services のインスタンスを登録します。これにより、Notification Services エンジン コンポーネントを実行する Windows サービスが作成されます。
- 通知の生成を開始する準備ができたら、Notification Services のインスタンスを開始します。
追加の Notification Services エンジン コンポーネントを実行する NS2 と NS3 で次の作業を実行します。
- Notification Services をインストールします。
- NSDist アカウントに Windows 権限を許可します。
- Notification Services のインスタンスを登録します。これにより、Notification Services エンジン コンポーネントを実行する Windows サービスが作成されます。
- 通知の生成を開始する準備ができたら、Notification Services のインスタンスを開始します。
SQL1 (データベースをホストするサーバー) で次の作業を実行します。
- Windows アカウントにデータベース権限を許可します。
メモ : Notification Services では、SQL Server 認証もサポートされています。 可能な場合は、Windows 認証を使用します。
次の手順では、Notification Services コマンド プロンプトを使用して配置のスクリプトを作成する方法を紹介します。SQL Server Management Studio を使用して Notification Services のインスタンスを配置することもできます。SQL Server Management Studio によるシングルサーバーへの配置の手順については、「SQL Server Notification Services サンプル」を参照してください。
NS1 での作業
手順 1 : ソフトウェアのインストール
Notification Services をインストールします。その他のコンポーネントもインストールできますが、このチュートリアルの手順では必要ありません。
コンポーネントのインストールの詳細については、「SQL Server Notification Services のインストール」を参照してください。
手順 2 : DOMAIN\NSEPGen アカウントへの Windows 権限の許可
[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft SQL Server 2005]、[Notification Services] を順にポイントします。次に、[Notification Services コマンド プロンプト] をクリックして、Notification Services コマンド プロンプト ウィンドウを開きます。
ローカルの Users グループに DOMAIN\NSEPGen アカウントを追加します。コマンド プロンプトで、次の net localgroup コマンドを入力します。
net localgroup users DOMAIN\NSEPGen /add
ローカル グループにアカウントを追加する方法については、Windows のマニュアルを参照してください。
手順 3 : Notification Services のインスタンス作成および有効化
コマンド プロンプトで次のコマンドを入力して、インスタンス データベースとアプリケーション データベースを作成します。
nscontrol create -in "Path\ICFName"
ICF によっては、追加のコマンド プロンプト引数やパラメータが必要になることもあります。
次のコマンドを入力して、インスタンスを有効にします。
nscontrol enable -nameinstanceName-serverdatabaseServer
Notification Services エンジンがまだインストールおよび起動されていないため、エンジン コンポーネントは "有効化中" 状態になっています。
インスタンスを登録してから有効にする場合は、-server 引数を省略できます。
手順 4 : Notification Services のインスタンスの登録
開いたままにしておいたコマンド プロンプト ウィンドウで、次のコマンドを入力します。
nscontrol register -nameinstanceName-serverdatabaseServer-service
-serviceusername DOMAIN\NSEPGen
-servicepassword"password"
このコマンドが完了すると、NS$instanceName という名前の Windows サービスがローカル コンピュータに作成されます。
メモ : |
---|
SQL Server 認証を使用する場合は、インスタンスを登録するときに、SQL Server 認証のログインとパスワードを指定します。その後、このログインに権限を許可します。 |
NS2 と NS3 の手順
このスケールアウト シナリオでは、NS2 と NS3 でディストリビュータを実行します。これらのサーバーでインスタンスを登録して、Windows サービスを作成する必要があります。インスタンスを登録する前に、Notification Services をインストールし、サービス アカウントに Windows 権限を許可する必要があります。
手順 1 : ソフトウェアのインストール
Notification Services をインストールします。その他のコンポーネントもインストールできますが、このチュートリアルの手順では必要ありません。
コンポーネントのインストールの詳細については、「SQL Server Notification Services のインストール」を参照してください。
手順 2 : DOMAIN\NSDist アカウントへの Windows 権限の許可
[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft SQL Server 2005]、[Notification Services] を順にポイントします。次に、[Notification Services コマンド プロンプト] をクリックして、Notification Services コマンド プロンプト ウィンドウを開きます。
ローカルの Users グループに DOMAIN\NSDist アカウントを追加します。コマンド プロンプトで、次の net localgroup コマンドを入力します。
net localgroup users DOMAIN\NSDist /add
ローカル グループにアカウントを追加する方法については、Windows のマニュアルを参照してください。
手順 3 : Notification Services のインスタンスの登録
開いたままにしておいたコマンド プロンプト ウィンドウで、次のコマンドを入力します。
nscontrol register -nameinstanceName-serverdatabaseServer-service
-serviceusername DOMAIN\NSDist
-servicepassword"[password]"
このコマンドが完了すると、NS$instanceName という名前の Windows サービスがローカル コンピュータに作成されます。
メモ : |
---|
SQL Server 認証を使用する場合は、インスタンスを登録するときに、SQL Server 認証のログインとパスワードを指定します。その後、このログインに権限を許可します。 |
SQL1 での作業
Notification Services エンジンに SQL Server とデータベースの権限を許可する必要があります。NS1、NS2、または NS3 にワークステーション コンポーネントがインストールされている場合は、それらのサーバーでこの作業を実行できるため、SQL1 にログインする必要はなくなります。
SQL Server とデータベースの権限の許可
コマンド プロンプト ウィンドウを開きます。
次のコマンドを入力して、DOMAIN\NSEPGen アカウントと DOMAIN\NSDist アカウントの SQL Server ログインを作成します。
sqlcmd -E -S databaseServer -Q "CREATE LOGIN [DOMAIN\NSEPGen] FROM WINDOWS;"
sqlcmd -E -S databaseServer -Q "CREATE LOGIN [DOMAIN\NSDist] FROM WINDOWS;"
コマンド プロンプトで次のコマンドを入力して、インスタンス データベースに DOMAIN\NSEPGen ユーザーと DOMAIN\NSDist ユーザーを作成し、DOMAIN\NSEPGen ユーザーをデータベース ロール NSEventProvider と NSGenerator に、DOMAIN\NSDist ユーザーをデータベース ロール NSDistributor に追加します。
sqlcmd -E -SdatabaseServer-Q "USEinstanceDatabase;
** EXEC CREATE USER [DOMAIN\NSEPGen];**
** EXEC CREATE USER [DOMAIN\NSDist];**
** EXEC sp_addrolemember N'NSEventProvider', N'DOMAIN\DOMAIN\NSEPGen';"**
** EXEC sp_addrolemember N'NSGenerator', N'DOMAIN\DOMAIN\NSEPGen';"**
** EXEC sp_addrolemember N'NSDistributor', N'DOMAIN\DOMAIN\Dist';"**
独立したアプリケーション データベースがある場合は、次のコマンドを入力して、アプリケーション データベースに DOMAIN\NSEPGen ユーザーと DOMAIN\NSDist ユーザーを作成し、DOMAIN\NSEPGen ユーザーをデータベース ロール NSEventProvider と NSGenerator に、DOMAIN\NSDist ユーザーをデータベース ロール NSDistributor に追加します。
sqlcmd -E -S databaseServer -Q "USE applicationDatabase**;**
** EXEC CREATE USER [DOMAIN\NSEPGen];**
** EXEC CREATE USER [DOMAIN\NSDist];**
** EXEC sp_addrolemember N'NSEventProvider', N'DOMAIN\DOMAIN\NSEPGen';"**
** EXEC sp_addrolemember N'NSGenerator', N'DOMAIN\DOMAIN\NSEPGen';"**
** EXEC sp_addrolemember N'NSDistributor', N'DOMAIN\DOMAIN\Dist';"**
このインスタンスで複数のアプリケーションをホストする場合は、アプリケーション データベースの数だけこの手順を繰り返してください。
これで Notification Services のインスタンスの配置が終わりました。サブスクライバとサブスクリプションのデータを読み込み、アプリケーションにイベントを送信できます。Notification Services によるデータの処理は、Windows サービスを開始しないと開始されません。次に、Windows サービスの開始について説明します。
Notification Services のインスタンスの開始
インスタンスで通知の生成を開始する準備ができたら、エンジン コンポーネントを実行するすべてのサーバーで Windows サービスを開始します。このチュートリアルの場合は、NS1、NS2、NS3 の各サーバーでコマンド プロンプト ウィンドウを開いて、次のコマンドを入力します。
**net start NS$**instance_name
詳細については、「Notification Services インスタンスの開始と停止」を参照してください。
SQL Server Management Studio を使用すると、すべてのサービスを一度に開始できます。詳細については、「Notification Services のインスタンスを開始する方法 (SQL Server Management Studio)」を参照してください。
トラブルシューティング
アプリケーションで通知が生成されない場合は、Notification Services コマンド プロンプトで次のコマンドを実行してインスタンスの状態を確認します。
nscontrol status-name instanceName
すべてのコンポーネントが正しいサーバーで実行されていること、および状態が "有効" になっていることを確認します。詳細については、「インスタンス、アプリケーション、およびコンポーネントの状態表示」を参照してください。
また、Windows アプリケーション ログでエラーの有無を確認します。詳細については、「Notification Services のトラブルシューティング」を参照してください。
参照
概念
Notification Services のインスタンスの配置
ホストされないイベント プロバイダの配置
サブスクリプション管理インターフェイスの配置
その他の技術情報
nscontrol create コマンド
nscontrol enable コマンド
nscontrol register コマンド
sqlcmd ユーティリティ