次の方法で共有


SharePoint ワークフロー マネージャー ファームの復元とディザスター リカバリー

この記事の手順を使用して、SharePoint ワークフロー マネージャー (SPWFM) データベースを新しいSQL Server インスタンスに移動します。 この移動は、ディザスター リカバリー (DR) 作業、移行の一環として行われる場合や、SPWFM データベースの名前を変更するだけで済む場合に実行できます。 これらの手順は、新しいハードウェアで "クラシック ワークフロー マネージャー" (WFM) から SharePoint ワークフロー マネージャー (SPWFM) にアップグレードまたは移行するための代替方法としても使用できます。 ただし、新しいファームでのワークフロー マネージャーから SharePoint ワークフロー マネージャーへのアップグレードに関するページで詳しく説明されている、推奨される手順よりも少し複雑です。 この "ファームの復元" 手順を使用してアップグレード/移行する場合は、既存のワークフローをそのまま維持するために、SharePoint コンテンツ データベースと App Management Service アプリケーション データベースもアップグレードする必要があることに注意してください。

重要

ワークフロー構成ウィザードでは、データベース接続情報と、Service Bus 管理データベースとワークフロー管理データベースの名前の入力のみを求められます。 他の 4 つの Service Bus データベースとワークフロー データベースの接続情報は、これら 2 つの管理データベース内に格納されます。 その接続情報はウィザードによって更新されないため、ウィザードを使用して SQL サーバーまたはデータベース名を変更することはできません。 その場合は、「 シナリオ 2: SQL エイリアスを使用しない (ファームの復元)」 で指定した手順を使用して、ワークフロー ファームを復元する必要があります。

シナリオ 1: SQL エイリアスを使用する

SQL エイリアスを使用する場合は、SPWFM データベースを新しい SQL サーバーに簡単に移動できます。

  1. すべての SPWFM サーバー上のすべての SPWFM サービスを停止するか、可能であればサーバーをシャットダウンして、ワークフロー (WF) データベースと Service Bus (SB) データベースへの既存の接続を削除します。 SPWFM 関連のサービスは次のとおりです。

    • Service Bus ゲートウェイ
    • Service Bus メッセージ ブローカー
    • Service Bus リソース プロバイダー
    • Service Bus VSS
    • Service Fabric ホスト サービス
    • ワークフロー マネージャー バックエンド
    • World Wide Web 発行サービス
  2. WF データベースと SB データベースを、元の SQL Server インスタンスからターゲット SQL Server インスタンスに物理的に移動します。 データベースのバックアップと復元は、その場合に適しています。 移動中は、6 つの Service Bus データベースとワークフロー データベースに同じデータベース名を保持する必要があります。 データベース名を変更する必要がある場合は、 シナリオ 2 を使用する必要があります。

  3. すべての SPWFM サーバーでcliconfg.exeを使用して SQL エイリアスを作成します。 エイリアスの作成の詳細については、SQL エイリアスの作成に関 するページを参照してください。

  4. SPWFM サーバー/サービスを再起動します。 SQL エイリアスを使用して "古い" SQL サーバー名を "新しい" SQL サーバーにマップしているため、SPWFM は変更されたことに気付いてはいない。 サービスが起動し、新しい SQL サーバー上のデータベースに接続する必要があります。

シナリオ 2: SQL エイリアスを使用しない (ファームの復元)

何らかの理由で SQL エイリアスを使用できない場合、または 6 つの Service Bus データベースとワークフロー データベースの名前を変更する必要がある場合は、ワークフロー "ファームの復元" を完了する必要があります。 このプロセスは複雑ではありませんが、多くの潜在的な障害ポイントがあります。

ヒント

そのため、SQL エイリアスを使用し、上記のシナリオ 1 で説明したように、データベース名を同じにしておくことを強くお勧めします。

WFMデータベースと SB データベースを移動する

  • この手順を使用すると、6 つのWFM/SB データベースのうち 4 つだけ必要です。 WFManagementDB データベースと SbManagementDB データベースは必要 ありません 。このデータベースは、この手順の一部として新しく作成されます。
  • "古い" SQL サーバーで必要な 4 つのデータベースをバックアップし、それらを "新しい" SQL サーバーに復元します。 次の例では、データベースは既定のデータベース名で復元されています。
SbGatewayDatabase
SBMessageContainer01
WFInstanceManagementDB
WFResourceManagementDB

ワークフロー ファームを復元する

複数の SPWFM サーバーがある場合は、復元プロセスを実行できるサーバーを選択します。 今後、このサーバーを "SPWFM サーバー" と見なします。

SPWFM サーバーでは、復元されたデータベースを使用してすべてを復元するために、いくつかの PowerShell コマンドを実行する必要があります。 この PowerShell プロセスでは、1 つのスクリプトとしてすべてを実行するだけでなく、一度に 1 つのステップを実行することをお勧めします。 これにより、1 つの手順が失敗した場合は、トラブルシューティングを行うことで、次の手順に進むのを防ぎ、混乱を引き起こす可能性があります。

重要

復元されたファームで新しい "証明書生成キー" を設定しています。 この値は、ファームに再参加するとき、またはファームに追加のサーバーを参加させるときに必要であるため、どこかに格納する必要があります。

管理者特権を使用して、SPWFM サーバーで PowerShell ISE を実行し、次の手順を実行してワークフロー ファームを復元します。

変数を設定する

参照される変数は、他のコマンドで使用される変数です。 環境に合わせてこれらの変数を適切に設定した後、後続のコマンド内で変更を加える必要はありません。

$wfmAcc = "CONTOSO\spfarm" # Account in services.msc used to run the SPWFM services
$newPass = "YourPWDHere" # Set the password of the SPWFM service account defined variable $wfmAcc
$certGenKeyPlain = "YourCertGenKeyHere" # A new Certificate Generation Key of your choosing  
$manageUsers = @("spfarm@contoso.local","sysadm@contoso.local") # Admin accounts. Use UPN form (user@domain). This should include the account that is running this script.
$adminGroup = "BUILTIN\Administrators" # The group that will have admin permissions for the SPWFM farm.  The local administrators group is common.  
$newSQL = "sql" # Set the SQL instance name of the target SQL server
$sbGatewayDB = "SbGatewayDatabase" # Restored Service Bus Gateway DB name 
$sbMessageDB = "SBMessageContainer01" # Restored Service Bus Message Container DB name
$sbManageDB = "SbManagementDB" # Name for the NEW Service Bus Management DB that will be created
$wfInstanceDB = "WFInstanceManagementDB" #  Restored Workflow Instance Management DB
$wfResourceDB = "WFResourceManagementDB" # Restored Workflow Resource Management DB
$wfManageDB = "WFManagementDB" # Name for the NEW Workflow Management DB DB that will be created
$logPath = "C:\temp\wfm-restore.log.txt" # A log file used for recording information during the restore

### You should not need to change anything below this line ###
# Set a few more variables automatically
$PrimarySymmetricKey = [Convert]::ToBase64String((1..32|%{[byte](Get-Random -Max 256)}))
$certGenKey = convertto-securestring $certGenKeyPlain -asplaintext -force
$myPassword = convertto-securestring $newPass -asplaintext -force
$restoreTime = Get-Date 

Service Bus ファームを復元する

# Restore the Service Bus farm
# You'll get a warning about the Farm Encryption Token, but don't worry, we'll fix that in a later step
Restore-SBFarm -RunAsAccount $wfmAcc -GatewayDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbGatewayDB;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -AdminGroup $adminGroup -CertificateAutoGenerationKey $certGenKey -Verbose

注:

"ファーム暗号化トークン" に関する警告が表示されますが、心配しないでください。後の手順で修正します。

Service Bus メッセージ コンテナーを復元する

# Restore the Service Bus Message Container
Restore-SBMessageContainer -ContainerDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbMessageDB;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -Id 1 -Verbose

Service Bus ゲートウェイを復元する

# Restore the Service Bus Gateway
Restore-SBGateway -GatewayDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbGatewayDB;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -Verbose

注:

"操作がタイムアウトしました" というエラーが発生した場合は、そのエラーを無視して先に進みます。

Service Bus ファームをアップグレードする

# Upgrade the Service Bus farm
Invoke-SBFarmUpgrade -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -CertificateAutoGenerationKey $certGenKey -Verbose

ローカル SPWFM サーバーを Service Bus に追加する

# Add the local SPWFM server to the Service Bus farm
Add-SBHost -EnableFirewallRules $TRUE -RunAsPassword $myPassword -CertificateAutoGenerationKey $certGenKey -SBFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$sbManageDB;Integrated Security=True;Encrypt=False" -Verbose

Service Bus 名前空間を設定する

# Set the Service Bus namespace
Set-SBNamespace -Name "WorkflowDefaultNamespace" -PrimarySymmetricKey $PrimarySymmetricKey -ManageUsers $manageUsers -Verbose

Service Bus が正常であることを確認する

# At this point, all SB services should be running and we should have a namespace of "WorkflowDefaultNamespace" defined.
# If not, you'll want to fix that before moving on.
Get-SBFarm
Get-SBFarmStatus
Get-SBNamespace -Name WorkflowDefaultNamespace

ワークフロー マネージャー サービス ファームを復元する

# Restore the Workflow Manager Services and Farm
Restore-WFFarm -RunAsAccount $wfmAcc -InstanceDBConnectionString "Data Source=$newSQL;Initial Catalog=$wfInstanceDB;Integrated Security=True;Asynchronous Processing=True;Encrypt=False" -ResourceDBConnectionString "Data Source=$newSQL;Initial Catalog=$wfResourceDB;Integrated Security=True;Asynchronous Processing=True;Encrypt=False" -WFFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$wfManageDB;Integrated Security=True;Encrypt=False" -InstanceStateSyncTime $restoreTime -ConsistencyVerifierLogPath $logPath -CertificateAutoGenerationKey $certGenKey -Verbose 

ローカル SPWFM サーバーを SPWFM ファームに追加する

# Add the local SPWFM server to the SPWFM farm
$SBClientConfiguration = Get-SBClientConfiguration -Namespaces "WorkflowDefaultNamespace" 
Add-WFHost -WFFarmDBConnectionString "Data Source=$newSQL;Initial Catalog=$wfManageDB;Integrated Security=True;Encrypt=False" -RunAsPassword $myPassword -EnableFirewallRules $TRUE -CertificateAutoGenerationKey $certGenKey -SBClientConfiguration $SBClientConfiguration –Verbose 

SPWFM のアップグレード

# Upgrade the SPWFM host
Invoke-WFHostUpgrade -Verbose

または、ワークフロー マネージャー構成ウィザードを実行し、[ファームワークフロー マネージャーアップグレード] を選択することもできます。

状態の確認

アップグレード後、サービスを開始するために 1 分または 2 分を与えます。次に、次の PowerShell コマンドを実行して状態をチェックします。

Get-WFFarm; Get-WFFarmStatus; Get-SBFarm; Get-SBFarmStatus

すべてのサービスが実行されていることと、エラーがないことを示すはずです。

他のサーバーをワークフロー ファームに参加させる

この時点で、すべてが正常に表示される場合は、SPWFM ファームにサーバーが増えた場合は、ワークフロー マネージャー構成ウィザードを実行し、既存のファームに参加することを選択して、それらをファームに追加し直す必要があります。

上記のスクリプトで "証明書生成キー" が設定されました。そのため、ファームに参加するときにこれを使用する必要があります。

SharePoint 側で検証する

SharePoint サーバー上の SPWFM SSL 証明書を信頼する

この手順の一環として新しい SPWFM 証明書が作成されたため、SharePoint サーバーが信頼できるように、次の手順を実装する必要があります。

  1. SharePoint サーバーで SPWFM SSL 証明書を信頼 する」セクションの手順を実行して、すべての SharePoint サーバー上の SPWFM エンドポイント証明書を信頼します。
  2. 任意の SharePoint サーバーで RefreshMetadataFeed タイマー ジョブを実行して 、SPTrustedSecurityTokenIssuer で使用される SPWFM 送信証明書を更新します。
 $tj = Get-SPTimerJob | ? {$_.name -match "RefreshMetadataFeed"} 
 Start-SPTimerJob $tj

SPWFM エンドポイントを検証する

いずれかの SharePoint サーバーで、 SPWFM RunAs アカウントとして、または上記のスクリプトで定義されている AdminGroup のメンバーであるユーザーとしてサインインします。 SPWFM エンドポイントの FQDN (例: https://apps.contoso.local:12290/) を参照します。 次のスクリーンショットに示すように、結果はのようになります。

SPWFM エンドポイントの検証プロセスの結果。

省略可能な手順

SharePoint ファームを登録する

これらの手順を使用してワークフロー (WF) データベースと Service Bus (SB) データベースを新しい SQL サーバーに移動した場合、SharePoint ファームは既に登録されており、この手順を完了する必要 はありません

ただし、次の手順を使用して SB データベースと WF データベースを 新しい SPWFM ファームに移行した場合 (たとえば、SharePoint ファームのアップグレード/移行の一部として)、SharePoint ファームを SPWFM ファームに接続するには、次 Register-SPWorkflowService のコマンドを実行する必要があります。

$Scope = "SharePoint" # Use the Scope Name you were using previously
$site = "https://sp.contoso.local/" # Any site in the SharePoint web application
$wfURI = "https://spwfm.contoso.local:12290" # Get this value by running "Get-WFFarm | select endpoints" on the SPWFM server
Register-SPWorkflowService -SPSite $site -WorkflowHostUri $wfURI -ScopeName $Scope -Force

新しいワークフローを発行する

この手順を使用してアップグレード/移行を行い、この移行の一環として SharePoint Web アプリケーションの URL が変更された場合 (たとえば、 から http://sp2013.contoso.local ) https://spse.contoso.localは、ワークフローの移行/ファームの復元の前に作成されたワークフローは最初は機能しません。 最初に新しいワークフローを発行する必要があります。 詳細については、「 問題 1: サイト URL が変更されました」を参照してください。