次の方法で共有


SSIS ノードを既存の環境に追加する

この記事では、Microsoft SQL Server 統合サービス (SSIS) ノードをオンプレミス環境に追加する方法について説明します。 SSIS ノードはバージョン 10.0.32 (プラットフォーム更新プログラム 56) で導入され、データ管理フレームワークで使用されます。

インストール手順

  1. 使用している環境が、バージョン 10.0.32 (プラットフォーム更新プログラム 56) またはそれ以降であることを確認します。

  2. Microsoft Dynamics Lifecycle Services から最新の設定スクリプトをダウンロードおよび抽出します。 詳細については、インフラストラクチャ スクリプトをダウンロード を参照してください。

    重要

    スクリプトは、オンプレミス インフラストラクチャと同じドメイン内のコンピューターから実行する必要があります。

  3. インフラストラクチャ スクリプトを更新します。 詳細については、インフラストラクチャ スクリプトを更新する を参照してください。

  4. ConfigTemplate.xml ファイルの SSISNodeType セクションで、SSIS ノードを変更します。 disabled パラメーターが false に設定されていることを確認します。

    <NodeType name="SSISNodeType" primary="false" namePrefix="SSIS" purpose="SSIS" disabled="false">
        <!-- Do not place hasSSIS on this node type. -->
        <VMList>
            <VM name="ssis1" ipAddress="10.179.108.22" faultDomain="fd:/fd0" updateDomain="ud0" />
            <VM name="ssis2" ipAddress="10.179.108.23" faultDomain="fd:/fd1" updateDomain="ud1" />
        </VMList>
    </NodeType>
    
  5. データ インポート/エクスポート フレームワーク (DIXF) グループ管理サービス アカウント (gMSA) を作成します。 計算の詳細については、手順 8. gMSA の作成 を参照してください。 オプション 1 では、新しい DIXF gMSA のみを作成します。

  6. 次のスクリプトを実行してファイル共有を作成します。

    .\New-FileShares.ps1 -ConfigurationFilePath .\ConfigTemplate.xml -FileShareReference "dixf"
    
  7. 次のスクリプトを実行して、各ファイル共有に必要なコンフィギュレーションおよびアクセス許可を適用します。

    .\Configure-FileShares.ps1 -ConfigurationFilePath .\ConfigTemplate.xml -FileShareReference "dixf"
    .\Configure-FileShares.ps1 -ConfigurationFilePath .\ConfigTemplate.xml -FileShareReference "aos"
    
  8. 必要なノードで SSIS をインストールします。 詳細については、手順 12. SSIS の設定 を参照してください。

  9. 管理 Windows PowerShell ウィンドウを開き、インフラストラクチャ スクリプト フォルダーに変更して、次のスクリプトを実行します。

    # Exports certificates into a directory VMs\<VMName>. All the certs will be written to the infrastructure\Certs folder.
    .\Export-Certificates.ps1 -ConfigurationFilePath .\ConfigTemplate.xml
    
  10. 新しい仮想マシン (VM) を設定します。 詳細については、手順 14. VM の設定 を参照してください。

  11. 新しいノードを追加する前に、Azure Service Fabric を最新のバージョンに更新します。 詳細については、クラスターで実行する Service Fabric のバージョンをアップグレードするを参照してください。

  12. 次の PowerShell スクリプトの内容をコピーし、UpdateNodeTypes.ps1 という名前のファイルとして インフラストラクチャ スクリプト フォルダーに保存します。

    <#
    SAMPLE CODE NOTICE
    
    THIS SAMPLE CODE IS MADE AVAILABLE AS IS. MICROSOFT MAKES NO WARRANTIES, WHETHER EXPRESS OR IMPLIED,
    OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OR CONDITIONS OF MERCHANTABILITY.
    THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS SAMPLE CODE REMAINS WITH THE USER.
    NO TECHNICAL SUPPORT IS PROVIDED. YOU MAY NOT DISTRIBUTE THIS CODE UNLESS YOU HAVE A LICENSE AGREEMENT WITH MICROSOFT THAT ALLOWS YOU TO DO SO.
    #>
    
    Param(
    
        # Input XML file that specifies cluster topology such as .\ConfigTemplate.xml.
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [string] $ConfigurationFilePath,
    
        # Output file path, by default this will be this current working directory ($pwd) with a file name ClusterConfig.json.
        [ValidateNotNullOrEmpty()]
        [string] $TemplateConfig = "$PSScriptRoot\ClusterConfig.json",
    
        # Path to the fileshare where the config.json is located for your deployment
        [ValidateNotNullOrEmpty()]
        [ValidateScript({ Test-Path -Path $_ })]
        [string] $TopologyFilePath ="$PSScriptRoot\D365FO-OP\NodeTopologyDefinition.xml",
    
        [Parameter(ParameterSetName = "UpdateNodeTypes")]
        [switch] $UpdateNodeTypes
    
    )
    
    function Set-ClusterNodeTypes
    {
        param
        (
            [ValidateNotNull()]
            $TopologyXml,
    
            [ValidateNotNull()]
            $NodeTypes,
    
            [ValidateNotNull()]
            [psobject] $ConfigJson
        )
    
        Write-Information "Setting node types..."
        for ($i = 0; $i -lt $NodeTypes.Count; $i++)
        {
            $nodeType = $NodeTypes[$i]
            #Get the purposes and the placement criteria from the topology document.
            $placementProperties = New-Object psobject
            [string[]] $purposes = $nodeType.purpose -split ","
            $invalidProperties = New-Object System.Collections.Generic.List[System.String]
    
            foreach ($purpose in $purposes)
            {
                $templatePropertiesXml = Get-D365FOPlacementProperties -XmlDoc $TopologyXml -ComponentName $purpose
                if ($templatePropertiesXml -and $templatePropertiesXml.Property)
                {
                    $templatePropertiesXml.Property | ForEach-Object {
                        if ($placementProperties.PSObject.Properties.Name -eq $_.name)
                        {
                            $invalidProperties.Add($_.name);
                        }
                        else
                        {
                            $placementProperties | Add-Member -MemberType NoteProperty -Name $_.name -Value $_.value
                        }
                    }
                }
            }
    
            if ($nodeType.PlacementProperties -and $nodeType.PlacementProperties.Property)
            {
                $nodeType.PlacementProperties.Property | ForEach-Object {
                    if ($placementProperties.PSObject.Properties.Name -eq $_.name)
                    {
                        $invalidProperties.Add($_.name);
                    }
                    else
                    {
                        $placementProperties | Add-Member -MemberType NoteProperty -Name $_.name -Value $_.value
                    }
                }
            }
    
            if ($invalidProperties.Count -gt 0)
            {
                $propertyList = $invalidProperties.ToArray() | Select-Object -Unique
                if ($propertyList -eq 1)
                {
                    throw "The placement property $($propertyList -join ",") already exists for node type $($nodeType.name). Make sure the placement property is not a reserved property and is not a duplicate"
                }
                else
                {
                    throw "The placement properties $($propertyList -join ",") already exist for node type $($nodeType.name). Make sure the placement property is not a reserved property and is not a duplicate"
                }
            }
    
            if ($i -eq 0)
            {
                if(-not ($configJson.properties.nodeTypes | Where-Object {$_.name -eq $nodeType.name}))
                {
                    $ConfigJson.properties.nodeTypes[$i].name = $nodeType.name
                    $ConfigJson.properties.nodeTypes[$i] | Add-Member -MemberType NoteProperty -Name 'placementProperties' -Value $placementProperties
                    $ConfigJson.properties.nodeTypes[$i].isPrimary = [bool]::Parse($nodeType.primary)
                }
            }
            else
            {
                if(-not ($configJson.properties.nodeTypes | Where-Object {$_.name -eq $nodeType.name}))
                {
                    $newNodeType = $ConfigJson.properties.nodeTypes[0].psobject.Copy()
                    $newNodeType.name = $nodeType.name
                    $newNodeType.isPrimary = [bool]::Parse($nodeType.primary)
                    $newNodeType.placementProperties = $placementProperties
    
                    $ConfigJson.properties.nodeTypes += $newNodeType
                }
            }
        }
    }
    
    #requires -Version 5
    $ErrorActionPreference = 'Stop'
    $InformationPreference = 'Continue'
    Import-Module "$PSScriptRoot\D365FO-OP" -Force
    
    [xml] $configXml = Get-Content -Path $ConfigurationFilePath -Raw -ErrorAction Stop
    [xml] $topologyXml = Get-Content -Path $TopologyFilePath -Raw -ErrorAction Stop
    $minimumConfigTemplateVersion = 1.7
    
    Assert-D365FOConfigurationFileVersion -XmlFilePath $ConfigurationFilePath -MinimumVersion $minimumConfigTemplateVersion
    
    if (-not (Get-Command Connect-ServiceFabricCluster -ErrorAction SilentlyContinue))
    {
        throw "This script needs to be executed from a node in the Service Fabric Cluster."
    }
    Connect-ServiceFabricCluster
    $configJson = Get-ServiceFabricClusterConfiguration | ConvertFrom-Json
    
    if ($UpdateNodeTypes)
    {
        $nodeTypes = $configXml.SelectNodes('/Config/ServiceFabricCluster/NodeType')
        Set-ClusterNodeTypes -NodeTypes $nodeTypes -ConfigJson $configJson -TopologyXml $topologyXml
        Save-D365FOJsonToFile -JsonObject $configJson -FilePath $TemplateConfig
        Write-Host "NodeTypes reviewed and updated as needed"
    }
    
  13. 管理者特権モードで Windows PowerShell を開き、ディレクトリをファイル共有のインフラストラクチャ フォルダーに変更して、次のコマンドを実行します。 これらのコマンドによって、新しいノード タイプが ClusterConfig.json Service Fabric テンプレート ファイルに追加されます。

    .\UpdateNodeTypes.ps1 -ConfigurationFilePath .\ConfigTemplate.xml -UpdateNodeTypes
    
  14. 更新された構成を、Service Fabric Cluster に適用します。 詳細については、この記事の後半にある 付録 A を参照してください。

  15. 新しい DIXF ノードを追加し、次の手順に従います。

    1. Service Fabric Explorer で、クラスター を選択します。 Microsoft Service Fabric Cluster のバージョンをメモします。

    2. いずれかのオーケストレータノード ノードで、ファイル エクスプローラーを開きます。 表示 タブの、表示/非表示 グループで、ファイル名の拡張子非表示項目 の各チェック ボックスがオンになっていることを確認します。

    3. ドライブ C を展開し、次のフォルダーにドリルダウンします。 (パスはノード名と設定によって異なります)。

      C:\ProgramData\SF\ORCH1\Fabric\work\Applications__FabricSystem_App4294967295\work\Store\131811633624852852

      Service Fabric のさまざまなバージョンのフォルダーがリスト表示されています。

    4. 前述の手順でメモした Microsoft Service Fabric Cluster のバージョンと同じ名前のフォルダーを開きます。

    5. .Cab ファイルを探して C:\Temp にコピーし、コピーしたファイルの名前を MicrosoftAzureServiceFabric.cab に変更します。

    6. PowerShell のコマンド プロンプト ウィンドウを管理者として開きます。

    7. 次のコマンドを実行して、Service Fabric Cluster に接続します。 (必要に応じてコマンドを編集します。)

      #Connect to Service Fabric Cluster.
      Connect-ServiceFabricCluster
      
    8. 次のコマンドを実行してノードを追加する前に、NodeNameIPAddressUpgradeDomainFaultDomain パラメーターを更新します。

      Add-ServiceFabricNode -NodeName "SSIS1" -NodeType "SSISNodeType" -IpAddressOrFQDN "10.179.108.22" -UpgradeDomain "ud0" -FaultDomain "fd:/fd0" -FabricRuntimePackagePath "C:\Temp\MicrosoftAzureServiceFabric.cab"
      
    9. 追加の DIXF ノードに対して、この手順を繰り返します。

  16. 事前展開スクリプトに追加して、DIXF サービスを有効にします。 基本事前展開スクリプトが 作成ない場合は、スクリプトを設定し、TSG_EnableDixfService.ps1スクリプトを有効 にしてください。 メインの事前展開スクリプトで、DIXF スクリプトの行のコミットを解除し、前の手順で作成したDIXF 共有が設定済みであることを確認します。 詳細については、オンプレミス環境の問題を解決するスクリプト を参照してください。

  17. Lifecycle Services にサインインし、プロジェクトと環境を選択します。 管理>更新設定 の順に選択してから 準備 を選択します。 構成をダウンロードした後、Lifecycle Services で 更新 を選択してプロセスを完了します。

付録 A

更新された Service Fabric Cluster コンフィギュレーションを生成した後に、次の PowerShell コマンドを実行して、Service Fabric Cluster へのアップグレードを適用します。

# Connect to the Service Fabric Cluster
Connect-ServiceFabricCluster

# Get path of ClusterConfig.json for following command
# Note that after running the following command, you need to manually cancel using the red button (Stop Operation) in Windows PowerShell ISE or Ctrl+C in Windows PowerShell. Otherwise, you receive the following notification, "Start-ServiceFabricClusterConfigurationUpgrade : Operation timed out.". Be aware that the upgrade will proceed.
Start-ServiceFabricClusterConfigurationUpgrade -ClusterConfigPath ClusterConfig.json

# If you are using a single Microsoft SQL Server Reporting Services node, use UpgradeReplicaSetCheckTimeout to skip PreUpgradeSafetyCheck check, otherwise it will timeout
Update-ServiceFabricClusterUpgrade -UpgradeReplicaSetCheckTimeoutSec 30

# To monitor the status of the upgrade, run the following and note UpgradeState and UpgradeReplicaSetCheckTimeout
Get-ServiceFabricClusterUpgrade

# While monitoring the status of the upgrade, if UpgradeReplicaSetCheckTimeout was reset to the default (example 49710.06:28:15), run the following command again
Update-ServiceFabricClusterUpgrade -UpgradeReplicaSetCheckTimeoutSec 30

# When UpgradeState shows RollingForwardCompleted, the upgrade is finished