クラスタ環境での Integration Services の構成
新規 : 2007 年 9 月 15 日
Integration Services サービスはクラスタ化サービスでも、クラスタ化に対応したサービスでもないため、クラスタ ノード間のフェールオーバーはサポートしません。したがって、クラスタ環境では、Integration Services をクラスタの各ノードにインストールし、スタンドアロン サービスとして開始する必要があります。
重要 : |
---|
Microsoft では、Integration Services サービスをクラスタ リソースとして構成することはお勧めしません。 |
Integration Services サービスはクラスタ化サービスではありませんが、クラスタの各ノードに対して個別に Integration Services をインストールして、サービスをクラスタ リソースとして動作するように手動で構成することができます。いくつかの短所を考慮しても、この構成を用いることのメリットの方が大きいと判断したユーザーのために、このトピックでは、サービスをクラスタ リソースとして構成する手順を紹介します。
ただし、クラスタ化されたハードウェア環境を構築することによって高可用性を確保したいということであれば、Integration Services サービスをクラスタ リソースとして構成しなくても目的を達成できます。クラスタ内の任意のノードでパッケージを管理できるようにするには、クラスタ内のすべてのノードについて、それぞれ Integration Services サービスの構成ファイルに変更を加えます。これらの各構成ファイルが、パッケージを格納する SQL Server の利用可能なすべてのインスタンスを参照するように変更します。この方法により、Integration Services サービスをクラスタ リソースとして構成することによって発生する問題を回避しながら、ほとんどの顧客のニーズを満たす高可用性を実現できます。構成ファイルを変更する方法の詳細については、「Integration Services サービスの構成」を参照してください。
Integration Services サービスの役割について
クラスタ環境でどのようにサービスを構成するかという点について、十分な情報に基づいた意思決定を行うためには、Integration Services サービスの役割を理解することがきわめて重要です。
Integration Services サービスは、SQL Server Management Studio の管理インターフェイスをサポートしています。この管理インターフェイスから、Integration Services パッケージの一覧表示、開始、停止、監視、インポート、エクスポートなどを行うことができます。パッケージのデザインには、Integration Services サービスは不要です。また、Integration Services サービスがなくても、パッケージを実行したり、パッケージを実行する SQL Server エージェント ジョブをスケジュールしたりできます。
Integration Services サービスが実行されていなくても行うことのできるタスクを次に示します。
- Business Intelligence Development Studio でパッケージをデザインおよび実行する。
- dtexec コマンド プロンプト ユーティリティ (dtexec.exe)、パッケージ実行ユーティリティ (dtexecui.exe)、SQL Server エージェント、または SQL Server インポートおよびエクスポート ウィザードを使用してパッケージを実行する。
- msdb データベースに格納されているパッケージを Transact-SQL クエリを使って一覧表示したり、ファイル システムに格納されているパッケージを Windows エクスプローラを使って一覧表示したりする。
- SQL Server エージェント ジョブやメンテナンス プランを作成したり実行したりする。
Integration Services をクラスタ リソースとして構成することの短所について
Integration Services サービスをクラスタ リソースとして構成することには、次のような短所があります。
- フェールオーバーが発生すると実行中のパッケージが再開されない。パッケージをチェックポイントから再開することによって、パッケージのエラーから回復できますが、サービスをクラスタ リソースとして構成しなくてもチェックポイントから再開できます。詳細については、「パッケージでのチェックポイントの使用」を参照してください。
- Integration Services サービスを SQL Server とは別のリソース グループで構成した場合、クライアント コンピュータから Management Studio を使用して、msdb データベースに格納されたパッケージを管理することができない。このダブル ホップのシナリオでは、Integration Services サービスが資格情報を委任することはできません。
- Integration Services サービスを含んだ SQL Server リソース グループがクラスタ内に複数存在する場合、フェールオーバーによって予期しない結果が生じる可能性がある。以下のシナリオについて考えてみます。グループ 1 は、SQL Server サービスと Integration Services サービスを含んでおり、ノード A で実行されています。グループ 2 も SQL Server サービスと Integration Services サービスを含んでいますが、ノード B で実行されています。グループ 2 で障害が発生して、ノード A へのフェールオーバーが発生した場合、Integration Services サービスは単一インスタンスのサービスであるため、ノード A で Integration Services サービスの別のインスタンスを開始しようとするとエラーになります。ノード A に対する SQL Server サービスのフェールオーバーが失敗するかどうかは、グループ 2 の Integration Services サービスの構成によって異なります。リソース グループ内の他のサービスに影響するように Integration Services サービスが構成されていた場合、Integration Services サービスがダウンしているため、SQL Server サービスのフェールオーバーも失敗します。このサービスがリソース グループ内の他のサービスに影響しないように構成されていた場合、SQL Server サービスは正常にノード A にフェールオーバーされます。
クラスタ リソースとしての Integration Services サービスの構成
このセクションでは、いくつかの短所を考慮しても Integration Services サービスをクラスタ リソースとして構成することのメリットの方が大きいと判断したユーザーのために、必要な構成手順を紹介します。ただし、Microsoft では、Integration Services サービスをクラスタ リソースとして構成することはお勧めしません。
Integration Services サービスをクラスタ リソースとして構成するには、次の手順に従う必要があります。
- クラスタに Integration Services をインストールします。
- Integration Services をクラスタ リソースとして構成します。
- Integration Services サービスとパッケージ ストアを構成します。
- Integration Services サービスをクラスタ リソースとしてオンラインにします。
クラスタへの Integration Services のインストール
クラスタに Integration Services をインストールするには、クラスタ内のすべてのノードに Integration Services をインストールする必要があります。
Integration Services をクラスタにインストールするには
1 つ以上のノードのクラスタをインストールして構成します。
(省略可能) SQL Server データベース エンジンなどのクラスタ化サービスをインストールします。
クラスタの各ノードに、Integration Services をインストールします。
クラスタ リソースとしての Integration Services の構成
クラスタ内の各ノードに Integration Services をインストールしたら、Integration Services をクラスタ リソースとして構成する必要があります。Integration Services サービスをクラスタ リソースとして構成する場合、このサービスを SQL Server データベース エンジンと同じリソース グループに追加するか、別のグループに追加するかを選択できます。同じリソース グループに追加した場合と、別のリソース グループに追加した場合の長所と短所を次の表に示します。
Integration Services と SQL Server が同じリソース グループに存在する場合 | Integration Services と SQL Server が別のリソース グループに存在する場合 |
---|---|
SQL Server データベース エンジンと Integration Services サービスがどちらも同じ仮想サーバーで実行されているため、クライアント コンピュータから SQL Server Management Studio を使用して、msdb データベースに格納されたパッケージを管理できます。この構成では、ダブル ホップのシナリオに伴う委任の問題を回避できます。 |
クライアント コンピュータから SQL Server Management Studio を使用して、msdb データベースに格納されたパッケージを管理することはできません。クライアントは、Integration Services サービスが実行されている仮想サーバーに接続できますが、そのコンピュータから、SQL Server が実行されている仮想サーバーにユーザーの資格情報を委任することはできません。これをダブル ホップのシナリオといいます。 |
CPU などのコンピュータ リソースに対して、Integration Services サービスと SQL Server サービスが競合します。 |
それぞれ異なるノード上でリソース グループが構成されているため、CPU などのコンピュータ リソースに対して Integration Services サービスと SQL Server サービスが競合することはありません。 |
どちらのサービスも同じコンピュータ上で実行されるため、msdb データベースに対するパッケージの読み込みと保存を高速に行うことができ、ネットワーク トラフィックを抑制することができます。 |
msdb データベースに対するパッケージの読み込みと保存が低速になり、より多くのネットワーク トラフィックが生成される可能性があります。 |
どちらのサービスも同時にオンラインまたはオフラインになります。 |
Integration Services サービスがオンラインであるときに、SQL Server データベース エンジンがオフラインであるという状況も発生します。この場合、SQL Server データベース エンジンの msdb データベースに格納されたパッケージは利用できません。 |
Integration Services サービスを別のノードに移動する必要性が生じても、簡単に行うことはできません。 |
必要に応じて Integration Services サービスを簡単に別のノードに移動できます。 |
Integration Services をどのリソース グループに追加するかが決まったら、そのグループで Integration Services をクラスタ リソースとして構成する必要があります。
Integration Services をクラスタ リソースとして構成するには
クラスタ アドミニストレータを開きます。
コンソール ツリーで、[グループ] フォルダを選択します。
結果ペインで、Integration Services を追加するグループを選択します。
- SQL Server と同じリソース グループに Integration Services をクラスタ リソースとして追加する場合は、SQL Server が属しているグループを選択します。
- SQL Server と別のリソース グループに Integration Services をクラスタ リソースとして追加する場合は、SQL Server が属しているグループとは異なるグループを選択します。
[ファイル] メニューの [新規作成] をポイントし、[リソース] をクリックします。
リソースの新規作成ウィザードの [新しいリソース] ページで、名前を入力し、[リソースの種類] として [汎用サービス] を選択します。[グループ] の値は変更せずに、[次へ] をクリックします。
[実行可能な所有者] ページで、リソースの実行可能な所有者として、クラスタのノードを追加または削除し、[次へ] をクリックします。
依存関係を追加するには、[依存関係] ページで [利用可能なリソース] からリソースを選択し、[追加] をクリックします。フェールオーバーが発生した場合は、Integration Services がオンラインになる前に、SQL Server と Integration Services パッケージが保存されている共有ディスクの両方がオンラインになる必要があります。依存関係を選択したら、[次へ] をクリックします。
[汎用サービス パラメータ] ページで、サービスの名前に「MsDtsServer」と入力し、[次へ] をクリックします。
[レジストリ レプリケーション] ページで、[追加] をクリックし、Integration Services サービスの構成ファイルの場所を示すレジストリ キーを追加します。このファイルは、Integration Services サービスと同じリソース グループ内の共有ディスクに存在する必要があります。
[レジストリ キー] ダイアログ ボックスに、「SOFTWARE\Microsoft\MSDTS\ServiceConfigFile」と入力して、[OK] をクリックし、[完了] をクリックします。
これで、Integration Services サービスがクラスタ リソースとして追加されました。
Integration Services サービスとパッケージ ストアの構成
Integration Services をクラスタ リソースとして構成したら、クラスタ内の各ノードについて、Integration Services サービスの構成ファイルの場所と内容を変更する必要があります。この変更により、フェールオーバーの発生時に、すべてのノードが構成ファイルとパッケージ ストアの両方にアクセスできるようになります。構成ファイルの場所や内容を変更した後は、サービスをオンラインにする必要があります。
Integration Services サービスとパッケージ ストアを構成するには
構成ファイル %ProgramFiles%\Microsoft SQL Server\90\DTS\Binn\MsDtsSrvr.ini.xml を探し、Integration Services サービスを追加したグループの共有ディスクにコピーします。
共有ディスク上に、パッケージ ストアとして機能する、Packages という名前の新しいフォルダを作成します。このフォルダに対するフォルダ一覧表示権限と書き込み権限を、適切なユーザーおよびグループに許可します。
テキスト エディタまたは XML エディタを使用して、共有ディスクにある構成ファイルを開き、ServerName 要素の値を、同じリソース グループ内の仮想 SQL Server の名前に変更します。
StorePath 要素の値を、共有ディスク上の、前の手順で作成した Packages フォルダの完全修飾パスに変更します。
レジストリの **HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\**MSDTS\ServiceConfigFile の値を、共有ディスク上にあるサービス構成ファイルの完全修飾パスとファイル名に変更します。
Integration Services サービスをオンラインにするには
- これには、クラスタ アドミニストレータで、Integration Services サービスを選択して右クリックし、ポップアップ メニューの [オンラインにする] をクリックします。これで、Integration Services サービスがクラスタ サービスとしてオンラインになります。
クラスタ環境の Integration Services への接続
クラスタ (つまり、任意のサーバー) 上で構成した Integration Services サービスに対し、クライアント コンピュータから接続するには、DCOM 権限を構成する必要があります。詳細については、「リモートの Integration Services サーバーへの接続」を参照してください。
Integration Services サービスは資格情報を委任することはできません。したがって、次の条件に該当する場合、Management Studio を使用して、msdb データベースに格納されたパッケージを管理することはできません。
- Integration Services サービスと SQL Server が別のサーバーまたは仮想サーバーで実行されている。
- SQL Server Management Studio を実行しているクライアントが 3 番目のコンピュータである。
クライアントは、Integration Services サービスが実行されている仮想サーバーに接続できますが、そのコンピュータから、SQL Server が実行されている仮想サーバーにユーザーの資格情報を委任することはできません。これをダブル ホップのシナリオといいます。