Microsoft SharePoint 2010: Konfigurieren von farmübergreifenden Diensten

Sie können SharePoint für eine farmübergreifende Kommunikation konfigurieren. Dabei werden Dienste von anderen Serverfarmen freigegeben und verwendet.

Shannon Bray

An der Art und Weise, wie in SharePoint Dienste bereitgestellt und genutzt werden, wurden von Microsoft zahlreiche Verbesserungen vorgenommen. In SharePoint 2007 waren Dienste über einen so genannten Anbieter für gemeinsame Dienste (Shared Service Provider, SSP) verfügbar. Das war zwar eine deutliche Verbesserung gegenüber SharePoint 2003, brachte aber dennoch einige Probleme mit sich.

Das Hauptproblem mit der Architektur von SharePoint 2007 war, dass die Konfiguration nach dem Prinzip „alles oder nichts“ erfolgte. Webanwendungen waren an einen bestimmten SSP gebunden und konnten keine Dienste einzeln nutzen. Wenn für den SSP beispielsweise der Such- und der Excel-Dienst konfiguriert war, hatte jede SharePoint-Webanwendung, die die Unternehmenssuche verwendete, auch Zugriff auf Excel-Dienste.

Ein weiterer Nachteil war, dass die SSP-Architektur nicht erweiterbar war. Es war nicht möglich, mit derselben SSP-Infrastruktur eigene Dienste zu erstellen. Der letzte und wichtigste Punkt: das Konfigurieren von Diensten über Farmen hinweg war in SharePoint 2007 sehr schwierig. Mit der neuen Dienstarchitektur von SharePoint 2010 lassen sich all diese Probleme lösen.

Verstehen der Dienstanwendungsarchitektur

Bevor wir näher darauf eingehen, wie die Dienste über SharePoint-Farmen hinweg kommunizieren können, müssen wir die dazu erforderlichen Komponenten und Dienste verstehen. Es folgen einige wichtige Merkmale der Dienstanwendungsarchitektur:

  • Sie können Dienste nach Belieben auswählen.
  • Die Dienstarchitektur ist erweiterbar.
  • Dienste werden unter SharePoint Foundation unterstützt.
  • Dienste können skaliert werden.
  • Dienste können stabil/redundant sein.
  • Dienste können im Verbund genutzt werden.

Im Gegensatz zu SharePoint 2007 können Sie nun entscheiden, von welchen SharePoint-Webanwendungen Ihre Dienste genutzt werden. Sie sind nicht mehr an den standardmäßig vorgegebenen SSP gebunden. Sie können geeignete Architekturen auswählen.

Die Dienstanwendungsarchitektur ist nun erweiterbar, sodass Sie Ihre eigenen benutzerdefinierten Dienste erstellen können. Durch den Einsatz von angepassten Lösungen, die für verschiedene Websitesammlungen oder sogar SharePoint-Webanwendungen genutzt werden können, sparen Sie viel Zeit, Geld und Ressourcen.

SharePoint 2010 bietet keine mit SharePoint Foundation verfügbaren Standarddienste, aber die entsprechende Infrastruktur, die dies unterstützt. Sie können eigene Dienste erstellen und in SharePoint Foundation verwenden. Die neue Dienstanwendungsarchitektur ermöglicht ein Verteilen der Last auf mehrere Server, damit Sie mit Ihren Entwürfen die entsprechenden Lasten verarbeiten können.

Die Unternehmenssuche gehört zu den Diensten, die am meisten überarbeitet wurden. In SharePoint 2007 stellte der Indexserver eine einzelne Fehlerquelle dar. In SharePoint 2010 können Ihre Suchdienste mehrere Server durchsuchen. Schlägt einer davon fehl, kann ihr System durch die Redundanz weiterhin ausgeführt werden.

Sie können Dienste nun über Farmgrenzen hinweg nutzen. Auf diese Weise können Sie die Dienste, die Sie freigeben möchten, in einer Farm konsolidieren und trotzdem Dienste für Consumer bereitstellen.

Verstehen grundlegender Begriffe

Der Begriff „Dienstanwendung“ wurde in der Vergangenheit inflationär verwendet. Vielen Benutzern fehlt das Verständnis, wo sich die Komponenten befinden und wie sie funktionieren. Damit Sie die Hintergründe verstehen können, sollten Sie folgende Begriffe kennen:

Dienst: Die Anwendungsbinärdateien, die auf den Servern in der Farm bereitgestellt sind

Instanz des Dienstcomputers Die tatsächliche Instanz des auf dem Server ausgeführten Diensts

Dienstanwendung: Eine logische Komponente, in der Dienstkonfiguration und -verwaltung enthalten sind, wie Informationen für die Dienstanwendung und Zeichenfolge für die Datenbankverbindung

Proxy der Dienstanwendung: Die Schnittstelle, über die Dienstconsumer mit dem Dienst und dem Lastenausgleichsmodul kommunizieren, sodass sie wissen, mit welchem Server eine Verbindung hergestellt wird und wie der tatsächliche Dienst genutzt werden soll. Es ist wichtig zu wissen, dass es sich bei dem Proxy der Dienstanwendung nicht um einen Webdienst oder WCF-Proxy handelt (Windows Communication Foundation).

Dienstconsumer: Anwendung oder Dienst, von dem der Dienst genutzt wird

Dienstproxygruppen: Gruppen von Dienstanwendungen, die mit bestimmten Webanwendungen verknüpft sind

Sie können Dienste auf verschiedene Art bereitstellen, beispielsweise über den Konfigurations-Assistenten, die Zentralverwaltung oder Windows PowerShell. Über den Konfigurations-Assistenten werden viele der Dienste mit ihren Standardwerten konfiguriert. Dies ist für Produktionsumgebungen nicht empfehlenswert. Viele Dienste sollten manuell konfiguriert werden, um Fehler zu vermeiden.

Mit der Zentralverwaltung können Sie mehrere Dienste konfigurieren, indem Sie die damit verknüpften Felder auffüllen. Die Kontrollmöglichkeiten sind etwas besser als mit dem Assistenten für die Farmkonfiguration, aber die meisten SharePoint-Experten werden Windows PowerShell bevorzugen.

Windows PowerShell ermöglicht die beste Kontrolle der Umgebung, aber das Einrichten einiger Dienstanwendungen kann etwas komplizierter sein. Ausführliche Informationen über das Bereitstellen der verschiedenen SharePoint-Dienste mithilfe von Windows PowerShell erhalten Sie unter „Automating SharePoint 2010 with Windows PowerShell 2.0“ (Wiley, 2011), von Shannon Bray und Gary Lapointe.

Beim Konfigurieren der SharePoint-Farmen werden zwei Dienste automatisch erstellt. Dabei handelt es sich um die wichtigsten Komponenten für die Funktionsweise der Dienste. Sie umfassen:

  • Anwendungserkennung und Lastenausgleichsdienst
  • Sicherheitstokendienst

Dienstanwendungen müssen einen Webendpunkt verfügbar machen, da alle Verbindungen über HTTPS erfolgen. Darüber hinaus ist es wichtig zu wissen, dass Dienstanwendungen über die TCP-Ports 32843 und 32844 kommunizieren. Benutzerdefinierte Dienstanwendungen verwenden in der Regel Port 32845.

Funktionsweise eines Dienstverbunds

Nachdem wir darauf eingegangen sind, wie Dienste verbunden sind, wollen wir uns nun anschauen, welche Dienste einen Verbund unterstützen:

  • Suche
  • Benutzerprofile
  • Verwaltete Metadaten
  • Business Connectivity Services (BCS)
  • Secure Store
  • Web Analytics

Darüber hinaus werden zahlreiche weitere Dienste über ein WAN unterstützt. Dazu zählen „Suche“, „Verwaltete Metadata“, „Business Data Connectivity“, „Benutzerprofile“ und „Secure Store“. Alle werden unterstützt, aber empfohlen werden lediglich die Dienste „Suche“ und „Verwaltete Metadaten“.

In einer WAN-Umgebung erhöht sich beim Suchdienst die Latenz beim Crawlen. Bei BCS sind die erstmaligen Zugriffe langsam, bevor die Daten zwischengespeichert werden. Für den Benutzerprofildienst wird ein Replikationsmodul verwendet, daher ist dessen Verwendung in einem WAN nicht empfehlenswert. Bei Anwendungen, die den Secure Store-Dienst verwenden, tritt Latenz auf.

Beispielfarmen

Für dieses Beispiel werden wir zwei Farmen erstellen. In einer Farm werden die Unternehmensdienste gespeichert, in der anderen die Inhaltswebanwendungen. Beide werden von Grund auf neu erstellt, und die einzelnen Schritte werden erläutert, damit Sie lernen, für jede Umgebung einen Verbund zu erstellen.

Die zwei Farmen werden in derselben Domäne erstellt, können aber problemlos auf andere Domänen ausgeweitet werden. Da wir für diese Beispiele dieselbe Domäne verwenden, können Sie hier vier Server einsetzen: TechED-AD, TechED-SQL, TechEd-Services und TechEd-SP.

Erstellen Sie zunächst die entsprechenden Konten in Active Directory. Dabei handelt es sich um Folgende: spFarm, spServices, spContent, spCrawl, spUPS und spC2WTS. Wenn Sie den Prozess abkürzen möchten, können Sie Konten über Windows PowerShell von einer unserer SharePoint-Farmen hinzufügen (siehe Abbildung 1). Diese Konten werden in der Organisationseinheit „Verwaltete Dienstkonten“ erstellt, wenn Sie also nicht mit Windows Server 2008 R2 arbeiten, müssen Sie den CN-Speicherort in den Skripts in Abbildung 1 ändern.

Abbildung 1: Hinzufügen der SharePoint-Konten zu Active Directory

$domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint Services") $objUser.Put("sAMAccountName","spServices") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint Content") $objUser.Put("sAMAccountName","spContent") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint Search Crawl") $objUser.Put("sAMAccountName","spCrawl") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint User Profile Services Sync") $objUser.Put("sAMAccountName","spUPS") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint C2WTS") $objUser.Put("sAMAccountName","spC2WTS") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SharePoint Farm") $objUser.Put("sAMAccountName","spFarm") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo()

Nachdem wir die Konten eingerichtet haben, konzentrieren wir uns auf die Enterprise Services-Umgebung. Für unser Beispiel konfigurieren die Farm so, dass nur Dienste enthalten sind, die einen Verbund unterstützen und schnell bereitgestellt werden können („Verwaltete Metadaten“, „BCS“ und „Secure Store“). Zum Erstellen der Enterprise Services-Umgebung lassen wir den größten Teil der Arbeit von Windows PowerShell übernehmen. Auf diese Weise wird die Konsistenz gewährleistet, und der Zustand ist bekannt. In Abbildung 2 wird die Farm erstellt. Die Dienste werden wir bald danach bereitstellen.

Das Skript zum Einrichten der Consumerfarm ähnelt dem in Abbildung 3 gezeigten.

Abbildung 2: Erstellen der Unternehmensfarm

Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 # Settings $databaseServer = "TECHED-SQL" $configDatabase = "Enterprise_Farm_Config" $adminContentDB = "Enterprise_Farm_Content_Admin" $passphrase = "pass@word1" $farmAccountName = "TECHED\spfarm" $farmAccount = Get-Credential $farmAccountName $passphrase = (ConvertTo-SecureString $passphrase -AsPlainText -force) #will error, but fix the regkey... psconfig.exe -cmd upgrade Write-Host "Creating Configuration Database and Central Admin Content Database..." New-SPConfigurationDatabase -DatabaseServer $databaseServer -DatabaseName $configDatabase ` -AdministrationContentDatabaseName $adminContentDB ` -Passphrase $passphrase -FarmCredentials $farmAccount $spfarm = Get-SPFarm -ErrorAction SilentlyContinue -ErrorVariable err if ($spfarm -eq $null -or $err) { throw "Unable to verify farm creation." } Write-Host "ACLing SharePoint Resources..." Initialize-SPResourceSecurity Write-Host "Installing Services ..." Install-SPService Write-Host "Installing Features..." Install-SPFeature -AllExistingFeatures Write-Host "Creating Central Administration..." New-SPCentralAdministration -Port 2010 -WindowsAuthProvider NTLM Write-Host "Installing Help..." Install-SPHelpCollection -All Write-Host "Installing Application Content..." Install-SPApplicationContent Write-Host "Enterprise Farm Creation Complete!"

Abbildung3: Erstellen der Consumerfarm

Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 # Settings $databaseServer = "TECHED-SQL" $configDatabase = "Consumer_Farm_Config" $adminContentDB = "Consumer_Farm_Content_Admin" $passphrase = "pass@word1" $farmAccountName = "TECHED\spfarm" $farmAccount = Get-Credential $farmAccountName $passphrase = (ConvertTo-SecureString $passphrase -AsPlainText -force) #will error, but fix the regkey... psconfig.exe -cmd upgrade Write-Host "Creating Configuration Database and Central Admin Content Database..." New-SPConfigurationDatabase -DatabaseServer $databaseServer -DatabaseName $configDatabase ` -AdministrationContentDatabaseName $adminContentDB ` -Passphrase $passphrase -FarmCredentials $farmAccount $spfarm = Get-SPFarm -ErrorAction SilentlyContinue -ErrorVariable err if ($spfarm -eq $null -or $err) { throw "Unable to verify farm creation." } Write-Host "ACLing SharePoint Resources..." Initialize-SPResourceSecurity Write-Host "Installing Services ..." Install-SPService Write-Host "Installing Features..." Install-SPFeature -AllExistingFeatures Write-Host "Creating Central Administration..." New-SPCentralAdministration -Port 2010 -WindowsAuthProvider NTLM Write-Host "Installing Help..." Install-SPHelpCollection -All Write-Host "Installing Application Content..." Install-SPApplicationContent Write-Host "Consumer Farm Creation Complete!"

Bereitstellen einer Enterprise Services-Umgebung

Sie können nun eine Reihe von Diensten erstellen, die Sie für eine andere Farm freigeben möchten. Wie bereits erwähnt, können Sie einen Verbund für sechs Dienste erstellen. Wir sollten nun einige davon erstellen, damit wir eine Grundlage haben, wie in Abbildung 4 gezeigt.

Abbildung 4: Bereitstellen von Enterprise Services

Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 # App Pools $saAppPoolName = "SharePoint Web Services Default" $saAppPoolUserName = "TECHED\spservices" # Service Application and DB names $stateName = "Enterprise Farm State Service" $stateDBName = "Enterprise_Farm_StateService" $usageName = "Enterprise Farm Usage and Health Data Collection Service" $usageDBName = "Enterprise_Farm_Usage" # Create Managed Accounts and Application Pools # Service Apps Write-Host "Please supply the password for the $saAppPoolUserName Account..." $appPoolCred = Get-Credential $saAppPoolUserName $saAppPoolAccount = New-SPManagedAccount -Credential $appPoolCred $saAppPool = New-SPServiceApplicationPool -Name $saAppPoolName -Account $saAppPoolAccount # Create State Service Application and Proxy, and add to default proxy group Write-Host "Creating $stateName Application and Proxy..." $stateDB = New-SPStateServiceDatabase -Name $stateDBName $state = New-SPStateServiceApplication -Name $stateName -Database $stateDB New-SPStateServiceApplicationProxy -Name "$stateName Proxy" -ServiceApplication $state -DefaultProxyGroup # Setup the Usage Service App Write-Host "Creating $usageName Application and Proxy..." $serviceInstance = Get-SPUsageService New-SPUsageApplication -Name $usageName -DatabaseName $usageDBName -UsageService $serviceInstance # app pool $saAppPoolName = "SharePoint Web Services Default" $appPoolUserName = "TECHED\spServices" # Gets app pool or quits Write-Host "Getting Application Pool..." $saAppPool = Get-SPServiceApplicationPool -Identity $saAppPoolName -EA 0 if($saAppPool -eq $null) { Write-Host "Cannot find the Application Pool $appPoolName, please ensure it exists before continuing." Exit -1 } # MMS specifics $mmsInstanceName = "MetadataWebServiceInstance" $mmsName = "Enterprise Farm Managed Metadata Service" $mmsDBName = "Enterprise_Farm_Managed_Metadata" # Sets up Managed Metadata service instance & service app and proxy Write-Host "Creating $mmsName Application & proxy..." $mms = New-SPMetadataServiceApplication -Name $mmsName -ApplicationPool $saAppPoolName -DatabaseName $mmsDBName $proxy = New-SPMetadataServiceApplicationProxy -Name "$mmsName Proxy" -ServiceApplication $mms -DefaultProxyGroup Write-Host "Starting the $mmsInstanceName..." Get-SPServiceInstance | where{$_.GetType().Name -eq $mmsInstanceName} | Start-SPServiceInstance Write-Host "Enterprise MMS Complete!" # BDC specifics $bdcInstanceName = "Business Data Connectivity Service" $bdcName = "Enterprise Farm Business Data Connectivity Service" $bdcDBName = "Enterprise_Farm_BDC" # Sets up Business Data Connectivity Service Application and Proxy and Service Instance Write-Host "Creating $bdcInstanceName Application and Proxy..." $bdc = New-SPBusinessDataCatalogServiceApplication -Name $bdcName -ApplicationPool $saAppPoolName -DatabaseName $bdcDBName Write-Host "Starting the $bdcInstanceName Instance..." Get-SPServiceInstance | where-object {$_.TypeName -eq $bdcInstanceName} | Start-SPServiceInstance Write-Host "Enterprise BDC Complete!" # SSS Specifics $sssInstanceName = "Secure Store Service" $serverName = "TechED-Services" $sssName = "Enterprise Farm Secure Store Service" $sssDBName = "Enterprise_Farm_SecureStore" # Sets up Secure Store Service Application & Proxy and Service Instance Write-Host "Creating $sssName Application & Proxy..." $sss = New-SPSecureStoreServiceApplication -Name $sssName -ApplicationPool $saAppPoolName -DatabaseName $sssDBName -auditingEnabled:$true -auditlogmaxsize 30 -Sharing:$false $proxy = New-SPSecureStoreServiceApplicationProxy -Name "$sssName Proxy" -ServiceApplication $sss -DefaultProxyGroup Write-Host "Starting the $sssInstanceName Instance..." $sssInstance = Get-SPServiceInstance | where-object{$_.TypeName -eq "Secure Store Service" -and $_.Server.Address -eq $serverName} | Start-SPServiceInstance Write-Host "Enterprise SSS Complete!"

Bereitstellen einer Umgebung, in der die Dienste genutzt werden

Der größte Teil der Arbeit für die veröffentlichende Farm wäre geschafft. Jetzt konzentrieren wir uns auf die Farm, die Enterprise Services verwenden wird. Sie können jeden beliebigen Dienst erstellen. Es sollte klar geworden sein, dass Sie Dienste von anderen Farmen nutzen können und die entsprechenden Ressourcen von dieser Farm bereitgestellt werden.

In der Consumerfarm stellen Sie außerdem eine SharePoint-Inhaltswebanwendung bereit, mit der Sie die Verwendung von Enterprise Services veranschaulichen können, wie in Abbildung 5 gezeigt.

Abbildung 5: Bereitstellen von SharePoint-Inhalten

# App Pools $saAppPoolName = "SharePoint Web Services Default" $saAppPoolUserName = "TECHED\spservices" $waAppPoolName = "SharePoint Content" $waAppPoolUserName = "TECHED\spcontent" # Web App details $mainURL = "http://teched-sp" $webAppName = "TechED Consumer" $contentDBName = "Consumer_Farm_Content_Web_Application" # Root Site Collection details $ownerEmail = "administrator@teched.com" $ownerAlias = "TECHED\administrator" # Web app Write-Host "Please supply the password for the $waAppPoolUserName Account..." $appPoolCred = Get-Credential $waAppPoolUserName $waAppPoolAccount = New-SPManagedAccount -Credential $appPoolCred <# Create a new Web App using Claims (Windows (NTLM)) #> $authProvider = New-SPAuthenticationProvider $webApp = New-SPWebApplication -ApplicationPool $waAppPoolName -ApplicationPoolAccount $waAppPoolAccount -Name $webAppName -Port 80 -AuthenticationProvider $authProvider -DatabaseName $contentDBName # Set sensible content db limits Set-SPContentDatabase $contentDBName -MaxSiteCount 50 -WarningSiteCount 30 <# Create Site Collection at root #> New-SPSite -Url $mainURL -owneralias $ownerAlias -ownerEmail $ownerEmail Write-Host "WebApp Complete!"

Konfigurieren der Zertifikate

Die Farmen sind jetzt vollständig. Als Nächstes veröffentlichen wir die Enterprise Services, die wir für den Consumer freigeben möchten. Das kann in verschiedenen Schritten erfolgen:

  • Erstellen von Zertifikaten für die Unternehmensfarm
  • Erstellen von Zertifikaten für die Consumerfarm
  • Austauschen der Zertifikate
  • Importieren der Zertifikate in die Unternehmensfarm
  • Importieren der Zertifikate in die Consumerfarm
  • Erstellen von Zertifikaten für die Unternehmensfarm

Zunächst müssen Sie das Stammzertifikat aus der Unternehmensfarm exportieren. Dazu erstellen Sie einen Pfad zum Exportieren des Zertifikats (siehe Abbildung 6). Nachdem Sie den Pfad bestätigt haben, verwenden Sie das Cmdlet „Get-SPCertificateAuthority“, um das Zertifikat für Ihre Farm zu exportieren.

Abbildung 6: Erstellen eines Pfads für ein Zertifikat

# Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 $path = "C:\Certs" # Test and Create Path If ((test-path $path) -eq $false) { [IO.Directory]::CreateDirectory("$path") } # Export Cert $rootCert = (Get-SPCertificateAuthority).RootCertificate $rootCert.Export("Cert") | Set-Content "C:\Certs\EnterpriseServicesRootCert.cer" -Encoding byte

Erstellen eines Zertifikats für die Consumerfarm

In der Consumerfarm muss nicht nur das Stammzertifikat exportiert werden, sondern auch ein STS-Zertifikat (siehe Abbildung 7). Dazu wird das Cmdlet „Get-SPSecurityTokenServiceConfig“ verwendet.

Zur Vereinfachung erhalten Sie auch die Farm-ID für Ihre Consumerfarm und erstellen eine Textdatei. Fügen Sie die Farm-ID den Veröffentlichungsberechtigungen für die Unternehmensfarm hinzu, damit Sie auf Ihre Dienste zugreifen können.

Abbildung 7: Exportieren des STS-Zertifikats

# Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0 $publisher = "TECHED-Services" $consumer = "TECHED-SP" $path = "C:\Certs" # Test and Create Path If ((test-path $path) -eq $false) { [IO.Directory]::CreateDirectory("$path") } # Run the following to export the necessary certificates on the consumer farm to c:\temp on the server: $rootCert = (Get-SPCertificateAuthority).RootCertificate $rootCert.Export("Cert") | Set-Content "C:\Certs\IntranetRootCert.cer" -Encoding byte $stsCert = (Get-SPSecurityTokenServiceConfig).LocalLoginProvider.SigningCertificate $stsCert.Export("Cert") | Set-Content "C:\Certs\IntranetSTSCert.cer" -Encoding byte #On the consumer farm, run the following command to get the id of the consumer farm: $farmID = (Get-SPFarm).Id New-Item C:\Certs\IntranetConsumerFarmID.txt -type file -force -value "$farmID" #On the consumer farm, run the following command to copy the IntranetConsumerFarmID.txt to the publisher farm Copy-Item \\$consumer\c$\Certs\IntranetConsumerFarmID.txt \\$publisher\c$\Certs

Austauschen der Zertifikate

Jetzt verfügen Sie über die erforderlichen Zertifikate aus beiden Farmen. Rufen Sie mit dem Cmdlet „Copy-Item“ das Zertifikat „EnterpriseServicesRootCert.cer“ ab, und kopieren Sie es in die Consumerfarm. Kopieren Sie anschließend die Zertifikate „IntranetRootCert“ und „IntranetSTSCert“ in die Unternehmensfarm, wie hier gezeigt:

$publisher = "TECHED-Services" $cconsumer = "TECHED-SP" # Copy to Consumer Copy-Item \\$publisher\c$\Certs\EnterpriseServicesRootCert.cer \\$cconsumer\c$\Certs Copy-Item \\$cconsumer\c$\Certs\IntranetRootCert.cer \\$publisher\c$\Certs Copy-Item \\$cconsumer\c$\Certs\IntranetSTSCert.cer \\$publisher\c$\Certs

Importieren des Herausgeberzertifikats

Nun importieren Sie die zwei Intranetzertifikate in die Unternehmensfarm und richten eine Vertrauensstellung ein. Zum Einrichten von Berechtigungen müssen Sie die Farm-ID verwenden. Verwenden Sie für ein reibungsloses Vorgehen die vor einigen Schritten erstellte Textdatei, und führen Sie für die Herausgeberfarm die in Abbildung 8 gezeigten Befehle aus, um die Vertrauensstellung bei der Consumerfarm einzurichten.

Abbildung 8: Einrichten einer Vertrauensstellung bei der Consumerfarm

$trustCert = Get-PfxCertificate "C:\certs\IntranetRootCert.cer" New-SPTrustedRootAuthority Intranet -Certificate $trustCert $stsCert = Get-PfxCertificate "c:\certs\IntranetSTSCert.cer" New-SPTrustedServiceTokenIssuer Intranet -Certificate $stsCert $farmID = Get-Content C:\Certs\IntranetConsumerFarmID.txt $security = Get-SPTopologyServiceApplication | Get-SPServiceApplicationSecurity $claimProvider = (Get-SPClaimProvider System).ClaimProvider $principal = New-SPClaimsPrincipal -ClaimType "https://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue $farmID Grant-SPObjectSecurity -Identity $security -Principal $principal -Rights "Full Control" Get-SPTopologyServiceApplication | Set-SPServiceApplicationSecurity -ObjectSecurity $security

Importieren des Consumerzertifikats

Was Zertifikate angeht, ist ein letzter Schritt auszuführen. Sie müssen in der Consumerfarm folgendes Skript ausführen, um „EnterpriseServicesRootCert“ zu importieren, und diese Befehle für die Consumerfarm ausführen, um die Vertrauensstellung bei der Herausgeberfarm einzurichten:

$trustCert = Get-PfxCertificate "C:\Certs\EnterpriseServicesRootCert.cer" New-SPTrustedRootAuthority EnterpriseServices -Certificate $trustCert

Veröffentlichen der Dienste

Wir haben die beiden Farmen erstellt, das Stammzertifikat aus der Unternehmensfarm in die Consumerfarm importiert, die Stamm- und STS-Zertifikate aus der Consumerfarm in die Unternehmensfarm importiert und mithilfe der Consumerfarm-ID eine Vertrauensstellung zwischen den Farmen eingerichtet. Jetzt sehen wir uns Central Administration an und veröffentlichen die Dienste.

Im nächsten Schritt prüfen wir die Dienstanwendungen. Wählen Sie einen der sechs Dienste zum Freigeben aus, markieren Sie ihn, und klicken Sie dann im Menüband auf die Schaltfläche zum Veröffentlichen. Es wird ein Dialogfeld angezeigt, in dem Sie die Art der Dienstbereitstellung auswählen können. Ändern Sie den Verbindungstyp in „HTTPS“, und aktivieren Sie das Kontrollkästchen „Diese Dienstanwendung für andere Farmen veröffentlichen“. Notieren Sie sich die URL des Herausgebers. Für diese gibt es zahlreiche Verwendungsmöglichkeiten.

Nutzen der Dienste

In SharePoint sind eine Reihe von Pfaden zu Consumerdiensten verfügbar. Aktivieren Sie als Erstes die Schaltfläche „Verbinden“ im Menüband. Wenn Sie im Menüband auf „Verbinden“ klicken, wird das Dialogfeld „Verbindung mit einer Remotedienstanwendung herstellen“ angezeigt. Kopieren Sie die URL aus dem vorherigen Abschnitt, und fügen Sie sie in das Textfeld ein. Nach dem Klicken auf „OK“ wird ein bestimmter Dienst angezeigt. Dies ist abhängig von dem speziell identifizierten Dienst. Sie können auch alle veröffentlichten Dienste anzeigen, indem Sie einfach die HTTPS-Adresse verwenden.

Damit lässt sich bestätigen, dass die Zertifikate richtig eingerichtet wurden. Schließlich geben Sie noch den Typ der Verbindung an, die eingerichtet werden soll. Das ist hilfreich, wenn der Herausgeber verschiedene Dienstanwendungen desselben Typs freigibt. Bedenken Sie, dass Sie nur den HTTPS-Pfad verwenden. Zum Schluss werden lediglich Dienstanwendungen angezeigt, die den ursprünglich angegebenen Typ aufweisen.

Problembehandlung bei der Verbunddienstlösung

Bei Ihren Verbunddiensten kann es zu verschiedenen Problemen kommen. So können beispielsweise Hindernisse in Bezug auf Netzwerke, Firewalls und die Infrastruktur auftreten. Befinden sich die Serverfarmen in verschiedenen Domänen, ist es für die Dienstanwendung „Benutzerprofil“ erforderlich, dass zwischen den Domänen eine Vertrauensstellung besteht.

Damit die Verwaltungsfeatures der Dienstanwendungen „Business Data Connectivity“ und „Secure Store“ von der nutzenden Farm aus funktionieren, muss zwischen der Domäne der veröffentlichenden Farm und der Domäne der nutzenden Farm eine Vertrauensstellung bestehen. Andere farmübergreifende Dienstanwendungen funktionieren auch ohne eine Vertrauensstellung zwischen Domänen. Außer den Domänenvertrauensstellungen müssen folgende Punkte überprüft werden:

  • Sicherstellen der Domänenvertrauensstellung
  • Sicherstellen, dass der Consumer über Berechtigungen für den Topologiedienst verfügt
  • Prüfen der ACL
  • FQDN
  • Zertifikate

Versuchen Sie nun als weiteres Beispiel, über die Consumerfarm auf einen der Dienste zuzugreifen. Es wird der Fehler angezeigt, dass ein Anzeigen dieser Webseite von der Website abgelehnt wurde. Diesen Fehler können Sie beheben, indem Sie Ihre Unternehmensfarm besuchen und der Consumerfarm das Verwenden dieses bestimmten Diensts erlauben.

Zum Konfigurieren der Berechtigungen für die Consumerfarm markieren Sie die Dienstanwendung, die Sie konfigurieren möchten, und klicken Sie auf „Berechtigungen“. Daraufhin erhalten Sie die Farm-ID der Consumerfarm. Wir fassen noch einmal zusammen: Sie haben eine Textdatei erstellt, in der die ID der Consumerfarm enthalten war. Diese haben Sie in die veröffentlichende Farm übertragen. Die Datei ist unter „c:\certs“ gespeichert. Fügen Sie die Farm-ID in das Textfeld ein, und klicken Sie auf „Hinzufügen“. Prüfen Sie dann die entsprechenden Berechtigungen. Nun können Sie mit dem Testen des Diensts beginnen.

Testen der Verbunddienstlösung

Von der Consumerfarm aus sollten Sie mit den Diensten kommunizieren können. Für diese Testumgebung verwenden Sie vier Hyper-V-Abbilder. Zwei werden für die Hostingumgebung und zwei für die Consumingumgebung benötigt. Sie können die Anzahl der Server ganz einfach erweitern, aber wegen der oft in Testumgebungen geltenden Hardwareeinschränkungen ist es am einfachsten, einen Server für Active Directory zu verwenden und die SQL Server und SharePoint 2010-Rollen auf dem anderen Server freizugeben.

Es ist zwar nicht unbedingt nötig, die einzelnen Schritte ganz genau zu befolgen, aber es empfiehlt sich, um ein konsistentes Ergebnis zu gewährleisten. Die Netzwerkkonfiguration wird in diesem Dokument nicht behandelt, aber Sie finden sie in meinem Blog.

Die einzelnen Server wurden mit folgenden Einstellungen konfiguriert:

Servername: TechED-AD, IP-Adresse: 192.168.110.1

Domäne: TechED.local, Gesamtstrukturfunktionsebene: Windows Server 2008 R2

Administratorkennwort: pass@word1

 

Servername: TechED-SQL, IP-Adresse: 192.168.110.2

Domäne:  TechED.local, Gesamtstrukturfunktionsebene: Windows Server 2008 R2

Administratorkennwort: pass@word1

 

Servername: TechED-Series, IP-Adresse: 192.168.110.11

Domäne: TechED.local, Gesamtstrukturfunktionsebene: Windows Server 2008 R2

Administratorkennwort: pass@word1

 

Servername: TechED-SP, IP-Adresse: 192.168.110.12

Domäne: TechED.local, Gesamtstrukturfunktionsebene: Windows Server 2008 R2

Administratorkennwort: pass@word1

Nachdem Sie die vier Computer eingerichtet haben, erstellen Sie eine neue Domänengesamtstruktur auf dem Domänencontroller (DC). Die Domäne in diesem Beispiel ist „TechED.local“. Verwenden Sie das Dienstprogramm „DCPromo“, um die Server zu DCs heraufzustufen. Verwenden Sie die vorhin notierten Einstellungen, um die entsprechenden IP-Adressen den Netzwerkkarten zuzuweisen, und benennen Sie die Computer entsprechend um.

Nachdem Sie die DCs eingerichtet und deren IP-Adressen konfiguriert haben, können Sie die Server verknüpfen, auf denen SQL Server und SharePoint 2010 gehostet werden. Aktivieren Sie die Windows PowerShell Integrated Scripting Environment (ISE) auf jedem der Server, die SQL Server und SharePoint 2010 hosten. Das vereinfacht die Verwaltung von Windows PowerShell erheblich.

Installieren Sie dann SQL Server 2008 R2 auf dem TechED-SQL-Server (siehe Abbildung 9). Auf dem Hostcomputer sollte die richtige ISO-Datei heruntergeladen worden sein, damit Sie diese an den virtuellen Computer anhängen können (über „Medien | DVD-Laufwerk | Datenträger einlegen“).

Abbildung 9 Installieren von SQL Server

# Set Exec Policy Set-ExecutionPolicy -executionPolicy Unrestricted # Add SQL Service Account to AD $domainName = $env:USERDOMAIN $LDAP = "LDAP://CN=Managed Service Accounts,DC=$domainName, DC=local" $objCN = [ADSI]$LDAP $objUser = $objCN.Create("user","CN=SQL Service") $objUser.Put("sAMAccountName","sqlService") $objUser.Setinfo() $objUser.psbase.invokeset("AccountDisabled", "False") $objUser.SetPassword("pass@word1") $objUser.setinfo() # Install SQL Server with the following settings # Disable Firewall # # SQL Server Feature Installation # Check … # Database Engine Services, SQL Server Replication, Full-Text Search # Business Intelligence Development Studio # Management Tools - Complete # Microsoft Sync Framework # ----------------------------- # Default Instance # Use account above for all services # Select Windows Authentication Mode and click Add Current User # Complete Wizard

Nachdem Sie TechED-SQL installiert haben, installieren Sie nur die Voraussetzungen und Binärdateien für SharePoint. Führen Sie den Assistenten nicht aus. Bevor Sie weitermachen, sollten Sie unbedingt einen Snapshot aller vier Computer erstellen. Sicher ist sicher.

Shannon Bray

Shannon Bray ist ein Experte für SharePoint und zertifizierter Microsoft-Trainer. Er ist derzeit bei Planet Technologies als technischer Architekt angestellt und arbeitet exklusiv mit Microsoft SharePoint. Zu seinen Spezialgebieten zählen Architekturdesign und Lösungsentwicklung mit Microsoft-Technologien. Er ist Vorsitzender der Colorado SharePoint User Group und hat Themen zu SharePoint auf den Konferenzen Microsoft TechReady und TechEd präsentiert. Herr Bray hat verschiedene Videoschulungsreihen verfasst und arbeitet zurzeit als Koautor an „Automating Microsoft SharePoint 2010 Administration with Windows PowerShell 2.0“. (Wiley, 2011)

Verwandter Inhalt