クラスターにおける Integration Services (SSIS)

適用対象:SQL Server Azure Data Factory の SSIS Integration Runtime

Integration Services をクラスター化することはお勧めしません。 Integration Services サービスは、クラスター化されるサービスまたはクラスター対応サービスではなく、クラスター ノード間のフェールオーバーはサポートしません。 したがって、クラスター環境では、クラスターの各ノードで Integration Services をインストールし、スタンドアロン サービスとして起動する必要があります。

Integration Services サービスはクラスター化されるサービスではありませんが、クラスターの各ノードに個別に Integration Services をインストールした後、クラスター リソースとして動作するように手動で構成することができます。

ただし、クラスター化されたハードウェア環境を構築する目的が高可用性を実現することにある場合は、 Integration Services サービスをクラスター リソースとして構成しなくても、この目的を達成できます。 クラスター内の他のノードからクラスター内の任意のノード上でパッケージを管理するには、クラスター内の各ノードで Integration Services サービスの構成ファイルを変更します。 パッケージが格納されている SQL Server の使用可能なすべてのインスタンスを指し示すように、それぞれの構成ファイルを変更します。 この方法を使用すると、 Integration Services サービスをクラスター リソースとして構成したときに発生する可能性のある問題を回避できるうえ、ほとんどの顧客から求められる高可用性を実現できます。 構成ファイルの変更方法の詳細については、「Integration Services サービス (SSIS サービス)」を参照してください。

クラスター環境でサービスをどのように構成するかに関して詳しい情報に基づく決断を行うには、 Integration Services サービスの役割を理解することがきわめて重要です。 詳細については、「Integration Services サービス (SSIS サービス)」を参照してください。

短所

Integration Services サービスをクラスター リソースとして構成する場合、次のような潜在的な欠点があります。

  • フェールオーバーが発生したときに、実行中のパッケージが再起動されません。

    チェックポイントからパッケージを再開することで、パッケージのエラーから回復できます。 サービスをクラスター リソースとして構成しなくても、チェックポイントからパッケージを再開できます。 詳細については、「 Restart Packages by Using Checkpoints」を参照してください。

  • Integration Services とは異なるリソース グループに SQL Serverサービスを構成した場合、クライアント コンピューターから Management Studio を使用して msdb データベースに格納されているパッケージを管理することはできません。 Integration Services サービスは、このダブルホップ シナリオで資格情報を委任することはできません。

  • クラスター内に SQL Server サービスを含む複数の Integration Services リソース グループがある場合、フェールオーバーにより予期しない結果が生じる可能性があります。 次のシナリオで考えてみましょう。 グループ 1 は、 SQL Server サービスと Integration Services サービスを含み、ノード A 上で実行されています。グループ 2 は、同様に SQL Server サービスと Integration Services サービスを含み、ノード B 上で実行されています。次に、グループ 2 からノード A へのフェールオーバーが発生します。ここで、ノード A 上で Integration Services サービスの別のインスタンスを起動しようとした場合、 Integration Services サービスは単一インスタンス サービスなので、その試みは失敗します。 ノード A へのフェールオーバーを試行している SQL Server サービスが同様に失敗するかどうかは、グループ 2 における Integration Services サービスの構成に依存します。 Integration Services サービスがリソース グループ内の他のサービスに影響を与えるように構成されている場合、フェールオーバーを試行している SQL Server サービスは失敗します。なぜなら、 Integration Services サービスが失敗しているからです。 サービスがリソース グループ内の他のサービスに影響を与えないように構成されている場合、 SQL Server サービスはノード A にフェールオーバーできます。リソース グループ内の他のサービスに影響を与えないようにグループ 2 の Integration Services サービスが構成されていない限り、フェールオーバーを試行している Integration Services サービスが失敗すると、フェールオーバーを試行している SQL Server サービスも失敗する可能性があります。

サービスをクラスター リソースとして構成する

このセクションでは、 Integration Services サービスをクラスター リソースとして構成する利点が欠点を上回ると判断したユーザー向けに、必要な構成手順を説明します。 ただし、 Microsoft では、 Integration Services サービスをクラスター リソースとして構成することをお勧めしません。

Integration Services サービスをクラスター リソースとして構成するには、次のタスクを完了する必要があります。

  • クラスターに Integration Services をインストールします。

    Integration Services をクラスターにインストールするには、クラスター内の各ノードに Integration Services をインストールする必要があります。

  • Integration Services をクラスター リソースとして構成します。

    Integration Services がクラスターの各ノードにインストールされている状態で、Integration Services をクラスター リソースとして構成する必要があります。 Integration Services サービスをクラスター リソースとして構成する場合、サービスを SQL Server データベース エンジンと同じリソース グループに追加することも、異なるグループに追加することもできます。 次の表に、リソース グループの選択に関連する利点と欠点を示します。

    Integration Services と SQL Server が同じリソース グループに属する場合 Integration Services と SQL Server が異なるリソース グループに属する場合
    SQL Server Management Studio と SQL Server データベース エンジン サービスが同じ仮想サーバー上で実行されるので、クライアント コンピューターは、 Integration Services を使用して、msdb データベースに格納されているパッケージを管理できます。 この構成では、ダブルホップ シナリオの委任の問題を回避できます。 クライアント コンピューターは、 SQL Server Management Studio を使用して、msdb データベースに格納されているパッケージを管理することができません。 クライアント コンピューターは、 Integration Services サービスが実行されている仮想サーバーに接続できます。 ただし、当該コンピューターは、 SQL Server が実行されている仮想サーバーにユーザーの資格情報を委任することはできません。 これは、ダブルホップ シナリオと呼ばれます。
    Integration Services サービスは、CPU およびその他のコンピューター リソースの利用に関して他の SQL Server サービスと競合します。 異なるリソース グループは異なるノードに構成されているので、 Integration Services サービスは、CPU およびその他のコンピューター リソースの利用に関して他の SQL Server サービスと競合しません。
    両方のサービスが同じコンピューター上で実行されているので、msdb データベースへのパッケージの読み込みと保存をより高速に行うことができ、生成されるネットワーク トラフィックも少なくて済みます。 msdb データベースへのパッケージの読み込みと保存に時間がかかる可能性があり、生成されるネットワーク トラフィックが多くなります。
    両方のサービスは同時にオンラインまたはオフラインになります。 Integration Services サービスがオンラインのときに SQL Server データベース エンジン がオフラインの場合があります。 その場合、 SQL Server データベース エンジン の msdb データベースに格納されているパッケージを利用できなくなります。
    必要に応じて Integration Services サービスをすばやく別のノードに移動できません。 必要に応じて Integration Services サービスをすばやく別のノードに移動できます。

    Integration Servicesをどちらのリソース グループに追加するかを決定した後、当該グループのクラスターとして Integration Services を構成する必要があります。

  • Integration Services サービスおよびパッケージ ストアを構成します。

    Integration Services をクラスター リソースとして構成した後は、クラスター内の各ノード上で Integration Services サービスの構成ファイルの場所および内容を変更する必要があります。 これは、フェールオーバーが発生した場合にすべてのノードで構成ファイルとパッケージ ストアを使用可能にするための変更です。 構成ファイルの場所および内容を変更した後、サービスをオンラインにする必要があります。

  • Integration Services サービスをクラスター リソースとしてオンラインにします。

クラスターまたは任意のサーバー上で Integration Services サービスを構成した後は、クライアント コンピューターからサービスに接続できるように DCOM 権限を構成しなければならない場合があります。 詳細については、「Integration Services サービス (SSIS サービス)」を参照してください。

Integration Services サービスは、資格情報を委任できません。 したがって、次の条件に一致するときは、 Management Studio を使用して msdb データベースに格納されているパッケージを管理することはできません。

  • Integration Services サービスと SQL Server が別個のサーバーまたは仮想サーバー上で実行されている。

  • SQL Server Management Studio を実行しているクライアントが 3 台目のコンピューターである。

クライアント コンピューターは、 Integration Services サービスが実行されている仮想サーバーに接続できます。 ただし、当該コンピューターは、 SQL Server が実行されている仮想サーバーにユーザーの資格情報を委任することはできません。 これは、ダブルホップ シナリオと呼ばれます。

クラスターに Integration Services をインストールするには

  1. 1 つ以上のノードのクラスターをインストールして構成します。

  2. (省略可能) SQL Server データベース エンジンなどのクラスター化サービスをインストールします。

  3. クラスターの各ノードに Integration Services をインストールします。

Integration Services をクラスター リソースとして構成するには

  1. クラスター アドミニストレーターを開きます。

  2. コンソール ツリーで、[グループ] フォルダーを選択します。

  3. 結果ペインで、 Integration Servicesを追加するグループを選択します。

    • SQL Serverと同じリソース グループに Integration Services をクラスター リソースとして追加するには、 SQL Server が属しているグループを選択します。

    • SQL Serverとは異なるグループに Integration Services をクラスター リソースとして追加するには、 SQL Server が属している以外のグループを選択します。

  4. [ファイル] メニューの [新規作成] をポイントし、 [リソース] をクリックします。

  5. リソース ウィザードの [新しいリソース] ページで、名前を入力し、 [サービスの種類] として [汎用サービス] を選択します。 [グループ] の値は変更せずに、 [次へ] をクリックします。

  6. [実行可能な所有者] ページで、リソースの実行可能な所有者として、クラスターのノードを追加または削除し、 [次へ] をクリックします。

  7. 依存関係を追加するには、 [依存関係] ページで [利用できるリソース] からリソースを選択し、 [追加] をクリックします。 フェールオーバーが発生した場合は、 SQL Server がオンラインになる前に、 Integration Services と Integration Services パッケージが保存されている共有ディスクの両方がオンラインになる必要があります。 依存関係を選択したら、 [次へ] をクリックします。

    詳細については、「 Add Dependencies to a SQL Server Resource」を参照してください。

  8. [汎用サービス パラメーター] ページで、サービスの名前に「 MsDtsServer 」と入力し、 [次へ] をクリックします。

  9. [レジストリ レプリケーション] ページで、 [追加] をクリックし、 Integration Services サービスの構成ファイルの場所を示すレジストリ キーを追加します。 このファイルは、 Integration Services サービスと同じリソース グループに属している共有ディスクに配置されている必要があります。

  10. [レジストリ キー] ダイアログ ボックスで、「 SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\ServiceConfigFile」と入力します。 [OK] をクリックし、 [完了] をクリックします。

    これで、 Integration Services サービスがクラスター リソースとして追加されました。

Integration Services サービスおよびパッケージ ストアを構成するには

  1. 構成ファイル %ProgramFiles%\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.ini.xml を探し、 Integration Services サービスを追加したグループの共有ディスクにコピーします。

  2. 共有ディスク上で、パッケージ ストアとして使用するために Packages という名前のフォルダーを新規作成します。 このフォルダーに対するフォルダー一覧表示権限と書き込み権限を、適切なユーザーおよびグループに許可します。

  3. 共有ディスク上で、テキスト エディターまたは XML エディターを使用して構成ファイルを開き、 ServerName 要素の値を、同じリソース グループ内の仮想 SQL Server の名前に変更します。

  4. StorePath 要素の値を、共有ディスク上の、前の手順で作成した Packages フォルダーの完全修飾パスに変更します。

  5. 各ノード上で、レジストリ内の HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\ServiceConfigFile の値を共有ディスク上のサービス構成ファイルの完全修飾パスとファイル名に更新します。

Integration Services サービスをオンラインにするには

  • これには、 クラスター アドミニストレーターで、 Integration Services サービスを選択して右クリックし、ポップアップ メニューの [オンラインにする] をクリックします。 これで、 Integration Services サービスがクラスター リソースとしてオンラインになります。