Microsoft SharePoint 2010: 配置跨场服务

您可以配置 SharePoint 跨场边界通信,同时共享和使用来自其他服务器场的服务。

Shannon Bray

Microsoft 已经对 SharePoint 提供和使用服务的方式进行了很多改进。 在 SharePoint 2007 中,您可以使用共享服务提供程序 (SSP) 中为您提供的服务。 尽管 SSP 对比 SharePoint 2003 中的相关功能有了很大改进,但仍存在一些问题。

SharePoint 2007 体系结构的主要问题是,它是一种全有或全无型配置。 Web 应用程序依赖于特定的 SSP 且无法有选择地使用服务。 例如,如果 SSP 同时配置了搜索服务和 Excel 服务,则任何使用企业级搜索的 SharePoint Web 应用程序还必须访问 Excel Services。

此外,SSP 体系结构还不可扩展。 您无法使用同一 SSP 基础结构创建自己的服务。 最后,也是最重要的是,在 SharePoint 2007 中跨场配置服务很困难。SharePoint 2010 中的新服务体系结构则解决了所有这些问题。

了解服务应用程序体系结构

在深入了解如何使服务跨 SharePoint 场边界进行通信之前,了解可用来实现此目标的组件和服务很重要。 以下是服务应用程序体系结构的一些主要特征:

  • 您可以按需使用服务
  • 服务体系结构可以扩展
  • SharePoint Foundation 支持服务
  • 您可以横向扩展服务
  • 服务可以实现弹性/冗余
  • 您可以联合服务

与 SharePoint 2007 中的服务不同,现在您可以决定哪些 SharePoint Web 应用程序使用您的服务。 您将不再受限于嵌入式的 SSP, 而是可以选择适当的体系结构。

服务应用程序体系结构现在是可扩展的,这意味着您可以构建自己的自定义服务。 这可以节省大量的时间、资金和资源,因为您可以部署可跨网站集甚或 SharePoint Web 应用程序运行的自定义解决方案。

SharePoint 2010 没有通过 SharePoint Foundation 提供任何现成的服务,但提供基础结构以支持这些服务。 您可以构建自己的服务并将其用于 SharePoint Foundation 中。 新的服务应用程序体系结构使您能够将负载分布到多台服务器中,从而允许您的设计处理相应的负载。

改进最多的一项服务是企业级搜索。 在 SharePoint 2007 中,索引服务器是一个单一故障点。 在 SharePoint 2010 中,您可以使您的搜索爬网服务跨越多台服务器。 如果某台服务器出现故障,您还拥有冗余且您的系统将按预期继续运行。

现在您还可以跨场边界共享服务。 这允许您将要共享的服务整合到一个服务器场中,同时仍为许多用户提供服务。

了解关键概念

“服务应用程序”这一术语被过度使用。 这使人难以了解组件所在的位置及其运作方式。 若要真正了解后台发生的情况,了解以下这些术语很重要:

服务: 部署到场中服务器的应用程序二进制文件。

服务计算机实例: 服务器上运行的服务的具体实例。

服务应用程序: 包含服务应用程序信息和数据库连接字符串等服务配置和管理的逻辑组件。

服务应用程序代理: 服务使用者用于与服务和负载平衡器进行通信的接口,目的是让使用者知道要与哪台服务器联系以及如何使用实际服务。 值得注意的是,服务应用程序代理不是 Web 服务或 Windows Communication Foundation (WCF) 代理。

服务使用者: 任何使用服务的应用程序或服务。

服务代理组: 与特定 Web 应用程序相关联的一组服务应用程序。

您可以通过多种方式部署服务,包括配置向导、管理中心或 Windows PowerShell。 配置向导将使用许多服务的默认值配置这些服务。 您不应将其用于生产环境。 有许多服务应手动配置以确保成功。

在管理中心中,您可以通过填充与一些服务相关联的字段来配置这些服务。 尽管与服务器场配置向导相比,这种方式为您提供更多控制权,但多数 SharePoint 专业人员都会选择使用 Windows PowerShell。

Windows PowerShell 允许您对环境进行最多控制,但在设置许多服务应用程序时可能很棘手。 若要详细了解如何使用 Windows PowerShell 配置各种 SharePoint Services,请参阅 Shannon Bray 和 Gary Lapointe 撰写的“使用 Windows PowerShell 2.0 自动化 SharePoint 2010”(Wiley, 2011)。

当配置您的 SharePoint 场时,将自动创建两项服务。 这些是有关服务如何工作的关键要素。 这些服务包括:

  • Application Discovery and Load Balancer Service 应用程序
  • 安全令牌服务 (STS) 应用程序

服务应用程序必须公开 Web 端点,因为它们的所有通信都通过 HTTPS 进行。 另外要注意的是,服务应用程序通过 TCP 端口 32843 和 32844 进行通信。自定义服务应用程序通常使用端口 32845。

了解联合服务如何工作

既然您已经很好地理解了服务的联合方式,那么让我们来看一看支持联合的服务:

  • 搜索
  • 用户配置文件
  • 托管元数据
  • Business Connectivity Services (BCS)
  • 安全存储
  • Web Analytics

WAN 中还支持许多其他服务。 这些服务包括搜索、托管元数据、业务数据连接、用户配置文件和安全存储。 虽然它们均受支持,但仅建议使用搜索和托管元数据。

在 WAN 环境中,进行爬网时搜索的延迟会有所增加。 在缓存数据之前,BCS 的首次命中数将有所降低。 用户配置文件服务具有用户配置文件复制引擎,因此不建议在 WAN 中使用。 当应用程序使用安全存储时,它会引发延迟。

服务器场示例

在此示例中,我们将创建两个服务器场。 一个将托管企业服务;另一个将托管内容 Web 应用程序。 我们将从头创建这两个服务器场并概述每个步骤,以便您能够了解如何在任意环境中联合服务。

这两个服务器场将位于同一域中,但也可以跨域轻松构建它们。 因为我们将在这些示例中使用同一域,所以您可以使用四台服务器构建演示: TechED-AD、TechED-SQL、TechEd-Services 和 TechEd-SP。

首先在 Active Directory 中创建适当的帐户。 帐户如下: spFarm、spServices、spContent、spCrawl、spUPS 和 spC2WTS。 若要加快此过程,您可以使用 Windows PowerShell 在我们的某个 SharePoint 场中添加帐户(有关详细信息,请参见图 1)。 值得注意的是,我们将在托管服务帐户组织单位 (OU) 中创建这些帐户,因此,如果您尚未开始使用 Windows Server 2008 R2,则需要更改图 1 的脚本中的 CN 位置。

图 1 将 SharePoint 帐户添加到 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()

现在我们已经设置了帐户,接下来,我们将重点了解企业服务环境。 为了通过此示例进行说明,我们将配置服务器场以便仅包含支持联合且可以快速设置的服务(托管元数据、BCS 和安全存储)。 为创建企业服务环境,我们将依赖 Windows PowerShell 来帮助执行繁重的任务。 这点很重要,因为它可确保一致性且能使您了解相关信息。 图 2 将构建服务器场。 稍后我们将设置服务。

设置使用者场的脚本与图 3 中所示的脚本类似。

图 2 构建企业场。

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!"

图3 构建使用者场。

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!"

设置企业服务环境

现在您可以创建可与其他服务器场共享的多项服务。 如前所述,您可以联合六项服务。 在此构建其中一对以便具有可构建的服务,如图 4 所示。

图 4 设置企业服务。

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!"

设置使用环境

发布场的所有繁重任务均已完成。 现在我们来重点了解将使用企业服务的服务器场。 在此您可以创建任何服务。 要了解的最重要一点是,您可以从其他服务器场中使用服务并依赖该服务器场提供这些资源。

在使用者场中,您还将设置可用于演示企业服务的 SharePoint 内容 Web 应用程序,如图 5 所示。

图 5 设置 SharePoint 内容。

# 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!"

配置证书

现在服务器场已完成。 接下来,我们将发布要与使用者共享的企业服务。 可通过多个步骤完成此操作:

  • 在企业场中创建证书
  • 在使用者场中创建证书
  • 交换证书
  • 在企业场中导入证书
  • 在使用者场中导入证书
  • 在企业场中创建证书

首先,您需要从企业场中导出根证书。 为此,请创建一条路径来导出证书(参见图 6)。 确认该路径后,使用 Get-SPCertificateAuthority cmdlet 导出用于您的服务器场的证书。

图 6 为证书创建路径。

# 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

在使用者场中创建证书

在使用者场中,不但需要导出根证书,而且还要导出 STS 证书(参见图 7)。 后者通过使用 Get-SPSecurityTokenServiceConfig cmdlet 来导出。

为简化此过程,您还要获取您的使用者场的场 ID 并创建文本文件。 将服务器场 ID 添加到企业场中的发布权限,以便您可以访问您的服务。

图 7 导出 STS 证书。

# 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

交换证书

现有您已拥有两个服务器场中所需的证书。 通过 Copy-Item cmdlet 获取 EnterpriseServicesRootCert.cer 并将其复制到使用者场,然后将 IntranetRootCert 和 IntranetSTSCert 证书复制到企业场,如下所示:

$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

发布者证书导入

现在您要在企业场中导入两个 Intranet 证书并建立信任。 您必须使用服务器场 ID 来设置权限。 使用您在几个步骤之前创建的文本文件以使过程将无缝进行,并在发布者场中运行 8 中所示的命令以建立与使用者场的信任关系。

图 8 建立与使用者场的信任关系。

$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

使用者证书导入

最后一步与证书有关。 在使用者场中,您需要执行以下脚本来导入 EnterpriseServicesRootCert,并在使用者场中运行这些命令以建立与发布者场的信任关系:

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

发布服务

我们已创建了这两个服务器场,在使用者场中导入了企业场的根证书,将根证书和 STS 证书从使用者场导入企业场,并使用使用者服务器场 ID 在两个服务器场之间建立了信任关系。 现在我们来了解管理中心并发布服务。

下一步是查看服务应用程序。 找出您要共享的六项服务中的一项,将其突出显示,然后单击功能区中的“发布”按钮。 您将看到一个对话框,允许您选择要提供服务的方式。 将“连接类型”更改为 HTTPS,并选中“向其他场发布此服务应用程序”。 记下发布者 URL。 可以通过多种方式使用它。

使用服务

SharePoint 为您提供了使用服务的两个不同途径。 首先,突出显示功能区中的“连接”按钮。 单击功能区中的“连接”按钮时,您将看到“连接到远程服务应用程序”对话框。 从上一节获取完整的 URL 并将其粘贴到文本框中。 单击“确定”,您将看到特定的服务。 这取决于具体指定的服务。 只需使用 HTTPS 地址,即可看到所有发布的服务。

这将帮助确认您的证书是否正确设置。 最后,指定您要建立的连接类型。 如果发布者将共享一些相同类型的服务应用程序,这会很有用。 值得注意的是,您只使用了 HTTPS 路径。 最终结果是您只会看到最初指定类型的服务应用程序。

排除联合服务解决方案的故障

许多因素都可能影响您的联合服务。 网络、防火墙和基础结构障碍是一些要考虑的因素。 如果服务器场位于不同域中,则用户配置文件服务应用程序需要两种域才能信任彼此。

为使 Business Data Connectivity Service 应用程序和 Secure Store Service 应用程序管理功能在使用场中工作,发布场的域必须信任使用场的域。 其他跨场服务应用程序无需域间的信任关系即可工作。 除检查域信任之外,您还需要验证以下内容:

  • 确保域信任
  • 确保使用者拥有访问拓扑服务的权限
  • 检查 ACL
  • FQDN
  • 证书

作为另一实例,请尝试从使用者场中访问某项服务。 请注意错误为“网站拒绝显示此网页”。您可以通过访问您的企业场并允许使用者场使用该特定服务来更正此问题。

若要配置使用者场权限,请突出显示您要配置的服务应用程序并单击“权限”。 您将获取您的使用者场的服务器场 ID。 如果您还记得,您已创建具有使用者场 ID 的文本文件。 您已将其传输到发布场。 在 c:\certs 下查找此文件。 将服务器场 ID 粘贴到文本框中并单击“添加”。 然后检查适当的权限。 此时便可以对您的服务进行测试了。

测试联合服务解决方案

在使用者场中,您应该能与服务进行交互。 在此实验室环境中,您将使用四个 Hyper-V 映像。 其中两个映像将用于托管环境,另外两个将用于使用环境。 您可以轻松增加服务器的数量,但由于演示环境中的硬件限制,为 Active Directory 使用一台服务器并在其他服务器上共享 SQL Server 和 SharePoint 2010 角色最为方便。

尽管并不要求完全遵循上述步骤,但是建议确保一致的结果。 网络配置不在本文的讨论范围内,但是您可以在我的博客中找到相关内容。

每台服务器都配置了以下设置:

服务器名称: TechED-AD IP 地址 192.168.110.1

域: TechED.local 林功能级别 Windows Server 2008 R2

管理密码: pass@word1

 

服务器名称: TechED-SQL IP 地址 192.168.110.2

域:  TechED.local 林功能级别 Windows Server 2008 R2

管理密码: pass@word1

 

服务器名称: TechED-Serives IP 地址 192.168.110.11

域: TechED.local 林功能级别 Windows Server 2008 R2

管理密码: pass@word1

 

服务器名称: TechED-SP IP 地址 192.168.110.12

域: TechED.local 林功能级别 Windows Server 2008 R2

管理密码: pass@word1

在构建了这四台计算机之后,在域控制器 (DC) 上创建一个新域林。 对于此示例,域将为 TechED.local。 为将服务器提升到 DC,请使用 DCPromo 实用程序。 使用前面所述的设置将适当的 IP 地址分配给网卡并根据需要重命名计算机。

建立 DC 并配置其 IP 地址之后,您即可加入将托管 SQL Server 和 SharePoint 2010 的服务器。在每台托管 SQL Server 和 SharePoint 的服务器上启用 Windows PowerShell 集成脚本环境(即 ISE)功能。 这样更便于管理 Windows PowerShell。

这时在 TechED-SQL 服务器上安装 SQL Server 2008 R2(参见图 9)。 您应该在您的主机中下载适当的 .iso,以便可以使用“媒体”|“DVD 驱动器”|“插入磁盘”将其附加到虚拟机。

图 9 安装 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

安装 TechED-SQL 之后,请仅安装 SharePoint 必备项和二进制文件。 不要运行向导。 并且在执行任何其他操作之前,您应该拍摄所有四台计算机的快照。 安全总比遗憾好。

Shannon Bray

Shannon Bray 是一名 SharePoint 推广人员,且是一位 Microsoft 认证培训师。 目前他是 Planet Technologies 的技术架构师,专门从事 Microsoft SharePoint 相关工作。 Bray 专门负责使用 Microsoft 技术进行体系结构设计和开发解决方案。 他是科罗拉多州 SharePoint 用户组的主席,在 Microsoft TechReady 和 Tech·Ed 大会上介绍过 SharePoint 主题。 Bray 创作了若干 SharePoint 视频培训系列丛书,目前正在与他人合著“使用 Windows PowerShell 2.0 自动化 Microsoft SharePoint 2010 管理”(Wiley, 2011)

相关内容